* [PATCH v2] librsvg: add ptest support
@ 2025-09-04 11:21 Gyorgy Sarvari
2025-09-05 11:07 ` [OE-core] " Mathieu Dubois-Briand
0 siblings, 1 reply; 3+ messages in thread
From: Gyorgy Sarvari @ 2025-09-04 11:21 UTC (permalink / raw)
To: openembedded-core
The suite is quick, it takes ~5 seconds on my machine to execute.
The tests consist of 2 or 3 parts, depending on how one counts them.
The apitest PACKAGACONFIG compiles tests for the c-interface, as part of
the main meson build. This apitest expects test data to be present in
a folder relative the test binary: ../../rsvg/tests folder.
ptest-cargo compiles two sets of test: rsvg-convert tests, and generic assorted
tests for the library, in multiple binaries.
The rsvg-convert tests expect test data to be present in a "tests" folder,
in the same folder where the test binaries are.
The library tests expect the tests to be in a folder called "tests", that's
location is specified by the CARGO_MANIFEST_DIR environment variable.
As part of compiling the cargo tests, rsvg-convert is also compiled specifically
for the tests, however it is not supposed to be different from the actual binary.
It is deleted from the test set, because of two reasons:
1. It is not bit-identical to the actually installed rsvg-convert (it is compiled differently,
with cargo only, without meson)
2. ptest-cargo class treated it as a test binary, and tried to execute it, which resulted
in failing/hanging test.
It is avoided by not installing this binary, but rather use the real rsvg package
as a runtime dependency, and create a symlink to it in the run-ptest script.
Added liberation-fonts as a runtime dependency to the tests - the rsvg-convert
tests require some fonts to be available to be able to render during some
svg->pdf conversion tests.
Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
---
v2: Added rust tests beside the C tests, copy all test data folder to the ptest folder
without cherrypicking the content
v1: https://lists.openembedded.org/g/openembedded-core/message/221454
.../distro/include/ptest-packagelists.inc | 1 +
meta/recipes-gnome/librsvg/librsvg/run-ptest | 17 ++++++++++
meta/recipes-gnome/librsvg/librsvg_2.61.0.bb | 32 +++++++++++++++++--
3 files changed, 47 insertions(+), 3 deletions(-)
create mode 100644 meta/recipes-gnome/librsvg/librsvg/run-ptest
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<pver>\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 \
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [OE-core] [PATCH v2] librsvg: add ptest support
2025-09-04 11:21 [PATCH v2] librsvg: add ptest support Gyorgy Sarvari
@ 2025-09-05 11:07 ` Mathieu Dubois-Briand
2025-09-08 19:17 ` Gyorgy Sarvari
0 siblings, 1 reply; 3+ messages in thread
From: Mathieu Dubois-Briand @ 2025-09-05 11:07 UTC (permalink / raw)
To: skandigraun, openembedded-core
On Thu Sep 4, 2025 at 1:21 PM CEST, Gyorgy Sarvari via lists.openembedded.org wrote:
> The suite is quick, it takes ~5 seconds on my machine to execute.
>
> The tests consist of 2 or 3 parts, depending on how one counts them.
>
> The apitest PACKAGACONFIG compiles tests for the c-interface, as part of
> the main meson build. This apitest expects test data to be present in
> a folder relative the test binary: ../../rsvg/tests folder.
>
> ptest-cargo compiles two sets of test: rsvg-convert tests, and generic assorted
> tests for the library, in multiple binaries.
>
> The rsvg-convert tests expect test data to be present in a "tests" folder,
> in the same folder where the test binaries are.
>
> The library tests expect the tests to be in a folder called "tests", that's
> location is specified by the CARGO_MANIFEST_DIR environment variable.
>
> As part of compiling the cargo tests, rsvg-convert is also compiled specifically
> for the tests, however it is not supposed to be different from the actual binary.
> It is deleted from the test set, because of two reasons:
> 1. It is not bit-identical to the actually installed rsvg-convert (it is compiled differently,
> with cargo only, without meson)
> 2. ptest-cargo class treated it as a test binary, and tried to execute it, which resulted
> in failing/hanging test.
>
> It is avoided by not installing this binary, but rather use the real rsvg package
> as a runtime dependency, and create a symlink to it in the run-ptest script.
>
> Added liberation-fonts as a runtime dependency to the tests - the rsvg-convert
> tests require some fonts to be available to be able to render during some
> svg->pdf conversion tests.
>
> Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
> ---
Hi Gyorgy,
Thanks for your patch.
I believe we see two issues on the autobuilder.
First, we do have a reproducibility error:
AssertionError: The following deb packages are different and not in exclusion list:
/srv/pokybuild/yocto-worker/reproducible/build/build-st/reproducibleB-extended/tmp/deploy/deb/./x86-64-v3/librsvg-2-ptest_2.61.0-r0_amd64.deb
The following ipk packages are different and not in exclusion list:
/srv/pokybuild/yocto-worker/reproducible/build/build-st/reproducibleB-extended/tmp/deploy/ipk/./x86-64-v3/librsvg-2-ptest_2.61.0-r0_x86-64-v3.ipk
The following rpm packages are different and not in exclusion list:
/srv/pokybuild/yocto-worker/reproducible/build/build-st/reproducibleB-extended/tmp/deploy/rpm/./x86_64_v3/librsvg-2-ptest-2.61.0-r0.x86_64_v3.rpm
https://autobuilder.yoctoproject.org/valkyrie/#/builders/37/builds/2422
https://valkyrie.yocto.io/pub/repro-fail/oe-reproducible-20250905-lgqh2ddp/packages/diff-html/
Also, there is some build error. This one only appears on some platforms
and seems a bit intermittent.
ERROR: librsvg-2.61.0-r0 do_configure: Execution of '/srv/pokybuild/yocto-worker/qemuarm64-ptest/build/build/tmp/work/cortexa57-poky-linux/librsvg/2.61.0/temp/run.do_configure.3967314' failed with exit code 1
...
| ../sources/librsvg-2.61.0/meson.build:357:4: ERROR: Problem encountered: error: error loading target specification: could not find specification for target "aarch64-poky-linux-gnu"
https://autobuilder.yoctoproject.org/valkyrie/#/builders/61/builds/2191
https://autobuilder.yoctoproject.org/valkyrie/#/builders/23/builds/2417
Can you have a look, please?
Thanks,
Mathieu
--
Mathieu Dubois-Briand, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [OE-core] [PATCH v2] librsvg: add ptest support
2025-09-05 11:07 ` [OE-core] " Mathieu Dubois-Briand
@ 2025-09-08 19:17 ` Gyorgy Sarvari
0 siblings, 0 replies; 3+ messages in thread
From: Gyorgy Sarvari @ 2025-09-08 19:17 UTC (permalink / raw)
To: Mathieu Dubois-Briand, openembedded-core
On 9/5/25 13:07, Mathieu Dubois-Briand wrote:
> On Thu Sep 4, 2025 at 1:21 PM CEST, Gyorgy Sarvari via lists.openembedded.org wrote:
>> The suite is quick, it takes ~5 seconds on my machine to execute.
>>
>> The tests consist of 2 or 3 parts, depending on how one counts them.
>>
>> The apitest PACKAGACONFIG compiles tests for the c-interface, as part of
>> the main meson build. This apitest expects test data to be present in
>> a folder relative the test binary: ../../rsvg/tests folder.
>>
>> ptest-cargo compiles two sets of test: rsvg-convert tests, and generic assorted
>> tests for the library, in multiple binaries.
>>
>> The rsvg-convert tests expect test data to be present in a "tests" folder,
>> in the same folder where the test binaries are.
>>
>> The library tests expect the tests to be in a folder called "tests", that's
>> location is specified by the CARGO_MANIFEST_DIR environment variable.
>>
>> As part of compiling the cargo tests, rsvg-convert is also compiled specifically
>> for the tests, however it is not supposed to be different from the actual binary.
>> It is deleted from the test set, because of two reasons:
>> 1. It is not bit-identical to the actually installed rsvg-convert (it is compiled differently,
>> with cargo only, without meson)
>> 2. ptest-cargo class treated it as a test binary, and tried to execute it, which resulted
>> in failing/hanging test.
>>
>> It is avoided by not installing this binary, but rather use the real rsvg package
>> as a runtime dependency, and create a symlink to it in the run-ptest script.
>>
>> Added liberation-fonts as a runtime dependency to the tests - the rsvg-convert
>> tests require some fonts to be available to be able to render during some
>> svg->pdf conversion tests.
>>
>> Signed-off-by: Gyorgy Sarvari <skandigraun@gmail.com>
>> ---
> Hi Gyorgy,
>
> Thanks for your patch.
>
> I believe we see two issues on the autobuilder.
>
> First, we do have a reproducibility error:
>
> AssertionError: The following deb packages are different and not in exclusion list:
> /srv/pokybuild/yocto-worker/reproducible/build/build-st/reproducibleB-extended/tmp/deploy/deb/./x86-64-v3/librsvg-2-ptest_2.61.0-r0_amd64.deb
> The following ipk packages are different and not in exclusion list:
> /srv/pokybuild/yocto-worker/reproducible/build/build-st/reproducibleB-extended/tmp/deploy/ipk/./x86-64-v3/librsvg-2-ptest_2.61.0-r0_x86-64-v3.ipk
> The following rpm packages are different and not in exclusion list:
> /srv/pokybuild/yocto-worker/reproducible/build/build-st/reproducibleB-extended/tmp/deploy/rpm/./x86_64_v3/librsvg-2-ptest-2.61.0-r0.x86_64_v3.rpm
>
> https://autobuilder.yoctoproject.org/valkyrie/#/builders/37/builds/2422
> https://valkyrie.yocto.io/pub/repro-fail/oe-reproducible-20250905-lgqh2ddp/packages/diff-html/
>
> Also, there is some build error. This one only appears on some platforms
> and seems a bit intermittent.
>
> ERROR: librsvg-2.61.0-r0 do_configure: Execution of '/srv/pokybuild/yocto-worker/qemuarm64-ptest/build/build/tmp/work/cortexa57-poky-linux/librsvg/2.61.0/temp/run.do_configure.3967314' failed with exit code 1
> ...
> | ../sources/librsvg-2.61.0/meson.build:357:4: ERROR: Problem encountered: error: error loading target specification: could not find specification for target "aarch64-poky-linux-gnu"
>
> https://autobuilder.yoctoproject.org/valkyrie/#/builders/61/builds/2191
> https://autobuilder.yoctoproject.org/valkyrie/#/builders/23/builds/2417
>
> Can you have a look, please?
The reproducibility issue should be fixed by [1], and [2] should take
care of the intermittent build failure - both of them are in master now.
Could you please retry this librsvg patch?
[1]: https://lists.openembedded.org/g/openembedded-core/message/223009
[2]: https://lists.openembedded.org/g/openembedded-core/message/223039
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-09-08 19:17 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-04 11:21 [PATCH v2] librsvg: add ptest support Gyorgy Sarvari
2025-09-05 11:07 ` [OE-core] " Mathieu Dubois-Briand
2025-09-08 19:17 ` Gyorgy Sarvari
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox