Message ID | 20250103104903.2946151-1-sanakazi720@gmail.com |
---|---|
State | Changes Requested |
Delegated to: | Steve Sakoman |
Headers | show |
Series | [scarthgap] libpng: Add ptest for libpng | expand |
On Fri, 3 Jan 2025 at 11:49, Sana Kazi via lists.openembedded.org <sanakazi720=gmail.com@lists.openembedded.org> wrote: > libpng is a platform-independent library which > supports all PNG features. > This ptest executes the below binaries, parses > the png image and prints the image features. > > 1. pngfix - provides information about PNG image > copyrights details. > > 2. pngtest - tests, optimizes and optionally fixes > the zlib header in PNG files. > > 3. pngstest - verifies the integrity of PNG image by > dumping chunk level information. > > 4. timepng - provides details about PNG image chunks. Thanks for working in this. There are more tests provided by libpng, why only these four are picked? E.g. in Makefile.am: if ENABLE_TESTS check_PROGRAMS= pngtest pngunknown pngstest pngvalid pngimage pngcp if HAVE_CLOCK_GETTIME check_PROGRAMS += timepng > +#!/bin/sh > + > +set -eux > + > +./pngfix pngtest.png &> log.txt 2>&1 > + > +if grep -i "OK" log.txt 2>&1 ; then > + echo "PASS: pngfix passed" > +else > + echo "FAIL: pngfix failed" > +fi > +rm -f log.txt > + > +./pngtest pngtest.png &> log.txt 2>&1 > + > +if grep -i "PASS" log.txt 2>&1 ; then > + echo "PASS: pngtest passed" > +else > + echo "FAIL: pngtest failed" > +fi > +rm -f log.txt > + > +for i in pngstest timepng; do > + if "./${i}" pngtest.png 2>&1; then > + echo "PASS: $i" > + else > + echo "FAIL: $i" > + fi > +done There are several problems here: - hardcoding the list of test executables is prone to getting out of date as libpng is updated to newer versions. As pointed above, it is already incomplete. - checking the logs for things like 'OK' is prone to incorrect test results if the test prints OK somewhere unrelated. The correct thing to do is to check the return code. - removing the logs makes investigating failures more difficult All of the above issues can be addressed by installing Makefile from ${B} and running 'make check' from run-ptest. We do this in several other ptests. Alex
diff --git a/meta/conf/distro/include/ptest-packagelists.inc b/meta/conf/distro/include/ptest-packagelists.inc index 5975db25cc..8878af92ff 100644 --- a/meta/conf/distro/include/ptest-packagelists.inc +++ b/meta/conf/distro/include/ptest-packagelists.inc @@ -31,6 +31,7 @@ PTESTS_FAST = "\ libgpg-error\ libnl \ libpcre \ + libpng \ libssh2 \ libtimedate-perl \ libtest-fatal-perl \ diff --git a/meta/recipes-multimedia/libpng/files/run-ptest b/meta/recipes-multimedia/libpng/files/run-ptest new file mode 100644 index 0000000000..9ab5d0c1f4 --- /dev/null +++ b/meta/recipes-multimedia/libpng/files/run-ptest @@ -0,0 +1,29 @@ +#!/bin/sh + +set -eux + +./pngfix pngtest.png &> log.txt 2>&1 + +if grep -i "OK" log.txt 2>&1 ; then + echo "PASS: pngfix passed" +else + echo "FAIL: pngfix failed" +fi +rm -f log.txt + +./pngtest pngtest.png &> log.txt 2>&1 + +if grep -i "PASS" log.txt 2>&1 ; then + echo "PASS: pngtest passed" +else + echo "FAIL: pngtest failed" +fi +rm -f log.txt + +for i in pngstest timepng; do + if "./${i}" pngtest.png 2>&1; then + echo "PASS: $i" + else + echo "FAIL: $i" + fi +done diff --git a/meta/recipes-multimedia/libpng/libpng_1.6.42.bb b/meta/recipes-multimedia/libpng/libpng_1.6.42.bb index 673133bb4a..6438bf190e 100644 --- a/meta/recipes-multimedia/libpng/libpng_1.6.42.bb +++ b/meta/recipes-multimedia/libpng/libpng_1.6.42.bb @@ -10,7 +10,9 @@ DEPENDS = "zlib" LIBV = "16" -SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}${LIBV}/${PV}/${BP}.tar.xz" +SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}${LIBV}/${PV}/${BP}.tar.xz \ + file://run-ptest \ +" SRC_URI[sha256sum] = "c919dbc11f4c03b05aba3f8884d8eb7adfe3572ad228af972bb60057bdb48450" MIRRORS += "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}${LIBV}/ ${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}${LIBV}/older-releases/" @@ -19,7 +21,7 @@ UPSTREAM_CHECK_URI = "http://libpng.org/pub/png/libpng.html" BINCONFIG = "${bindir}/libpng-config ${bindir}/libpng16-config" -inherit autotools binconfig-disabled pkgconfig +inherit autotools binconfig-disabled pkgconfig ptest # Work around missing symbols ARMNEON = "${@bb.utils.contains("TUNE_FEATURES", "neon", "--enable-arm-neon=on", "--enable-arm-neon=off", d)}" @@ -30,4 +32,12 @@ PACKAGES =+ "${PN}-tools" FILES:${PN}-tools = "${bindir}/png-fix-itxt ${bindir}/pngfix ${bindir}/pngcp" +do_install_ptest() { + install -m644 "${S}/pngtest.png" "${D}${PTEST_PATH}" + install -m755 "${B}/.libs/pngfix" "${D}${PTEST_PATH}" + install -m755 "${B}/.libs/pngtest" "${D}${PTEST_PATH}" + install -m755 "${B}/.libs/pngstest" "${D}${PTEST_PATH}" + install -m755 "${B}/.libs/timepng" "${D}${PTEST_PATH}" +} + BBCLASSEXTEND = "native nativesdk"
libpng is a platform-independent library which supports all PNG features. This ptest executes the below binaries, parses the png image and prints the image features. 1. pngfix - provides information about PNG image copyrights details. 2. pngtest - tests, optimizes and optionally fixes the zlib header in PNG files. 3. pngstest - verifies the integrity of PNG image by dumping chunk level information. 4. timepng - provides details about PNG image chunks. Signed-off-by: Sana Kazi <sanakazi720@gmail.com> --- .../distro/include/ptest-packagelists.inc | 1 + .../recipes-multimedia/libpng/files/run-ptest | 29 +++++++++++++++++++ .../libpng/libpng_1.6.42.bb | 14 +++++++-- 3 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 meta/recipes-multimedia/libpng/files/run-ptest