diff mbox series

[meta-oe] openjpeg: add ptest support

Message ID 20260520030029.2998426-1-Shilong.Jiao@windriver.com
State New
Headers show
Series [meta-oe] openjpeg: add ptest support | expand

Commit Message

Shilong.Jiao@eng.windriver.com May 20, 2026, 3 a.m. UTC
From: sjiao <Shilong.Jiao@windriver.com>

Add ptest support to enable runtime testing of openjpeg library.
Only unit tests are included, excluding tests that require external
data files (NR-/CONF-/ETS-/testjp2).

Tested on intel-x86-64: all 29 unit tests passed.

Signed-off-by: sjiao <Shilong.Jiao@windriver.com>
---
 .../include/ptest-packagelists-meta-oe.inc    |  1 +
 .../openjpeg/openjpeg/run-ptest               |  4 +++
 .../openjpeg/openjpeg_2.5.4.bb                | 36 ++++++++++++++++++-
 3 files changed, 40 insertions(+), 1 deletion(-)
 create mode 100644 meta-oe/recipes-graphics/openjpeg/openjpeg/run-ptest
diff mbox series

Patch

diff --git a/meta-oe/conf/include/ptest-packagelists-meta-oe.inc b/meta-oe/conf/include/ptest-packagelists-meta-oe.inc
index 528ce16191..a9cbaf6982 100644
--- a/meta-oe/conf/include/ptest-packagelists-meta-oe.inc
+++ b/meta-oe/conf/include/ptest-packagelists-meta-oe.inc
@@ -50,6 +50,7 @@  PTESTS_FAST_META_OE = "\
     nlohmann-json \
     nodejs \
     onig \
+    openjpeg \
     oprofile \
     pegtl \
     pv \
diff --git a/meta-oe/recipes-graphics/openjpeg/openjpeg/run-ptest b/meta-oe/recipes-graphics/openjpeg/openjpeg/run-ptest
new file mode 100644
index 0000000000..a161244fbd
--- /dev/null
+++ b/meta-oe/recipes-graphics/openjpeg/openjpeg/run-ptest
@@ -0,0 +1,4 @@ 
+#!/bin/sh
+
+# Only run unit tests, exclude nonregression and conformance tests that need external data files
+ctest -E "(NR-|CONF-|ETS-|testjp2)" -V | sed -u 's/\*\*\*/ /g' | awk '/Test +#/{gsub(/Passed/,"PASS"); gsub(/Failed/,"FAIL"); gsub(/Skipped/,"SKIP"); print $6": "$4; fflush();}'
diff --git a/meta-oe/recipes-graphics/openjpeg/openjpeg_2.5.4.bb b/meta-oe/recipes-graphics/openjpeg/openjpeg_2.5.4.bb
index 968b7a0a5c..0fe7a75e52 100644
--- a/meta-oe/recipes-graphics/openjpeg/openjpeg_2.5.4.bb
+++ b/meta-oe/recipes-graphics/openjpeg/openjpeg_2.5.4.bb
@@ -9,14 +9,48 @@  SRC_URI = "git://github.com/uclouvain/openjpeg.git;branch=master;protocol=https
            file://0001-Do-not-ask-cmake-to-export-binaries-they-don-t-make-.patch \
            file://CVE-2023-39327.patch \
            file://CVE-2026-6192.patch \
+           file://run-ptest \
            "
 SRCREV = "6c4a29b00211eb0430fa0e5e890f1ce5c80f409f"
 
-inherit cmake
+inherit cmake ptest
 
 # for multilib
 EXTRA_OECMAKE += "-DOPENJPEG_INSTALL_LIB_DIR=${@d.getVar('baselib').replace('/', '')}"
 
+EXTRA_OECMAKE += "${@bb.utils.contains('PTEST_ENABLED', '1', '-DBUILD_TESTING=ON', '', d)}"
+
 FILES:${PN} += "${libdir}/openjpeg*"
 
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}
+
+    # Install test binaries only
+    if [ -d ${B}/bin ]; then
+        install -d ${D}${PTEST_PATH}/bin
+        find ${B}/bin -maxdepth 1 -type f -executable ! -name "*.so*" \
+            -exec install -m 0755 {} ${D}${PTEST_PATH}/bin/ \;
+    fi
+
+    # Install CTest configuration files with proper structure
+    if [ -d ${B}/tests ]; then
+        cp -r ${B}/tests ${D}${PTEST_PATH}/
+    fi
+    if [ -f ${B}/CTestTestfile.cmake ]; then
+        install -m 0644 ${B}/CTestTestfile.cmake ${D}${PTEST_PATH}/
+    fi
+
+    # Fix all build paths in cmake files to point to ptest installation
+    find ${D}${PTEST_PATH} \( -name "*.cmake" -o -name "*.ctest" \) -type f -exec sed -i \
+        -e "s#${B}/bin#${PTEST_PATH}/bin#g" \
+        -e "s#${B}#${PTEST_PATH}#g" \
+        -e "s#${S}#${PTEST_PATH}#g" \
+        -e "s#${TMPDIR}#/tmp#g" \
+        -e "s#${STAGING_DIR_NATIVE}##g" \
+        -e "s#/tmp/work/[^/]*/[^/]*/[^/]*/recipe-sysroot-native/usr/bin/cmake#/usr/bin/cmake#g" \
+        {} +
+}
+
+RDEPENDS:${PN}-ptest += "${PN} bash cmake"
+
 BBCLASSEXTEND = "native nativesdk"