diff --git a/meta/conf/distro/include/ptest-packagelists.inc b/meta/conf/distro/include/ptest-packagelists.inc index 9a7b25a916..e6e725bd25 100644 --- a/meta/conf/distro/include/ptest-packagelists.inc +++ b/meta/conf/distro/include/ptest-packagelists.inc @@ -32,6 +32,7 @@ PTESTS_FAST = "\ libgpg-error\ libnl \ libpcre \ + librsvg \ libssh2 \ libtest-fatal-perl \ libtest-needs-perl \ diff --git a/meta/recipes-gnome/librsvg/librsvg/run-ptest b/meta/recipes-gnome/librsvg/librsvg/run-ptest new file mode 100644 index 0000000000..da1c65f1a6 --- /dev/null +++ b/meta/recipes-gnome/librsvg/librsvg/run-ptest @@ -0,0 +1,17 @@ +#!/bin/sh +export CARGO_MANIFEST_DIR="$(cd "$(dirname "$0")" && pwd)" +cd $CARGO_MANIFEST_DIR + +ln -sf `which rsvg-convert` ./rsvg-convert + +./api_test/bin/api + +if [ $? = 0 ]; then + echo PASS: /usr/lib/librsvg/ptest/api_test/bin/api + rc=0 +else + echo FAIL: /usr/lib/librsvg/ptest/api_test/bin/api + rc=1 +fi + +# rust tests are appended here by ptest-cargo class diff --git a/meta/recipes-gnome/librsvg/librsvg_2.61.0.bb b/meta/recipes-gnome/librsvg/librsvg_2.61.0.bb index dda51abab5..de1853c6d8 100644 --- a/meta/recipes-gnome/librsvg/librsvg_2.61.0.bb +++ b/meta/recipes-gnome/librsvg/librsvg_2.61.0.bb @@ -11,9 +11,10 @@ LIC_FILES_CHKSUM = "file://COPYING.LIB;md5=4fbd65380cdd255951079008b364516c" SECTION = "x11/utils" DEPENDS = "cairo gdk-pixbuf glib-2.0 libxml2 pango python3-docutils-native cargo-c-native" +RDEPENDS:${PN}-ptest += "rsvg liberation-fonts" BBCLASSEXTEND = "native nativesdk" -inherit cargo_common gnomebase pixbufcache gobject-introspection rust vala gi-docgen cargo-update-recipe-crates +inherit cargo_common gnomebase pixbufcache gobject-introspection rust vala gi-docgen cargo-update-recipe-crates ptest-cargo GIR_MESON_ENABLE_FLAG = 'enabled' GIR_MESON_DISABLE_FLAG = 'disabled' GIDOCGEN_MESON_OPTION = 'docs' @@ -23,7 +24,8 @@ GIDOCGEN_MESON_DISABLE_FLAG = 'disabled' require ${BPN}-crates.inc SRC_URI += "file://0001-query-rustc-append-RUSTFLAGS-to-rustc-executable.patch \ - file://0001-Revert-meson.build-do-not-force-disable-gdk-pixbuf-l.patch" + file://0001-Revert-meson.build-do-not-force-disable-gdk-pixbuf-l.patch \ + file://run-ptest" SRC_URI[archive.sha256sum] = "dbd0db40a1179a382fbb8cc930837671b973d722ba106a3dee2aad0fd858e2c4" UPSTREAM_CHECK_REGEX = "librsvg-(?P\d+\.\d+\.(?!9\d+)\d+)" @@ -58,17 +60,41 @@ LDFLAGS += " -L${B}/rsvg" # needed on ubuntu 20.04/debian 11 to avoid 'undefined reference to `dlsym'' errors BUILD_LDFLAGS += " -ldl" -PACKAGECONFIG ??= "gdkpixbuf" +PACKAGECONFIG ??= "gdkpixbuf ${@bb.utils.contains('PTEST_ENABLED', '1', 'apitest', '', d)}" PACKAGECONFIG:append:class-target = " ${@bb.utils.contains('GI_DATA_ENABLED', 'True', 'vala', '', d)}" # The gdk-pixbuf loader PACKAGECONFIG[gdkpixbuf] = "-Dpixbuf-loader=enabled,-Dpixbuf-loader=disabled,gdk-pixbuf-native" PACKAGECONFIG[vala] = "-Dvala=enabled,-Dvala=disabled" +PACKAGECONFIG[apitest] = "-Dtests=true,-Dtests=false" do_install:append() { # Loadable modules don't need .a or .la on Linux rm -f ${D}${libdir}/gdk-pixbuf-2.0/*/loaders/*.a ${D}${libdir}/gdk-pixbuf-2.0/*/loaders/*.la } +do_compile_ptest_cargo:prepend() { + # The packageconfig is for meson, but the rust tests are compiled directly with cargo, + # so these arguments don't apply. Note that this is Python, the intendation is intentional. + d.setVar('PACKAGECONFIG_CONFARGS', '') +} + +do_compile_ptest:prepend() { + # rsvg-convert is the tested binary, which shouldn't be executed as a test. + # Beside this, it is not bit-identical to the actual rsvg-convert binary, so + # remove it from this list, as create a symlink to the real thing from run-ptest script + sed -i '/rsvg-convert$/d' ${CARGO_TEST_BINARIES_FILES} +} + +do_install_ptest:append() { + install -d ${D}${PTEST_PATH}/api_test/bin + cp -r ${S}/rsvg/tests ${D}${PTEST_PATH} + cp -r ${S}/rsvg_convert/tests ${D}${PTEST_PATH} + install ${B}/librsvg-c/tests-c/api ${D}${PTEST_PATH}/api_test/bin + # the api tests look for the required files in rsvg folder, so simulate it + # with a symlink that points to the current folder + ln -s . ${D}${PTEST_PATH}/rsvg +} + PACKAGES =+ "librsvg-gtk rsvg" FILES:rsvg = "${bindir}/rsvg* \ ${datadir}/pixmaps/svg-viewer.svg \