From f90ccad49a5404a7ef0b47d3f4ff933fb60493c4 Mon Sep 17 00:00:00 2001 From: sjiao Date: Wed, 20 May 2026 11:00:29 +0800 Subject: [PATCH] openjpeg: add ptest support 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 Signed-off-by: Khem Raj --- .../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 --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"