@@ -99,6 +99,7 @@ PTESTS_FAST = "\
rpm-sequoia \
sed \
slang \
+ tiff \
utfcpp \
wayland \
xz \
new file mode 100644
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+cd $(dirname $0)/test
+
+for test in *.sh; do
+ [ -x "$test" ] || continue
+
+ # Skip tests for tools with known issues or missing tools
+ case "$test" in
+ *tiffcrop*)
+ # tiffcrop has known security issues and is disabled by default since 4.6.0
+ echo "SKIP: ${test%.sh} (tiffcrop has known issues)"
+ continue
+ ;;
+ *jbig*)
+ # Skip JBIG tests if not supported
+ echo "SKIP: ${test%.sh} (JBIG not supported)"
+ continue
+ ;;
+ *thumbnail*)
+ # thumbnail tool may not be built by default
+ if [ ! -x ../tools/thumbnail ]; then
+ echo "SKIP: ${test%.sh} (thumbnail tool not available)"
+ continue
+ fi
+ ;;
+ esac
+
+ if ./"$test" >/dev/null 2>&1; then
+ echo "PASS: ${test%.sh}"
+ else
+ echo "FAIL: ${test%.sh}"
+ fi
+done
@@ -23,7 +23,9 @@ CVE_STATUS[CVE-2023-6228] = "fixed-version: Fixed since 4.7.0, NVD tracks this a
CVE_STATUS[CVE-2023-6277] = "fixed-version: Fixed since 4.7.0, NVD tracks this as version-less vulnerability"
CVE_STATUS[CVE-2025-8851] = "fixed-version: Fixed since 4.7.0, NVD tracks this as fixed in 2024-08-11 vulnerability"
-inherit autotools multilib_header
+inherit autotools multilib_header ptest
+
+SRC_URI += "file://run-ptest"
CACHED_CONFIGUREVARS = "ax_cv_check_gl_libgl=no"
@@ -63,4 +65,76 @@ do_install:append() {
oe_multilib_header tiffconf.h
}
+do_compile_ptest() {
+ oe_runmake -C ${B}/test
+ # Build additional tools needed for tests (they are in EXTRA_PROGRAMS)
+ oe_runmake -C ${B}/tools thumbnail || bbwarn "thumbnail tool failed to build"
+ oe_runmake -C ${B}/tools rgb2ycbcr || bbwarn "rgb2ycbcr tool failed to build"
+}
+
+do_install_ptest() {
+ install -d ${D}${PTEST_PATH}/test
+ install -d ${D}${PTEST_PATH}/tools
+
+ # Install test executables (they are in .libs after libtool build)
+ if [ -d ${B}/test/.libs ]; then
+ for f in ${B}/test/.libs/*; do
+ if [ -f "$f" ] && [ -x "$f" ]; then
+ case "$(basename $f)" in
+ *.la|*.so*|*.o|lt-*) ;;
+ *)
+ install -m 0755 "$f" ${D}${PTEST_PATH}/tools/
+ ;;
+ esac
+ fi
+ done
+ fi
+
+ # Also check test directory directly
+ for f in ${B}/test/*; do
+ if [ -f "$f" ] && [ -x "$f" ]; then
+ case "$(basename $f)" in
+ *.sh|*.la|*.so*|*.o|Makefile*|*.log) ;;
+ *)
+ # Skip if already installed from .libs
+ [ -f ${D}${PTEST_PATH}/tools/$(basename $f) ] && continue
+ install -m 0755 "$f" ${D}${PTEST_PATH}/tools/
+ ;;
+ esac
+ fi
+ done
+
+ # Install extra tools from tools/.libs (thumbnail, rgb2ycbcr)
+ if [ -d ${B}/tools/.libs ]; then
+ for tool in thumbnail rgb2ycbcr; do
+ if [ -f ${B}/tools/.libs/$tool ] && [ -x ${B}/tools/.libs/$tool ]; then
+ install -m 0755 ${B}/tools/.libs/$tool ${D}${PTEST_PATH}/tools/
+ fi
+ done
+ fi
+
+ # Install tiff tools from bindir
+ if [ -d ${D}${bindir} ]; then
+ for tool in ${D}${bindir}/*; do
+ if [ -f "$tool" ]; then
+ ln -sf ${bindir}/$(basename $tool) ${D}${PTEST_PATH}/tools/
+ fi
+ done
+ fi
+
+ # Install test data
+ cp -r ${S}/test/images ${D}${PTEST_PATH}/test/
+ cp -r ${S}/test/refs ${D}${PTEST_PATH}/test/
+
+ # Install test scripts
+ find ${S}/test -maxdepth 1 -name "*.sh" -exec install -m 0755 {} ${D}${PTEST_PATH}/test/ \;
+
+ # Install common.sh if exists
+ if [ -f ${S}/test/common.sh ]; then
+ install -m 0644 ${S}/test/common.sh ${D}${PTEST_PATH}/test/
+ fi
+}
+
+RDEPENDS:${PN}-ptest += "bash"
+
BBCLASSEXTEND = "native nativesdk"