diff --git a/meta/conf/distro/include/ptest-packagelists.inc b/meta/conf/distro/include/ptest-packagelists.inc index 710f2a8ab8..3658dd2adb 100644 --- a/meta/conf/distro/include/ptest-packagelists.inc +++ b/meta/conf/distro/include/ptest-packagelists.inc @@ -80,6 +80,7 @@ PTESTS_FAST = "\ python3-webcolors \ qemu \ quilt \ + rpm-sequoia \ sed \ slang \ wayland \ diff --git a/meta/recipes-devtools/rpm-sequoia/files/0001-Use-optional-env-vars-to-force-runtime-paths-in-test.patch b/meta/recipes-devtools/rpm-sequoia/files/0001-Use-optional-env-vars-to-force-runtime-paths-in-test.patch new file mode 100644 index 0000000000..d0179fc53c --- /dev/null +++ b/meta/recipes-devtools/rpm-sequoia/files/0001-Use-optional-env-vars-to-force-runtime-paths-in-test.patch @@ -0,0 +1,35 @@ +From 590937523deea4ad2a2ee0e1ae4412a8f59e0170 Mon Sep 17 00:00:00 2001 +From: Ines KCHELFI +Date: Thu, 10 Apr 2025 15:14:11 +0200 +Subject: [PATCH] Use optional env vars to force runtime paths in tests + +Signed-off-by: Ines KCHELFI +Upstream-Status: Submitted [https://github.com/rpm-software-management/rpm-sequoia/pull/86] +--- + tests/symbols.rs | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/tests/symbols.rs b/tests/symbols.rs +index c16dd9b..dc4a42c 100644 +--- a/tests/symbols.rs ++++ b/tests/symbols.rs +@@ -14,7 +14,8 @@ fn symbols() -> anyhow::Result<()> { + // OUT_DIR gives us + // `/tmp/rpm-sequoia/debug/build/rpm-sequoia-HASH/out`. + +- let out_dir = PathBuf::from(env!("OUT_DIR")); ++ let out_dir = PathBuf::from(option_env!("FORCE_RUNTIME_PATH_LIB") ++ .unwrap_or(env!("OUT_DIR"))); + let mut build_dir = out_dir; + let lib = loop { + let mut lib = build_dir.clone(); +@@ -53,7 +54,8 @@ fn symbols() -> anyhow::Result<()> { + } + + let mut expected_symbols_txt_fn +- = PathBuf::from(env!("CARGO_MANIFEST_DIR")); ++ = PathBuf::from(option_env!("FORCE_RUNTIME_PATH_SRC") ++ .unwrap_or(env!("CARGO_MANIFEST_DIR"))); + expected_symbols_txt_fn.push("src/symbols.txt"); + + let mut expected_symbols_txt = Vec::new(); diff --git a/meta/recipes-devtools/rpm-sequoia/rpm-sequoia_1.7.0.bb b/meta/recipes-devtools/rpm-sequoia/rpm-sequoia_1.7.0.bb index 57062b100a..6ef626e466 100644 --- a/meta/recipes-devtools/rpm-sequoia/rpm-sequoia_1.7.0.bb +++ b/meta/recipes-devtools/rpm-sequoia/rpm-sequoia_1.7.0.bb @@ -10,9 +10,12 @@ LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=f0ff5ff7747cf7d394079c6ae87f5f0c" DEPENDS = "openssl" -inherit pkgconfig rust cargo cargo-update-recipe-crates +inherit pkgconfig rust cargo cargo-update-recipe-crates ptest-cargo + +SRC_URI = "git://github.com/rpm-software-management/rpm-sequoia.git;protocol=https;branch=main \ + file://0001-Use-optional-env-vars-to-force-runtime-paths-in-test.patch \ +" -SRC_URI = "git://github.com/rpm-software-management/rpm-sequoia.git;protocol=https;branch=main" SRCREV = "0667e04ae7fb8cf0490919978d69883d16400e41" @@ -41,6 +44,13 @@ do_compile:prepend () { export LIBDIR="${libdir}" } +# By default, ptest binaries contain host build dir paths. +# Use custom environment variables to force these paths to match the target instead. +do_compile_ptest_cargo:prepend() { + os.environ["FORCE_RUNTIME_PATH_LIB"] = d.getVar("libdir") + os.environ["FORCE_RUNTIME_PATH_SRC"] = d.getVar("PTEST_PATH") +} + do_install:append () { # Move the library to the correct location expected by rpm-sequoia.pc mkdir -p ${D}${libdir} @@ -54,6 +64,18 @@ do_install:append () { install -m644 ${S}/target/release/rpm-sequoia.pc ${D}${libdir}/pkgconfig } +do_install_ptest:append () { + install -d ${D}${PTEST_PATH}/src + install -m 644 ${S}/src/symbols.txt ${D}${PTEST_PATH}/src/symbols.txt +} + +# Tests need objdump +# ptest requires a symlinked library that is only present in the -dev package, +# so we add the -dev to runtime dependencies. +# The "dev-deps" QA check is skipped to avoid warnings about this dev package dependency. +RDEPENDS:${PN}-ptest += "binutils ${PN}-dev" +INSANE_SKIP:${PN}-ptest += "dev-deps" + RDEPENDS:${PN} = "rpm-sequoia-crypto-policy" PACKAGE_WRITE_DEPS += "rpm-sequoia-crypto-policy-native"