diff mbox series

libxslt: add ptest support

Message ID 20251022151239.87981-1-pratik.farkase@est.tech
State New
Headers show
Series libxslt: add ptest support | expand

Commit Message

Pratik Farkase Oct. 22, 2025, 3:12 p.m. UTC
Add ptest support for libxslt 1.1.43 including:
- do_compile_ptest and do_install_ptest
- test data installation
- cleanup of buildpath references
- added run-ptest installation

Signed-off-by: Pratik Farkase <pratik.farkase@est.tech>
---
 .../distro/include/ptest-packagelists.inc     |  1 +
 meta/recipes-support/libxslt/files/run-ptest  | 25 +++++++++++
 .../recipes-support/libxslt/libxslt_1.1.43.bb | 45 +++++++++++++++++--
 3 files changed, 67 insertions(+), 4 deletions(-)
 create mode 100755 meta/recipes-support/libxslt/files/run-ptest

Comments

Gyorgy Sarvari Oct. 22, 2025, 6:07 p.m. UTC | #1
On 10/22/25 17:12, Pratik Farkase via lists.openembedded.org wrote:
> Add ptest support for libxslt 1.1.43 including:
> - do_compile_ptest and do_install_ptest
> - test data installation
> - cleanup of buildpath references
> - added run-ptest installation
>
> Signed-off-by: Pratik Farkase <pratik.farkase@est.tech>
> ---
>  .../distro/include/ptest-packagelists.inc     |  1 +
>  meta/recipes-support/libxslt/files/run-ptest  | 25 +++++++++++
>  .../recipes-support/libxslt/libxslt_1.1.43.bb | 45 +++++++++++++++++--
>  3 files changed, 67 insertions(+), 4 deletions(-)
>  create mode 100755 meta/recipes-support/libxslt/files/run-ptest
>
> diff --git a/meta/conf/distro/include/ptest-packagelists.inc b/meta/conf/distro/include/ptest-packagelists.inc
> index 9950e46776..b295e0049f 100644
> --- a/meta/conf/distro/include/ptest-packagelists.inc
> +++ b/meta/conf/distro/include/ptest-packagelists.inc
> @@ -47,6 +47,7 @@ PTESTS_FAST = "\
>      libxml-simple-perl \
>      libxml2 \
>      libxmlb \
> +    libxslt \
>      logrotate \
>      lua \
>      lzo \
> diff --git a/meta/recipes-support/libxslt/files/run-ptest b/meta/recipes-support/libxslt/files/run-ptest
> new file mode 100755
> index 0000000000..a2b28e6a75
> --- /dev/null
> +++ b/meta/recipes-support/libxslt/files/run-ptest
> @@ -0,0 +1,25 @@
> +#!/bin/sh
> +set -eu
> +PT_DIR="$(dirname "$0")"
> +cd "$PT_DIR/tests"
> +
> +echo "=== Running libxslt ptests (verbose) ==="
> +
> +if [ -x .libs/runtest ]; then
> +    echo "Running .libs/runtest --verbose --timing"
> +    ./.libs/runtest --verbose --timing 2>&1 | tee runtest.log
> +elif [ -x ./runtest ]; then
> +    echo "Running runtest --verbose --timing"
> +    ./runtest --verbose --timing 2>&1 | tee runtest.log
> +else
> +    echo "ERROR: runtest not found"
> +    exit 1
> +fi
> +
> +if [ -x .libs/run-threads ]; then
> +    echo "Running .libs/run-threads --verbose"
> +    ./.libs/run-threads --verbose 2>&1 | tee -a runtest.log
> +fi
> +
> +echo "=== Finished libxslt ptests ==="
> +
> diff --git a/meta/recipes-support/libxslt/libxslt_1.1.43.bb b/meta/recipes-support/libxslt/libxslt_1.1.43.bb
> index e08e92085d..0f6ec4ba02 100644
> --- a/meta/recipes-support/libxslt/libxslt_1.1.43.bb
> +++ b/meta/recipes-support/libxslt/libxslt_1.1.43.bb
> @@ -11,10 +11,11 @@ LICENSE = "MIT"
>  LIC_FILES_CHKSUM = "file://Copyright;md5=0cd9a07afbeb24026c9b03aecfeba458"
>  
>  SECTION = "libs"
> -DEPENDS = "libxml2"
> +DEPENDS = "libxml2 libxslt-native"
>  
>  SRC_URI = "https://download.gnome.org/sources/libxslt/1.1/libxslt-${PV}.tar.xz \
> -           file://gnome-libxslt-bug-139-apple-fix.diff"
> +           file://gnome-libxslt-bug-139-apple-fix.diff \
> +	    file://run-ptest"
>  
>  SRC_URI[sha256sum] = "5a3d6b383ca5afc235b171118e90f5ff6aa27e9fea3303065231a6d403f0183a"
>  
> @@ -26,7 +27,43 @@ S = "${WORKDIR}/libxslt-${PV}"
>  
>  BINCONFIG = "${bindir}/xslt-config"
>  
> -inherit autotools pkgconfig binconfig-disabled lib_package multilib_header
> +inherit autotools pkgconfig binconfig-disabled lib_package multilib_header ptest
> +
> +RDEPENDS:${PN}-ptest += "${PN}-bin make libxslt-utils libxml2-utils xmlto coreutils sed grep diffutils bash libxml2-utils perl"
> +
> +do_compile_ptest() {
> +    cp -r ${S}/tests ${B}/
> +    oe_runmake -C ${B}/tests runtest || true
> +    if grep -q "run-threads" ${B}/tests/Makefile; then
> +        oe_runmake -C ${B}/tests run-threads || true
> +    fi
> +}
> +
> +addtask compile_ptest after do_compile before do_install

This addtask is not needed - do_compile_ptest() is implicitly executed
when ptest is enabled.

> +
> +do_install_ptest() {
> +    install -d ${D}${PTEST_PATH}/tests
> +
> +    if [ -d ${B}/tests/.libs ]; then
> +        cp -a ${B}/tests/.libs ${D}${PTEST_PATH}/tests/
> +    fi
> +
> +    for f in runtest run-threads; do
> +        if [ -f ${B}/tests/$f ]; then
> +            install -m 0755 ${B}/tests/$f ${D}${PTEST_PATH}/tests/
> +            sed -i -e "s#${TMPDIR}##g" \
> +                   -e "s#${B}##g" \
> +                   -e "s#${S}##g" \
> +                   ${D}${PTEST_PATH}/tests/$f || true
> +        fi
> +    done
> +
> +    cp -r ${S}/tests/* ${D}${PTEST_PATH}/tests/ || true
> +    find ${D}${PTEST_PATH}/tests -name 'Makefile*' -delete || true
> +    find ${D}${PTEST_PATH}/tests -name '.deps' -type d -exec rm -rf {} + || true
> +}
> +
> +FILES:${PN}-ptest += "${PTEST_PATH}/*"

This line is also unnecessary, it is already included in the ptest.bbclass

>  
>  do_configure:prepend () {
>  	# We don't DEPEND on binutils for ansidecl.h so ensure we don't use the header.
> @@ -38,7 +75,7 @@ do_configure:prepend () {
>  	touch ${S}/doc/xsltproc.1
>  }
>  
> -EXTRA_OECONF = "--without-python --without-debug --without-crypto"
> +EXTRA_OECONF = "--without-python --without-debug --without-crypto --with-plugins"

Is this --with-plugins only needed for the test? If yes, could it be
added conditionally, only in case ptest is enabled? (You can find
examples if you grep for "PTEST_ENABLED" in the meta folder)

>  # older versions of this recipe had ${PN}-utils
>  RPROVIDES:${PN}-bin += "${PN}-utils"
>  RCONFLICTS:${PN}-bin += "${PN}-utils"
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#225200): https://lists.openembedded.org/g/openembedded-core/message/225200
> Mute This Topic: https://lists.openembedded.org/mt/115894161/6084445
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [skandigraun@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Pratik Farkase Oct. 22, 2025, 8:34 p.m. UTC | #2
Hi Gyorgy,

Thanks for the review!

I've updated the patch to make --with-plugins conditional on ptest being enabled,
following your feedback. Verified that both normal and ptest builds work as expected.

v2:
- Enable --with-plugins only when ptest is enabled (per review feedback)

Signed-off-by: Your Name <pratik.farkase@est.tech>

Best Regards,
Pratik
Pratik Farkase Oct. 22, 2025, 8:45 p.m. UTC | #3
Hi,

This is v3 of the libxslt ptest support patch, replacing v2:
https://lists.openembedded.org/g/openembedded-core/message/225210

v3:
- Remove unconditional --with-plugins (leftover from v2)

Thanks,
Your Name

Best Regards,
Pratik
diff mbox series

Patch

diff --git a/meta/conf/distro/include/ptest-packagelists.inc b/meta/conf/distro/include/ptest-packagelists.inc
index 9950e46776..b295e0049f 100644
--- a/meta/conf/distro/include/ptest-packagelists.inc
+++ b/meta/conf/distro/include/ptest-packagelists.inc
@@ -47,6 +47,7 @@  PTESTS_FAST = "\
     libxml-simple-perl \
     libxml2 \
     libxmlb \
+    libxslt \
     logrotate \
     lua \
     lzo \
diff --git a/meta/recipes-support/libxslt/files/run-ptest b/meta/recipes-support/libxslt/files/run-ptest
new file mode 100755
index 0000000000..a2b28e6a75
--- /dev/null
+++ b/meta/recipes-support/libxslt/files/run-ptest
@@ -0,0 +1,25 @@ 
+#!/bin/sh
+set -eu
+PT_DIR="$(dirname "$0")"
+cd "$PT_DIR/tests"
+
+echo "=== Running libxslt ptests (verbose) ==="
+
+if [ -x .libs/runtest ]; then
+    echo "Running .libs/runtest --verbose --timing"
+    ./.libs/runtest --verbose --timing 2>&1 | tee runtest.log
+elif [ -x ./runtest ]; then
+    echo "Running runtest --verbose --timing"
+    ./runtest --verbose --timing 2>&1 | tee runtest.log
+else
+    echo "ERROR: runtest not found"
+    exit 1
+fi
+
+if [ -x .libs/run-threads ]; then
+    echo "Running .libs/run-threads --verbose"
+    ./.libs/run-threads --verbose 2>&1 | tee -a runtest.log
+fi
+
+echo "=== Finished libxslt ptests ==="
+
diff --git a/meta/recipes-support/libxslt/libxslt_1.1.43.bb b/meta/recipes-support/libxslt/libxslt_1.1.43.bb
index e08e92085d..0f6ec4ba02 100644
--- a/meta/recipes-support/libxslt/libxslt_1.1.43.bb
+++ b/meta/recipes-support/libxslt/libxslt_1.1.43.bb
@@ -11,10 +11,11 @@  LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://Copyright;md5=0cd9a07afbeb24026c9b03aecfeba458"
 
 SECTION = "libs"
-DEPENDS = "libxml2"
+DEPENDS = "libxml2 libxslt-native"
 
 SRC_URI = "https://download.gnome.org/sources/libxslt/1.1/libxslt-${PV}.tar.xz \
-           file://gnome-libxslt-bug-139-apple-fix.diff"
+           file://gnome-libxslt-bug-139-apple-fix.diff \
+	    file://run-ptest"
 
 SRC_URI[sha256sum] = "5a3d6b383ca5afc235b171118e90f5ff6aa27e9fea3303065231a6d403f0183a"
 
@@ -26,7 +27,43 @@  S = "${WORKDIR}/libxslt-${PV}"
 
 BINCONFIG = "${bindir}/xslt-config"
 
-inherit autotools pkgconfig binconfig-disabled lib_package multilib_header
+inherit autotools pkgconfig binconfig-disabled lib_package multilib_header ptest
+
+RDEPENDS:${PN}-ptest += "${PN}-bin make libxslt-utils libxml2-utils xmlto coreutils sed grep diffutils bash libxml2-utils perl"
+
+do_compile_ptest() {
+    cp -r ${S}/tests ${B}/
+    oe_runmake -C ${B}/tests runtest || true
+    if grep -q "run-threads" ${B}/tests/Makefile; then
+        oe_runmake -C ${B}/tests run-threads || true
+    fi
+}
+
+addtask compile_ptest after do_compile before do_install
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/tests
+
+    if [ -d ${B}/tests/.libs ]; then
+        cp -a ${B}/tests/.libs ${D}${PTEST_PATH}/tests/
+    fi
+
+    for f in runtest run-threads; do
+        if [ -f ${B}/tests/$f ]; then
+            install -m 0755 ${B}/tests/$f ${D}${PTEST_PATH}/tests/
+            sed -i -e "s#${TMPDIR}##g" \
+                   -e "s#${B}##g" \
+                   -e "s#${S}##g" \
+                   ${D}${PTEST_PATH}/tests/$f || true
+        fi
+    done
+
+    cp -r ${S}/tests/* ${D}${PTEST_PATH}/tests/ || true
+    find ${D}${PTEST_PATH}/tests -name 'Makefile*' -delete || true
+    find ${D}${PTEST_PATH}/tests -name '.deps' -type d -exec rm -rf {} + || true
+}
+
+FILES:${PN}-ptest += "${PTEST_PATH}/*"
 
 do_configure:prepend () {
 	# We don't DEPEND on binutils for ansidecl.h so ensure we don't use the header.
@@ -38,7 +75,7 @@  do_configure:prepend () {
 	touch ${S}/doc/xsltproc.1
 }
 
-EXTRA_OECONF = "--without-python --without-debug --without-crypto"
+EXTRA_OECONF = "--without-python --without-debug --without-crypto --with-plugins"
 # older versions of this recipe had ${PN}-utils
 RPROVIDES:${PN}-bin += "${PN}-utils"
 RCONFLICTS:${PN}-bin += "${PN}-utils"