From 5592d5a6e4540af68ff3399c33b0f5a3ec341d01 Mon Sep 17 00:00:00 2001 From: Valentin Haudiquet Date: Sun, 20 Sep 2026 18:14:28 +0200 Subject: [PATCH] test: cross-build linux-riscv from resolute, noble known-broken MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The e2e pulled linux-riscv from questing, which went EOL in July 2026 and has since been removed from the mirrors entirely — not even old-releases carries a Release file for it, so the chroot bootstrap cannot resolve the series and the e2e can no longer run. Point it at resolute (26.04), the current LTS: linux-riscv is packaged there like in every supported series, and an LTS stays pullable for years where an interim series turns the test stale within months. Keep a noble fixture next to it, also not run by default: noble-era controls declare their build tools unqualified (the :native idiom landed in later series), so exact dpkg semantics demand host-architecture instances of them (python3:riscv64, gcc-13:riscv64, ...), and the two-architecture install set is unsolvable — t64 libraries conflict with their own foreign-arch variant, and the riscv64 toolchain instances drag depends chains that do not resolve from the chroot sources. --- src/deb/mod.rs | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/deb/mod.rs b/src/deb/mod.rs index 1f7ae9b..1805d92 100644 --- a/src/deb/mod.rs +++ b/src/deb/mod.rs @@ -603,12 +603,34 @@ mod tests { /// NOTE: Ideally, we want to run this in CI, but it takes more than 1h /// to fully build the linux-riscv package on an amd64 builder, which is too /// much time + /// The series is the current LTS (26.04) rather than an interim one: + /// interim series vanish from the mirrors a few months after their EOL + /// (questing is already unreachable), an LTS stays pullable for years. #[ignore] #[tokio::test] #[test_log::test] #[cfg(target_arch = "x86_64")] async fn test_deb_linux_riscv_ubuntu_cross_end_to_end() { - test_build_end_to_end("linux-riscv", "questing", None, Some("riscv64"), true).await; + test_build_end_to_end("linux-riscv", "resolute", None, Some("riscv64"), true).await; + } + + /// KNOWN-BROKEN cross build of the noble-era kernel, kept as an + /// ignored fixture to work from. Noble controls declare their build + /// tools unqualified (the `:native` idiom landed later), so exact dpkg + /// semantics demand host-architecture instances of them + /// (python3:riscv64, gcc-13:riscv64, clang-17:riscv64, ...) and the + /// resulting two-architecture install set is unsolvable: t64 + /// libraries (libclang1-17t64) conflict with their own foreign-arch + /// variant, and the riscv64 toolchain instances drag depends chains + /// (gcc:riscv64) that do not resolve from the chroot sources. A real + /// run fails at the apt transaction with 'Unable to correct problems'. + /// Resolute-era controls declare :native properly; see the test above. + #[ignore] + #[tokio::test] + #[test_log::test] + #[cfg(target_arch = "x86_64")] + async fn test_deb_linux_riscv_noble_cross_end_to_end() { + test_build_end_to_end("linux-riscv", "noble", None, Some("riscv64"), true).await; } /// This is a specific test case for the latest gcc package on Debian