From 615b1a57db2030b3f1262c3b1205bd2ce19d19a1 Mon Sep 17 00:00:00 2001 From: Ulrich Huber Date: Mon, 15 Jun 2026 12:44:06 +0200 Subject: [PATCH 1/5] Bump Bazel to 8.5.1 This is required in preparation for rules_distroless bzlmod API. --- .bazelversion | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.bazelversion b/.bazelversion index 9f4a0fbc1..f9c71a52e 100644 --- a/.bazelversion +++ b/.bazelversion @@ -1 +1 @@ -8.3.0 \ No newline at end of file +8.5.1 From 69f0d6c971d04981627f20a0eda2682e0026422f Mon Sep 17 00:00:00 2001 From: Ulrich Huber Date: Mon, 15 Jun 2026 12:46:48 +0200 Subject: [PATCH 2/5] Shift integration testing sysroot to new API Use the new bzlmod API for generation of the sysroot. --- MODULE.bazel | 76 +- .../integration_testing.bzl | 2 +- rules_distroless.lock.json | 1573 +++++++++++++++++ 3 files changed, 1636 insertions(+), 15 deletions(-) create mode 100644 rules_distroless.lock.json diff --git a/MODULE.bazel b/MODULE.bazel index 883b58259..59ee52fbe 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -145,6 +145,68 @@ imagefs.toolchain( ) use_repo(imagefs, "score_qnx_aarch64_ifs_toolchain", "score_qnx_x86_64_ifs_toolchain") +bazel_dep(name = "rules_distroless", version = "0.6.2", dev_dependency = True) +git_override( + module_name = "rules_distroless", + commit = "43dd94fd06e209a0d802a6a8543d42b74c1d8473", + remote = "https://github.com/LittleHuba/rules_distroless.git" +) + +apt = use_extension( + "@rules_distroless//apt:extensions.bzl", + "apt", + dev_dependency = True, +) +apt.sources_list( + architectures = [ + "amd64", + "arm64", + ], + components = ["main"], + suites = [ + "noble", + "noble-security", + "noble-updates", + ], + types = ["deb"], + uris = ["https://snapshot.ubuntu.com/ubuntu/20260401T000000Z"], +) +apt.sources_list( + architectures = [ + "amd64", + "arm64", + ], + components = ["universe"], + suites = [ + "noble", + "noble-security", + "noble-updates", + ], + types = ["deb"], + uris = [ + "https://archive.ubuntu.com/ubuntu", + "https://ports.ubuntu.com/ubuntu-ports", + ], +) +apt.install( + dependency_set = "ubuntu24_04_integration_testing", + packages = [ + "bash", + "binutils", # provides addr2line, required for backtraces in sanitizers + "coreutils", # for commands like `ls` + "libatomic1", + "libstdc++6", + ], + suites = [ + "noble", + "noble-security", + "noble-updates", + ], + mergedusr = True, +) +apt.lock(into = ":rules_distroless.lock.json") +use_repo(apt, "ubuntu24_04_integration_testing") + bazel_dep(name = "toolchains_llvm", version = "1.5.0", dev_dependency = True) llvm = use_extension( @@ -318,20 +380,6 @@ pip.parse( use_repo(pip, "lobster_dependencies") bazel_dep(name = "rules_oci", version = "2.2.7", dev_dependency = True) -bazel_dep(name = "rules_distroless", version = "0.6.2", dev_dependency = True) - -apt = use_extension( - "@rules_distroless//apt:extensions.bzl", - "apt", - dev_dependency = True, -) -apt.install( - name = "ubuntu24_04", - lock = "@@//quality/integration_testing/environments/ubuntu24_04_docker:ubuntu24_04.lock.json", - manifest = "//quality/integration_testing/environments/ubuntu24_04_docker:ubuntu24_04.yaml", - mergedusr = True, -) -use_repo(apt, "ubuntu24_04") bazel_dep(name = "rules_pkg", version = "1.2.0", dev_dependency = True) diff --git a/quality/integration_testing/integration_testing.bzl b/quality/integration_testing/integration_testing.bzl index b6b17a2cf..096b1f5fa 100644 --- a/quality/integration_testing/integration_testing.bzl +++ b/quality/integration_testing/integration_testing.bzl @@ -62,7 +62,7 @@ def integration_test(name, srcs, filesystem, **kwargs): "//quality/sanitizer/flags:none": [], "//quality/sanitizer/flags:any_sanitizer": ["//quality/sanitizer:suppressions_pkg"], }) + [ - "@ubuntu24_04//:ubuntu24_04", + "@ubuntu24_04_integration_testing//:ubuntu24_04_integration_testing", ], target_compatible_with = LINUX_TARGET_COMPATIBLE_WITH, ) diff --git a/rules_distroless.lock.json b/rules_distroless.lock.json new file mode 100644 index 000000000..46ac1e452 --- /dev/null +++ b/rules_distroless.lock.json @@ -0,0 +1,1573 @@ +{ + "dependency_sets": { + "ubuntu24_04_integration_testing": { + "sets": { + "amd64": { + "/noble-updates/binutils:amd64": "2.42-4ubuntu2.10", + "/noble-updates/coreutils:amd64": "9.4-3ubuntu6.2", + "/noble-updates/libatomic1:amd64": "14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libstdc++6:amd64": "14.2.0-4ubuntu2~24.04.1", + "/noble/bash:amd64": "5.2.21-2ubuntu4" + }, + "arm64": { + "/noble-updates/binutils:arm64": "2.42-4ubuntu2.10", + "/noble-updates/coreutils:arm64": "9.4-3ubuntu6.2", + "/noble-updates/libatomic1:arm64": "14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libstdc++6:arm64": "14.2.0-4ubuntu2~24.04.1", + "/noble/bash:arm64": "5.2.21-2ubuntu4" + } + } + }, + "ubuntu24_04_sysroot": { + "sets": { + "amd64": { + "/noble-updates/libatomic1:amd64": "14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libc6-dev:amd64": "2.39-0ubuntu8.7", + "/noble-updates/libc6:amd64": "2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:amd64": "14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libstdc++-13-dev:amd64": "13.3.0-6ubuntu2~24.04.1", + "/noble-updates/libstdc++6:amd64": "14.2.0-4ubuntu2~24.04.1", + "/noble-updates/linux-libc-dev:amd64": "6.8.0-106.106" + }, + "arm64": { + "/noble-updates/libatomic1:arm64": "14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libc6-dev:arm64": "2.39-0ubuntu8.7", + "/noble-updates/libc6:arm64": "2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:arm64": "14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libstdc++-13-dev:arm64": "13.3.0-6ubuntu2~24.04.1", + "/noble-updates/libstdc++6:arm64": "14.2.0-4ubuntu2~24.04.1", + "/noble-updates/linux-libc-dev:arm64": "6.8.0-106.106" + } + } + } + }, + "facts": { + "noble-security/main/amd64/Packages": "sha256-OxZCuK+H23ehn64l48YaHq1U3tGmb6kx6elAcjBhzl4=", + "noble-security/main/arm64/Packages": "sha256-HjlN3sGNO/w22bnPGd4Ev7KEbUl2FTvhDlWxsVqQldA=", + "noble-updates/main/amd64/Packages": "sha256-2AE5TIdmI7YX74FdIKMjg7nV4+CC3JShKanAT9sshh0=", + "noble-updates/main/arm64/Packages": "sha256-iflHMYRcSyIjxiN6xJzg5JEBbTwc8gwdyyleuif5Cn0=", + "noble/main/amd64/Packages": "sha256-KmoZnhAxpcJ5yzRmRtWUmT81scA91KgqqgMjmA3ZJFE=", + "noble/main/arm64/Packages": "sha256-ShkB5hJPsKER9d/8j1wUR09Eni7Ppx8urwspkX7bU/k=" + }, + "packages": { + "/noble-updates/base-files:amd64=13ubuntu10.4": { + "architecture": "amd64", + "depends_on": [ + "/noble/libcrypt1:amd64=1:4.4.36-4build1", + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble/mawk:amd64=1.3.4.20240123-1build1" + ], + "filename": "pool/main/b/base-files/base-files_13ubuntu10.4_amd64.deb", + "name": "base-files", + "section": "admin", + "sha256": "94daf9ede91f6263d676611623d4c9edab695c728a584ab2fb1d11cabb8479e8", + "size": 73276, + "suite": "noble-updates", + "version": "13ubuntu10.4" + }, + "/noble-updates/base-files:arm64=13ubuntu10.4": { + "architecture": "arm64", + "depends_on": [ + "/noble/libcrypt1:arm64=1:4.4.36-4build1", + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble/mawk:arm64=1.3.4.20240123-1build1" + ], + "filename": "pool/main/b/base-files/base-files_13ubuntu10.4_arm64.deb", + "name": "base-files", + "section": "admin", + "sha256": "1b22f149ae67c1995615be284899e7b6bb1eed32884944905ab8414f44bbcf0a", + "size": 73410, + "suite": "noble-updates", + "version": "13ubuntu10.4" + }, + "/noble-updates/binutils-aarch64-linux-gnu:arm64=2.42-4ubuntu2.10": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/zlib1g:arm64=1:1.3.dfsg-3.1ubuntu2.1", + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libzstd1:arm64=1.5.5+dfsg2-2build1.1", + "/noble-updates/libstdc++6:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libsframe1:arm64=2.42-4ubuntu2.10", + "/noble/libjansson4:arm64=2.14-2build2", + "/noble-updates/libgprofng0:arm64=2.42-4ubuntu2.10", + "/noble-updates/libbinutils:arm64=2.42-4ubuntu2.10", + "/noble-updates/binutils-common:arm64=2.42-4ubuntu2.10", + "/noble-updates/libctf0:arm64=2.42-4ubuntu2.10", + "/noble-updates/libctf-nobfd0:arm64=2.42-4ubuntu2.10" + ], + "filename": "pool/main/b/binutils/binutils-aarch64-linux-gnu_2.42-4ubuntu2.10_arm64.deb", + "name": "binutils-aarch64-linux-gnu", + "section": "devel", + "sha256": "b5311d11d56f2daa82e952612b9578ef675af67714edb9aef7e3dc6cf2531575", + "size": 3304470, + "suite": "noble-updates", + "version": "2.42-4ubuntu2.10" + }, + "/noble-updates/binutils-common:amd64=2.42-4ubuntu2.10": { + "architecture": "amd64", + "depends_on": [], + "filename": "pool/main/b/binutils/binutils-common_2.42-4ubuntu2.10_amd64.deb", + "name": "binutils-common", + "section": "devel", + "sha256": "d136073f5e2153f3df11c1d08d66727b9466b28ff483f50085f14bbe3464b5ee", + "size": 240286, + "suite": "noble-updates", + "version": "2.42-4ubuntu2.10" + }, + "/noble-updates/binutils-common:arm64=2.42-4ubuntu2.10": { + "architecture": "arm64", + "depends_on": [], + "filename": "pool/main/b/binutils/binutils-common_2.42-4ubuntu2.10_arm64.deb", + "name": "binutils-common", + "section": "devel", + "sha256": "e2930005b9e4d599cfa8ebddd1d888cbcef7ebec38c8c7dfbc4babbdeaa52c3b", + "size": 240286, + "suite": "noble-updates", + "version": "2.42-4ubuntu2.10" + }, + "/noble-updates/binutils-x86-64-linux-gnu:amd64=2.42-4ubuntu2.10": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/zlib1g:amd64=1:1.3.dfsg-3.1ubuntu2.1", + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libzstd1:amd64=1.5.5+dfsg2-2build1.1", + "/noble-updates/libstdc++6:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libsframe1:amd64=2.42-4ubuntu2.10", + "/noble/libjansson4:amd64=2.14-2build2", + "/noble-updates/libgprofng0:amd64=2.42-4ubuntu2.10", + "/noble-updates/libbinutils:amd64=2.42-4ubuntu2.10", + "/noble-updates/binutils-common:amd64=2.42-4ubuntu2.10", + "/noble-updates/libctf0:amd64=2.42-4ubuntu2.10", + "/noble-updates/libctf-nobfd0:amd64=2.42-4ubuntu2.10" + ], + "filename": "pool/main/b/binutils/binutils-x86-64-linux-gnu_2.42-4ubuntu2.10_amd64.deb", + "name": "binutils-x86-64-linux-gnu", + "section": "devel", + "sha256": "1e510a15f30208d39edcd840e48f26a77bbca7c417805eeccb1e3f7de198ef29", + "size": 2462744, + "suite": "noble-updates", + "version": "2.42-4ubuntu2.10" + }, + "/noble-updates/binutils:amd64=2.42-4ubuntu2.10": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/binutils-x86-64-linux-gnu:amd64=2.42-4ubuntu2.10", + "/noble-updates/zlib1g:amd64=1:1.3.dfsg-3.1ubuntu2.1", + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libzstd1:amd64=1.5.5+dfsg2-2build1.1", + "/noble-updates/libstdc++6:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libsframe1:amd64=2.42-4ubuntu2.10", + "/noble/libjansson4:amd64=2.14-2build2", + "/noble-updates/libgprofng0:amd64=2.42-4ubuntu2.10", + "/noble-updates/libbinutils:amd64=2.42-4ubuntu2.10", + "/noble-updates/binutils-common:amd64=2.42-4ubuntu2.10", + "/noble-updates/libctf0:amd64=2.42-4ubuntu2.10", + "/noble-updates/libctf-nobfd0:amd64=2.42-4ubuntu2.10" + ], + "filename": "pool/main/b/binutils/binutils_2.42-4ubuntu2.10_amd64.deb", + "name": "binutils", + "section": "devel", + "sha256": "b3b5a84181a38fd191820b2cdcc1a3eeb1cd6333ad472f2092f96e81047e9c74", + "size": 18154, + "suite": "noble-updates", + "version": "2.42-4ubuntu2.10" + }, + "/noble-updates/binutils:arm64=2.42-4ubuntu2.10": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/binutils-aarch64-linux-gnu:arm64=2.42-4ubuntu2.10", + "/noble-updates/zlib1g:arm64=1:1.3.dfsg-3.1ubuntu2.1", + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libzstd1:arm64=1.5.5+dfsg2-2build1.1", + "/noble-updates/libstdc++6:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libsframe1:arm64=2.42-4ubuntu2.10", + "/noble/libjansson4:arm64=2.14-2build2", + "/noble-updates/libgprofng0:arm64=2.42-4ubuntu2.10", + "/noble-updates/libbinutils:arm64=2.42-4ubuntu2.10", + "/noble-updates/binutils-common:arm64=2.42-4ubuntu2.10", + "/noble-updates/libctf0:arm64=2.42-4ubuntu2.10", + "/noble-updates/libctf-nobfd0:arm64=2.42-4ubuntu2.10" + ], + "filename": "pool/main/b/binutils/binutils_2.42-4ubuntu2.10_arm64.deb", + "name": "binutils", + "section": "devel", + "sha256": "f3333e2ef1b857f35905194f42e9541ff6a42bef8fbba6d8bb56abff460d4fa2", + "size": 18116, + "suite": "noble-updates", + "version": "2.42-4ubuntu2.10" + }, + "/noble-updates/coreutils:amd64=9.4-3ubuntu6.2": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/libssl3t64:amd64=3.0.13-0ubuntu3.7", + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libselinux1:amd64=3.5-2ubuntu2.1", + "/noble-updates/libpcre2-8-0:amd64=10.42-4ubuntu2.1", + "/noble-updates/libgmp10:amd64=2:6.3.0+dfsg-2ubuntu6.1", + "/noble-updates/libattr1:amd64=1:2.5.2-1build1.1", + "/noble-updates/libacl1:amd64=2.3.2-1build1.1" + ], + "filename": "pool/main/c/coreutils/coreutils_9.4-3ubuntu6.2_amd64.deb", + "name": "coreutils", + "section": "utils", + "sha256": "d623abbb182acfead9d6352252e687674b6e5b3b79d42aa1324b08a3a6e1131b", + "size": 1411666, + "suite": "noble-updates", + "version": "9.4-3ubuntu6.2" + }, + "/noble-updates/coreutils:arm64=9.4-3ubuntu6.2": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/libssl3t64:arm64=3.0.13-0ubuntu3.7", + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libselinux1:arm64=3.5-2ubuntu2.1", + "/noble-updates/libpcre2-8-0:arm64=10.42-4ubuntu2.1", + "/noble-updates/libgmp10:arm64=2:6.3.0+dfsg-2ubuntu6.1", + "/noble-updates/libattr1:arm64=1:2.5.2-1build1.1", + "/noble-updates/libacl1:arm64=2.3.2-1build1.1" + ], + "filename": "pool/main/c/coreutils/coreutils_9.4-3ubuntu6.2_arm64.deb", + "name": "coreutils", + "section": "utils", + "sha256": "68f2a7cc1e164d669df3f8b5c1903947e1a74844d24843cf770bc63691753f16", + "size": 1362312, + "suite": "noble-updates", + "version": "9.4-3ubuntu6.2" + }, + "/noble-updates/gcc-13-base:amd64=13.3.0-6ubuntu2~24.04.1": { + "architecture": "amd64", + "depends_on": [], + "filename": "pool/main/g/gcc-13/gcc-13-base_13.3.0-6ubuntu2~24.04.1_amd64.deb", + "name": "gcc-13-base", + "section": "libs", + "sha256": "e859aca26585bb91113a451f1e66bc0e5283cb08797d679aacc1d936ae6dff8e", + "size": 51616, + "suite": "noble-updates", + "version": "13.3.0-6ubuntu2~24.04.1" + }, + "/noble-updates/gcc-13-base:arm64=13.3.0-6ubuntu2~24.04.1": { + "architecture": "arm64", + "depends_on": [], + "filename": "pool/main/g/gcc-13/gcc-13-base_13.3.0-6ubuntu2~24.04.1_arm64.deb", + "name": "gcc-13-base", + "section": "libs", + "sha256": "1c1ca489da0d48237036318189a9b6525abe7703b75495f257f68bccae8c45a7", + "size": 51632, + "suite": "noble-updates", + "version": "13.3.0-6ubuntu2~24.04.1" + }, + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1": { + "architecture": "amd64", + "depends_on": [], + "filename": "pool/main/g/gcc-14/gcc-14-base_14.2.0-4ubuntu2~24.04.1_amd64.deb", + "name": "gcc-14-base", + "section": "libs", + "sha256": "b95c172411a7fdae70307cf33a9f5320ba5e056b556454543dd5b679d5ce1c4f", + "size": 51014, + "suite": "noble-updates", + "version": "14.2.0-4ubuntu2~24.04.1" + }, + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1": { + "architecture": "arm64", + "depends_on": [], + "filename": "pool/main/g/gcc-14/gcc-14-base_14.2.0-4ubuntu2~24.04.1_arm64.deb", + "name": "gcc-14-base", + "section": "libs", + "sha256": "bddbe21061fdc73a23e7de79ece91693bf61aa22d634d1c69c5048385c114968", + "size": 50984, + "suite": "noble-updates", + "version": "14.2.0-4ubuntu2~24.04.1" + }, + "/noble-updates/libacl1:amd64=2.3.2-1build1.1": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/a/acl/libacl1_2.3.2-1build1.1_amd64.deb", + "name": "libacl1", + "section": "libs", + "sha256": "f2bfd3f8f00413d5f1f04fc723063803c56ac0f1e0efae3bc41f2d7276972ec3", + "size": 16792, + "suite": "noble-updates", + "version": "2.3.2-1build1.1" + }, + "/noble-updates/libacl1:arm64=2.3.2-1build1.1": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/a/acl/libacl1_2.3.2-1build1.1_arm64.deb", + "name": "libacl1", + "section": "libs", + "sha256": "ebc53ded654fcf4449df250cb563ff05f10d851e904e638f698dc7e921ffa47b", + "size": 17050, + "suite": "noble-updates", + "version": "2.3.2-1build1.1" + }, + "/noble-updates/libasan8:amd64=14.2.0-4ubuntu2~24.04.1": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/g/gcc-14/libasan8_14.2.0-4ubuntu2~24.04.1_amd64.deb", + "name": "libasan8", + "section": "libs", + "sha256": "8321aac6230fa1da320e76eb6288b7436164624aec449ed3933ea6c4cc86daac", + "size": 3026656, + "suite": "noble-updates", + "version": "14.2.0-4ubuntu2~24.04.1" + }, + "/noble-updates/libasan8:arm64=14.2.0-4ubuntu2~24.04.1": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/g/gcc-14/libasan8_14.2.0-4ubuntu2~24.04.1_arm64.deb", + "name": "libasan8", + "section": "libs", + "sha256": "0b7957bc5bbc5d30eabe8b71bab06e624ac530be7b1b1315d2bd54629cf2559f", + "size": 2927874, + "suite": "noble-updates", + "version": "14.2.0-4ubuntu2~24.04.1" + }, + "/noble-updates/libatomic1:amd64=14.2.0-4ubuntu2~24.04.1": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/g/gcc-14/libatomic1_14.2.0-4ubuntu2~24.04.1_amd64.deb", + "name": "libatomic1", + "section": "libs", + "sha256": "fe49cbbc7be753528380c724a8eef5f1e31dffa9221f692c5069048d81c7449d", + "size": 10466, + "suite": "noble-updates", + "version": "14.2.0-4ubuntu2~24.04.1" + }, + "/noble-updates/libatomic1:arm64=14.2.0-4ubuntu2~24.04.1": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/g/gcc-14/libatomic1_14.2.0-4ubuntu2~24.04.1_arm64.deb", + "name": "libatomic1", + "section": "libs", + "sha256": "fdeab74e7ad8572cf69c7024e8040c7ac851f6e667d35f0d429e7a0352840f73", + "size": 11604, + "suite": "noble-updates", + "version": "14.2.0-4ubuntu2~24.04.1" + }, + "/noble-updates/libattr1:amd64=1:2.5.2-1build1.1": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/a/attr/libattr1_2.5.2-1build1.1_amd64.deb", + "name": "libattr1", + "section": "libs", + "sha256": "d880fdb65dec669fcc4c5b34c5cbfee6c014ec4bdf6430ecdc7f10efffb28b2e", + "size": 11354, + "suite": "noble-updates", + "version": "1:2.5.2-1build1.1" + }, + "/noble-updates/libattr1:arm64=1:2.5.2-1build1.1": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/a/attr/libattr1_2.5.2-1build1.1_arm64.deb", + "name": "libattr1", + "section": "libs", + "sha256": "d441ec6f5df6ffa76d37fe5c7eecbd42ae1876121baf3e511de57afe79538f1d", + "size": 11026, + "suite": "noble-updates", + "version": "1:2.5.2-1build1.1" + }, + "/noble-updates/libbinutils:amd64=2.42-4ubuntu2.10": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/binutils-common:amd64=2.42-4ubuntu2.10", + "/noble-updates/zlib1g:amd64=1:1.3.dfsg-3.1ubuntu2.1", + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libzstd1:amd64=1.5.5+dfsg2-2build1.1", + "/noble-updates/libsframe1:amd64=2.42-4ubuntu2.10" + ], + "filename": "pool/main/b/binutils/libbinutils_2.42-4ubuntu2.10_amd64.deb", + "name": "libbinutils", + "section": "devel", + "sha256": "064dce00ce94e1fc2d33779cb0071088f4c8aac79e85345f2e78a020f7d14699", + "size": 576834, + "suite": "noble-updates", + "version": "2.42-4ubuntu2.10" + }, + "/noble-updates/libbinutils:arm64=2.42-4ubuntu2.10": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/binutils-common:arm64=2.42-4ubuntu2.10", + "/noble-updates/zlib1g:arm64=1:1.3.dfsg-3.1ubuntu2.1", + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libzstd1:arm64=1.5.5+dfsg2-2build1.1", + "/noble-updates/libsframe1:arm64=2.42-4ubuntu2.10" + ], + "filename": "pool/main/b/binutils/libbinutils_2.42-4ubuntu2.10_arm64.deb", + "name": "libbinutils", + "section": "devel", + "sha256": "c86634a7471aa27439b9bef7bd91ca8136f01f938c93bf6abe16a8fca758e849", + "size": 766448, + "suite": "noble-updates", + "version": "2.42-4ubuntu2.10" + }, + "/noble-updates/libc-dev-bin:amd64=2.39-0ubuntu8.7": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/g/glibc/libc-dev-bin_2.39-0ubuntu8.7_amd64.deb", + "name": "libc-dev-bin", + "section": "libdevel", + "sha256": "83291a1d9b26262ac8f44a3bb188ce2cb796a0543134aae00e19db066c84dfdd", + "size": 20418, + "suite": "noble-updates", + "version": "2.39-0ubuntu8.7" + }, + "/noble-updates/libc-dev-bin:arm64=2.39-0ubuntu8.7": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/g/glibc/libc-dev-bin_2.39-0ubuntu8.7_arm64.deb", + "name": "libc-dev-bin", + "section": "libdevel", + "sha256": "d76ef96feaf47f698661236af9f45d2eabd9805398f49b6c79f34145d636c337", + "size": 19680, + "suite": "noble-updates", + "version": "2.39-0ubuntu8.7" + }, + "/noble-updates/libc6-dev:amd64=2.39-0ubuntu8.7": { + "architecture": "amd64", + "depends_on": [ + "/noble/rpcsvc-proto:amd64=1.4.2-0ubuntu7", + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble/libcrypt-dev:amd64=1:4.4.36-4build1", + "/noble/libcrypt1:amd64=1:4.4.36-4build1", + "/noble-updates/linux-libc-dev:amd64=6.8.0-106.106", + "/noble-updates/libc-dev-bin:amd64=2.39-0ubuntu8.7" + ], + "filename": "pool/main/g/glibc/libc6-dev_2.39-0ubuntu8.7_amd64.deb", + "name": "libc6-dev", + "section": "libdevel", + "sha256": "bbf5a155039042634961a61276650631ee47b9e721f91f8dbb731b0bbe046df3", + "size": 2124026, + "suite": "noble-updates", + "version": "2.39-0ubuntu8.7" + }, + "/noble-updates/libc6-dev:arm64=2.39-0ubuntu8.7": { + "architecture": "arm64", + "depends_on": [ + "/noble/rpcsvc-proto:arm64=1.4.2-0ubuntu7", + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble/libcrypt-dev:arm64=1:4.4.36-4build1", + "/noble/libcrypt1:arm64=1:4.4.36-4build1", + "/noble-updates/linux-libc-dev:arm64=6.8.0-106.106", + "/noble-updates/libc-dev-bin:arm64=2.39-0ubuntu8.7" + ], + "filename": "pool/main/g/glibc/libc6-dev_2.39-0ubuntu8.7_arm64.deb", + "name": "libc6-dev", + "section": "libdevel", + "sha256": "d00158c84302fa21231a4cca4131de60134c2359ea8e5641b12e476bd5585aff", + "size": 1596158, + "suite": "noble-updates", + "version": "2.39-0ubuntu8.7" + }, + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/g/glibc/libc6_2.39-0ubuntu8.7_amd64.deb", + "name": "libc6", + "section": "libs", + "sha256": "955644e8bc2930a9bf8eea5e4c2237c8a118c1e2ac2845b993b6f7f35eefd293", + "size": 3262920, + "suite": "noble-updates", + "version": "2.39-0ubuntu8.7" + }, + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/g/glibc/libc6_2.39-0ubuntu8.7_arm64.deb", + "name": "libc6", + "section": "libs", + "sha256": "7d25b6ffc4df6deefd1a48efff5792d6a6bd89ac064a2a8b88e796d3d533e095", + "size": 2776586, + "suite": "noble-updates", + "version": "2.39-0ubuntu8.7" + }, + "/noble-updates/libctf-nobfd0:amd64=2.42-4ubuntu2.10": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/zlib1g:amd64=1:1.3.dfsg-3.1ubuntu2.1", + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/b/binutils/libctf-nobfd0_2.42-4ubuntu2.10_amd64.deb", + "name": "libctf-nobfd0", + "section": "devel", + "sha256": "da352eb7fa6c4369d2a6c1e5e680f574eda2e38576563326b18d9e47e61c4078", + "size": 98012, + "suite": "noble-updates", + "version": "2.42-4ubuntu2.10" + }, + "/noble-updates/libctf-nobfd0:arm64=2.42-4ubuntu2.10": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/zlib1g:arm64=1:1.3.dfsg-3.1ubuntu2.1", + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/b/binutils/libctf-nobfd0_2.42-4ubuntu2.10_arm64.deb", + "name": "libctf-nobfd0", + "section": "devel", + "sha256": "c80063890a430e42181e7ad3f0277bb563abc22d556fd5e65c798c4ee8318684", + "size": 100868, + "suite": "noble-updates", + "version": "2.42-4ubuntu2.10" + }, + "/noble-updates/libctf0:amd64=2.42-4ubuntu2.10": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/zlib1g:amd64=1:1.3.dfsg-3.1ubuntu2.1", + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libbinutils:amd64=2.42-4ubuntu2.10", + "/noble-updates/binutils-common:amd64=2.42-4ubuntu2.10", + "/noble-updates/libzstd1:amd64=1.5.5+dfsg2-2build1.1", + "/noble-updates/libsframe1:amd64=2.42-4ubuntu2.10" + ], + "filename": "pool/main/b/binutils/libctf0_2.42-4ubuntu2.10_amd64.deb", + "name": "libctf0", + "section": "devel", + "sha256": "7ec86d697c3668503c85f308a6832f092075b5880ad002f22185264da0bd4645", + "size": 94474, + "suite": "noble-updates", + "version": "2.42-4ubuntu2.10" + }, + "/noble-updates/libctf0:arm64=2.42-4ubuntu2.10": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/zlib1g:arm64=1:1.3.dfsg-3.1ubuntu2.1", + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libbinutils:arm64=2.42-4ubuntu2.10", + "/noble-updates/binutils-common:arm64=2.42-4ubuntu2.10", + "/noble-updates/libzstd1:arm64=1.5.5+dfsg2-2build1.1", + "/noble-updates/libsframe1:arm64=2.42-4ubuntu2.10" + ], + "filename": "pool/main/b/binutils/libctf0_2.42-4ubuntu2.10_arm64.deb", + "name": "libctf0", + "section": "devel", + "sha256": "2516f90d292d01eefe9207a623251550d93665f25d262f206f5c6b803389ed6b", + "size": 95744, + "suite": "noble-updates", + "version": "2.42-4ubuntu2.10" + }, + "/noble-updates/libgcc-13-dev:amd64=13.3.0-6ubuntu2~24.04.1": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/libquadmath0:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libhwasan0:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libubsan1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libstdc++6:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libtsan2:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/liblsan0:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libasan8:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libatomic1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libitm1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libgomp1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-13-base:amd64=13.3.0-6ubuntu2~24.04.1" + ], + "filename": "pool/main/g/gcc-13/libgcc-13-dev_13.3.0-6ubuntu2~24.04.1_amd64.deb", + "name": "libgcc-13-dev", + "section": "libdevel", + "sha256": "cd689db2691edaa10f37329307292796bb599e722e0505c79e14caaa1fe9a93a", + "size": 2680642, + "suite": "noble-updates", + "version": "13.3.0-6ubuntu2~24.04.1" + }, + "/noble-updates/libgcc-13-dev:arm64=13.3.0-6ubuntu2~24.04.1": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/libhwasan0:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libubsan1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libstdc++6:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libtsan2:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/liblsan0:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libasan8:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libatomic1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libitm1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libgomp1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-13-base:arm64=13.3.0-6ubuntu2~24.04.1" + ], + "filename": "pool/main/g/gcc-13/libgcc-13-dev_13.3.0-6ubuntu2~24.04.1_arm64.deb", + "name": "libgcc-13-dev", + "section": "libdevel", + "sha256": "609a9410d9a1f25a1cb7847de92ee9f438336a0a3a82d282c3686f52ddd61526", + "size": 2473368, + "suite": "noble-updates", + "version": "13.3.0-6ubuntu2~24.04.1" + }, + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/g/gcc-14/libgcc-s1_14.2.0-4ubuntu2~24.04.1_amd64.deb", + "name": "libgcc-s1", + "section": "libs", + "sha256": "aa7fadbe33b78bcf99885318040601c550c208929565b179891d9a3cc2aa68cd", + "size": 78392, + "suite": "noble-updates", + "version": "14.2.0-4ubuntu2~24.04.1" + }, + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/g/gcc-14/libgcc-s1_14.2.0-4ubuntu2~24.04.1_arm64.deb", + "name": "libgcc-s1", + "section": "libs", + "sha256": "5b191f79ad985a9a653dbba45214619f729f9178a9bdf92f7c68db06c50d070b", + "size": 61884, + "suite": "noble-updates", + "version": "14.2.0-4ubuntu2~24.04.1" + }, + "/noble-updates/libgmp10:amd64=2:6.3.0+dfsg-2ubuntu6.1": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/g/gmp/libgmp10_6.3.0+dfsg-2ubuntu6.1_amd64.deb", + "name": "libgmp10", + "section": "libs", + "sha256": "285f8a505dfa8e1b33f357a9d8d3477ad35bf18c0b34771a6df4c25923f3ae0d", + "size": 253460, + "suite": "noble-updates", + "version": "2:6.3.0+dfsg-2ubuntu6.1" + }, + "/noble-updates/libgmp10:arm64=2:6.3.0+dfsg-2ubuntu6.1": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/g/gmp/libgmp10_6.3.0+dfsg-2ubuntu6.1_arm64.deb", + "name": "libgmp10", + "section": "libs", + "sha256": "5a783429ec1a29fb74a9a59c1699579dd9742bd35722280b9ce10e1f3916b003", + "size": 243166, + "suite": "noble-updates", + "version": "2:6.3.0+dfsg-2ubuntu6.1" + }, + "/noble-updates/libgomp1:amd64=14.2.0-4ubuntu2~24.04.1": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/g/gcc-14/libgomp1_14.2.0-4ubuntu2~24.04.1_amd64.deb", + "name": "libgomp1", + "section": "libs", + "sha256": "e8a95ec58125b4933597f30ff56c2ae10edf90f287262e366d4b6edea3019144", + "size": 148062, + "suite": "noble-updates", + "version": "14.2.0-4ubuntu2~24.04.1" + }, + "/noble-updates/libgomp1:arm64=14.2.0-4ubuntu2~24.04.1": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/g/gcc-14/libgomp1_14.2.0-4ubuntu2~24.04.1_arm64.deb", + "name": "libgomp1", + "section": "libs", + "sha256": "cd49d2e8834d41a6618f097b678980defeebc47271bc7c5aa8ea2c2f1a53b7a6", + "size": 144962, + "suite": "noble-updates", + "version": "14.2.0-4ubuntu2~24.04.1" + }, + "/noble-updates/libgprofng0:amd64=2.42-4ubuntu2.10": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/zlib1g:amd64=1:1.3.dfsg-3.1ubuntu2.1", + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libstdc++6:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libbinutils:amd64=2.42-4ubuntu2.10", + "/noble-updates/binutils-common:amd64=2.42-4ubuntu2.10", + "/noble-updates/libzstd1:amd64=1.5.5+dfsg2-2build1.1", + "/noble-updates/libsframe1:amd64=2.42-4ubuntu2.10" + ], + "filename": "pool/main/b/binutils/libgprofng0_2.42-4ubuntu2.10_amd64.deb", + "name": "libgprofng0", + "section": "devel", + "sha256": "1b7e3c2fc162e8358ca6e5a3fffdb4d0d632f790630323215841bb36a63c0ab8", + "size": 848684, + "suite": "noble-updates", + "version": "2.42-4ubuntu2.10" + }, + "/noble-updates/libgprofng0:arm64=2.42-4ubuntu2.10": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/zlib1g:arm64=1:1.3.dfsg-3.1ubuntu2.1", + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libstdc++6:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libbinutils:arm64=2.42-4ubuntu2.10", + "/noble-updates/binutils-common:arm64=2.42-4ubuntu2.10", + "/noble-updates/libzstd1:arm64=1.5.5+dfsg2-2build1.1", + "/noble-updates/libsframe1:arm64=2.42-4ubuntu2.10" + ], + "filename": "pool/main/b/binutils/libgprofng0_2.42-4ubuntu2.10_arm64.deb", + "name": "libgprofng0", + "section": "devel", + "sha256": "ee37f8539eab25c43bd622589932006c6ba90d44e2b7442325fc237f01a3ab5b", + "size": 776452, + "suite": "noble-updates", + "version": "2.42-4ubuntu2.10" + }, + "/noble-updates/libhwasan0:amd64=14.2.0-4ubuntu2~24.04.1": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/g/gcc-14/libhwasan0_14.2.0-4ubuntu2~24.04.1_amd64.deb", + "name": "libhwasan0", + "section": "libs", + "sha256": "2195318cfe68fe16b601913ef7b33c9a900372f57861643fdc9ae6fef84534cd", + "size": 1640706, + "suite": "noble-updates", + "version": "14.2.0-4ubuntu2~24.04.1" + }, + "/noble-updates/libhwasan0:arm64=14.2.0-4ubuntu2~24.04.1": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/g/gcc-14/libhwasan0_14.2.0-4ubuntu2~24.04.1_arm64.deb", + "name": "libhwasan0", + "section": "libs", + "sha256": "44851293eede488ad89fd12db1bd8bfcb2b732f68ad4c13b83d6e0ce5d7b4bfa", + "size": 1604938, + "suite": "noble-updates", + "version": "14.2.0-4ubuntu2~24.04.1" + }, + "/noble-updates/libitm1:amd64=14.2.0-4ubuntu2~24.04.1": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/g/gcc-14/libitm1_14.2.0-4ubuntu2~24.04.1_amd64.deb", + "name": "libitm1", + "section": "libs", + "sha256": "1fca498129dd3510294809d77ee754f72a9de281111200e9b7b9a5adf37faa9f", + "size": 29702, + "suite": "noble-updates", + "version": "14.2.0-4ubuntu2~24.04.1" + }, + "/noble-updates/libitm1:arm64=14.2.0-4ubuntu2~24.04.1": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/g/gcc-14/libitm1_14.2.0-4ubuntu2~24.04.1_arm64.deb", + "name": "libitm1", + "section": "libs", + "sha256": "7f7d7c5a26888e5e34eb62a193762eb6a8d5805c5d6f22248f638193d1804993", + "size": 28154, + "suite": "noble-updates", + "version": "14.2.0-4ubuntu2~24.04.1" + }, + "/noble-updates/liblsan0:amd64=14.2.0-4ubuntu2~24.04.1": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/g/gcc-14/liblsan0_14.2.0-4ubuntu2~24.04.1_amd64.deb", + "name": "liblsan0", + "section": "libs", + "sha256": "dc0c2a1a053e833ba4d71e1ec2ba4244fe301761ad4a91d6725f927a52d86a14", + "size": 1321652, + "suite": "noble-updates", + "version": "14.2.0-4ubuntu2~24.04.1" + }, + "/noble-updates/liblsan0:arm64=14.2.0-4ubuntu2~24.04.1": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/g/gcc-14/liblsan0_14.2.0-4ubuntu2~24.04.1_arm64.deb", + "name": "liblsan0", + "section": "libs", + "sha256": "21bb80325192b0cce6ccd041a8d823609c5e656bdda43368db6cdfe501593188", + "size": 1289238, + "suite": "noble-updates", + "version": "14.2.0-4ubuntu2~24.04.1" + }, + "/noble-updates/libpcre2-8-0:amd64=10.42-4ubuntu2.1": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/p/pcre2/libpcre2-8-0_10.42-4ubuntu2.1_amd64.deb", + "name": "libpcre2-8-0", + "section": "libs", + "sha256": "110a797a57673d3ee497a141cf988199258058c57525799c63194d81822529a0", + "size": 226662, + "suite": "noble-updates", + "version": "10.42-4ubuntu2.1" + }, + "/noble-updates/libpcre2-8-0:arm64=10.42-4ubuntu2.1": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/p/pcre2/libpcre2-8-0_10.42-4ubuntu2.1_arm64.deb", + "name": "libpcre2-8-0", + "section": "libs", + "sha256": "7581764969752953aa1f991ce143bea594d2c5d0c36c2cc98c3c614c172aba93", + "size": 211856, + "suite": "noble-updates", + "version": "10.42-4ubuntu2.1" + }, + "/noble-updates/libquadmath0:amd64=14.2.0-4ubuntu2~24.04.1": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/g/gcc-14/libquadmath0_14.2.0-4ubuntu2~24.04.1_amd64.deb", + "name": "libquadmath0", + "section": "libs", + "sha256": "dc8f0ca542e09d662f29370c8393c016440dd4bc5c996c5fcc19f632b63ce3b0", + "size": 153316, + "suite": "noble-updates", + "version": "14.2.0-4ubuntu2~24.04.1" + }, + "/noble-updates/libselinux1:amd64=3.5-2ubuntu2.1": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/libpcre2-8-0:amd64=10.42-4ubuntu2.1", + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/libs/libselinux/libselinux1_3.5-2ubuntu2.1_amd64.deb", + "name": "libselinux1", + "section": "libs", + "sha256": "6abaa6c26f46ef17764c4a753e0e84de1cdadde5634fd2987621fdc617988d19", + "size": 79660, + "suite": "noble-updates", + "version": "3.5-2ubuntu2.1" + }, + "/noble-updates/libselinux1:arm64=3.5-2ubuntu2.1": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/libpcre2-8-0:arm64=10.42-4ubuntu2.1", + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/libs/libselinux/libselinux1_3.5-2ubuntu2.1_arm64.deb", + "name": "libselinux1", + "section": "libs", + "sha256": "56630c4f009754e76808bf755072e634f8785a4dfbc8b1445213149e682f1502", + "size": 79946, + "suite": "noble-updates", + "version": "3.5-2ubuntu2.1" + }, + "/noble-updates/libsframe1:amd64=2.42-4ubuntu2.10": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/b/binutils/libsframe1_2.42-4ubuntu2.10_amd64.deb", + "name": "libsframe1", + "section": "devel", + "sha256": "72093fb456864db55f1352bfa5e952a94f7abaff64e71dff1fbf001db1984564", + "size": 15724, + "suite": "noble-updates", + "version": "2.42-4ubuntu2.10" + }, + "/noble-updates/libsframe1:arm64=2.42-4ubuntu2.10": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/b/binutils/libsframe1_2.42-4ubuntu2.10_arm64.deb", + "name": "libsframe1", + "section": "devel", + "sha256": "4e2ef8c92da324c7f8e8f055c8c698e37c93b886602766e7e72ac178835c9a31", + "size": 15428, + "suite": "noble-updates", + "version": "2.42-4ubuntu2.10" + }, + "/noble-updates/libssl3t64:amd64=3.0.13-0ubuntu3.7": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/o/openssl/libssl3t64_3.0.13-0ubuntu3.7_amd64.deb", + "name": "libssl3t64", + "section": "libs", + "sha256": "f9d19e6c1500cc58d90a001ef299ffa3b711e17dc5e95bf9962fb5fe1899264a", + "size": 1941650, + "suite": "noble-updates", + "version": "3.0.13-0ubuntu3.7" + }, + "/noble-updates/libssl3t64:arm64=3.0.13-0ubuntu3.7": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/o/openssl/libssl3t64_3.0.13-0ubuntu3.7_arm64.deb", + "name": "libssl3t64", + "section": "libs", + "sha256": "b9fbea00061d75dd4aa5342e9ed3c86eb544c99ccb4ed971f770ef6156fa0f19", + "size": 1798052, + "suite": "noble-updates", + "version": "3.0.13-0ubuntu3.7" + }, + "/noble-updates/libstdc++-13-dev:amd64=13.3.0-6ubuntu2~24.04.1": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/libc6-dev:amd64=2.39-0ubuntu8.7", + "/noble/rpcsvc-proto:amd64=1.4.2-0ubuntu7", + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble/libcrypt-dev:amd64=1:4.4.36-4build1", + "/noble/libcrypt1:amd64=1:4.4.36-4build1", + "/noble-updates/linux-libc-dev:amd64=6.8.0-106.106", + "/noble-updates/libc-dev-bin:amd64=2.39-0ubuntu8.7", + "/noble-updates/libstdc++6:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libgcc-13-dev:amd64=13.3.0-6ubuntu2~24.04.1", + "/noble-updates/libquadmath0:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libhwasan0:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libubsan1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libtsan2:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/liblsan0:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libasan8:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libatomic1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libitm1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libgomp1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-13-base:amd64=13.3.0-6ubuntu2~24.04.1" + ], + "filename": "pool/main/g/gcc-13/libstdc++-13-dev_13.3.0-6ubuntu2~24.04.1_amd64.deb", + "name": "libstdc++-13-dev", + "section": "libdevel", + "sha256": "ee5633e863e19c3381ed97842ce35ed32ede96a3d1ae4e94c051d3036fe21347", + "size": 2419834, + "suite": "noble-updates", + "version": "13.3.0-6ubuntu2~24.04.1" + }, + "/noble-updates/libstdc++-13-dev:arm64=13.3.0-6ubuntu2~24.04.1": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/libc6-dev:arm64=2.39-0ubuntu8.7", + "/noble/rpcsvc-proto:arm64=1.4.2-0ubuntu7", + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble/libcrypt-dev:arm64=1:4.4.36-4build1", + "/noble/libcrypt1:arm64=1:4.4.36-4build1", + "/noble-updates/linux-libc-dev:arm64=6.8.0-106.106", + "/noble-updates/libc-dev-bin:arm64=2.39-0ubuntu8.7", + "/noble-updates/libstdc++6:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libgcc-13-dev:arm64=13.3.0-6ubuntu2~24.04.1", + "/noble-updates/libhwasan0:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libubsan1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libtsan2:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/liblsan0:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libasan8:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libatomic1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libitm1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libgomp1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-13-base:arm64=13.3.0-6ubuntu2~24.04.1" + ], + "filename": "pool/main/g/gcc-13/libstdc++-13-dev_13.3.0-6ubuntu2~24.04.1_arm64.deb", + "name": "libstdc++-13-dev", + "section": "libdevel", + "sha256": "e4911c9281d73b318ca47cb7976011a7dc13e299a91a06bc6d3e2d174cc2ce51", + "size": 2397276, + "suite": "noble-updates", + "version": "13.3.0-6ubuntu2~24.04.1" + }, + "/noble-updates/libstdc++6:amd64=14.2.0-4ubuntu2~24.04.1": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/g/gcc-14/libstdc++6_14.2.0-4ubuntu2~24.04.1_amd64.deb", + "name": "libstdc++6", + "section": "libs", + "sha256": "a51f8de7829211db961a31f02158058ad1a95f92ac6d0a5dff6350e2821c54c0", + "size": 792064, + "suite": "noble-updates", + "version": "14.2.0-4ubuntu2~24.04.1" + }, + "/noble-updates/libstdc++6:arm64=14.2.0-4ubuntu2~24.04.1": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/g/gcc-14/libstdc++6_14.2.0-4ubuntu2~24.04.1_arm64.deb", + "name": "libstdc++6", + "section": "libs", + "sha256": "f84a05ac45a6884109b6527e911081a38263b89e042fc94a338cf975f61a330c", + "size": 750976, + "suite": "noble-updates", + "version": "14.2.0-4ubuntu2~24.04.1" + }, + "/noble-updates/libtsan2:amd64=14.2.0-4ubuntu2~24.04.1": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/g/gcc-14/libtsan2_14.2.0-4ubuntu2~24.04.1_amd64.deb", + "name": "libtsan2", + "section": "libs", + "sha256": "8cbcc9b3ae5ef23b449383d47a9035b27596e307d7dce7df9b83d47a7acd1d91", + "size": 2771910, + "suite": "noble-updates", + "version": "14.2.0-4ubuntu2~24.04.1" + }, + "/noble-updates/libtsan2:arm64=14.2.0-4ubuntu2~24.04.1": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/g/gcc-14/libtsan2_14.2.0-4ubuntu2~24.04.1_arm64.deb", + "name": "libtsan2", + "section": "libs", + "sha256": "00beb501f4979c7fd3a978b52a489ea7dbfc1203e5c56936e4c0ea5c2032fb3d", + "size": 2696830, + "suite": "noble-updates", + "version": "14.2.0-4ubuntu2~24.04.1" + }, + "/noble-updates/libubsan1:amd64=14.2.0-4ubuntu2~24.04.1": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/libstdc++6:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/g/gcc-14/libubsan1_14.2.0-4ubuntu2~24.04.1_amd64.deb", + "name": "libubsan1", + "section": "libs", + "sha256": "a16dea3abe2dcac99bcfae27e7e5672fde64573c3c170dcb0cd55631238f9814", + "size": 1183812, + "suite": "noble-updates", + "version": "14.2.0-4ubuntu2~24.04.1" + }, + "/noble-updates/libubsan1:arm64=14.2.0-4ubuntu2~24.04.1": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/libstdc++6:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/g/gcc-14/libubsan1_14.2.0-4ubuntu2~24.04.1_arm64.deb", + "name": "libubsan1", + "section": "libs", + "sha256": "a5b4383f70f41cd949315c89e99e6416a0ee48037f7c5ea6b33f88f3c733757a", + "size": 1157016, + "suite": "noble-updates", + "version": "14.2.0-4ubuntu2~24.04.1" + }, + "/noble-updates/libzstd1:amd64=1.5.5+dfsg2-2build1.1": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/libz/libzstd/libzstd1_1.5.5+dfsg2-2build1.1_amd64.deb", + "name": "libzstd1", + "section": "libs", + "sha256": "dfcf25061e07aad7efd3f4f880ba5ad4d4d09ebe7fc8cc77ab6b8a161d6d4727", + "size": 299472, + "suite": "noble-updates", + "version": "1.5.5+dfsg2-2build1.1" + }, + "/noble-updates/libzstd1:arm64=1.5.5+dfsg2-2build1.1": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/libz/libzstd/libzstd1_1.5.5+dfsg2-2build1.1_arm64.deb", + "name": "libzstd1", + "section": "libs", + "sha256": "ea7d6e9fde577ea14dbf07fdfb74d6287eb09c6cba4a9d63abdcb87b0ec54bcc", + "size": 271278, + "suite": "noble-updates", + "version": "1.5.5+dfsg2-2build1.1" + }, + "/noble-updates/linux-libc-dev:amd64=6.8.0-106.106": { + "architecture": "amd64", + "depends_on": [], + "filename": "pool/main/l/linux/linux-libc-dev_6.8.0-106.106_amd64.deb", + "name": "linux-libc-dev", + "section": "devel", + "sha256": "dbef5eaae5d6497ccf30c6a082bbba5a294ab3f8e210ae6ff936caf942b8ed2d", + "size": 2094960, + "suite": "noble-updates", + "version": "6.8.0-106.106" + }, + "/noble-updates/linux-libc-dev:arm64=6.8.0-106.106": { + "architecture": "arm64", + "depends_on": [], + "filename": "pool/main/l/linux/linux-libc-dev_6.8.0-106.106_arm64.deb", + "name": "linux-libc-dev", + "section": "devel", + "sha256": "55b43c3791fec36a0a217fb2fa1572d599370d38674cfeae8cbc9d102b87ebfd", + "size": 2068572, + "suite": "noble-updates", + "version": "6.8.0-106.106" + }, + "/noble-updates/zlib1g:amd64=1:1.3.dfsg-3.1ubuntu2.1": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/z/zlib/zlib1g_1.3.dfsg-3.1ubuntu2.1_amd64.deb", + "name": "zlib1g", + "section": "libs", + "sha256": "7074b6a2f6367a10d280c00a1cb02e74277709180bab4f2491a2f355ab2d6c20", + "size": 62850, + "suite": "noble-updates", + "version": "1:1.3.dfsg-3.1ubuntu2.1" + }, + "/noble-updates/zlib1g:arm64=1:1.3.dfsg-3.1ubuntu2.1": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/z/zlib/zlib1g_1.3.dfsg-3.1ubuntu2.1_arm64.deb", + "name": "zlib1g", + "section": "libs", + "sha256": "cbe3d39ec32d3cc27c021ae4af11e7c67bdf9d700d573207e0941d4038056278", + "size": 61736, + "suite": "noble-updates", + "version": "1:1.3.dfsg-3.1ubuntu2.1" + }, + "/noble/bash:amd64=5.2.21-2ubuntu4": { + "architecture": "amd64", + "depends_on": [ + "/noble/debianutils:amd64=5.17build1", + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/base-files:amd64=13ubuntu10.4", + "/noble/libcrypt1:amd64=1:4.4.36-4build1", + "/noble/mawk:amd64=1.3.4.20240123-1build1", + "/noble/libtinfo6:amd64=6.4+20240113-1ubuntu2" + ], + "filename": "pool/main/b/bash/bash_5.2.21-2ubuntu4_amd64.deb", + "name": "bash", + "section": "shells", + "sha256": "73de311a21e094e29ac01527d2b52226cc87fde0a5b57032902251b426d92c66", + "size": 794086, + "suite": "noble", + "version": "5.2.21-2ubuntu4" + }, + "/noble/bash:arm64=5.2.21-2ubuntu4": { + "architecture": "arm64", + "depends_on": [ + "/noble/debianutils:arm64=5.17build1", + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/base-files:arm64=13ubuntu10.4", + "/noble/libcrypt1:arm64=1:4.4.36-4build1", + "/noble/mawk:arm64=1.3.4.20240123-1build1", + "/noble/libtinfo6:arm64=6.4+20240113-1ubuntu2" + ], + "filename": "pool/main/b/bash/bash_5.2.21-2ubuntu4_arm64.deb", + "name": "bash", + "section": "shells", + "sha256": "1cb8aa182b8124a5304b5d5cf24300e295c9f6ff22a2565fcecae686c0492f09", + "size": 780262, + "suite": "noble", + "version": "5.2.21-2ubuntu4" + }, + "/noble/debianutils:amd64=5.17build1": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/d/debianutils/debianutils_5.17build1_amd64.deb", + "name": "debianutils", + "section": "utils", + "sha256": "1047a9a57018e18531f76e5b00e226a68554b6f1d147f2a5c1b32518c7b20636", + "size": 89890, + "suite": "noble", + "version": "5.17build1" + }, + "/noble/debianutils:arm64=5.17build1": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/d/debianutils/debianutils_5.17build1_arm64.deb", + "name": "debianutils", + "section": "utils", + "sha256": "7419da04f9c467986b2176e799f3683b9403c643966084d0f6054f2a5b8919e9", + "size": 90236, + "suite": "noble", + "version": "5.17build1" + }, + "/noble/libcrypt-dev:amd64=1:4.4.36-4build1": { + "architecture": "amd64", + "depends_on": [ + "/noble/libcrypt1:amd64=1:4.4.36-4build1", + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/libx/libxcrypt/libcrypt-dev_4.4.36-4build1_amd64.deb", + "name": "libcrypt-dev", + "section": "libdevel", + "sha256": "2edff420ef80b4a3f3751e65c33423ef30e563122a58b759e4854ea8d84ba1b1", + "size": 111780, + "suite": "noble", + "version": "1:4.4.36-4build1" + }, + "/noble/libcrypt-dev:arm64=1:4.4.36-4build1": { + "architecture": "arm64", + "depends_on": [ + "/noble/libcrypt1:arm64=1:4.4.36-4build1", + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/libx/libxcrypt/libcrypt-dev_4.4.36-4build1_arm64.deb", + "name": "libcrypt-dev", + "section": "libdevel", + "sha256": "cadcc00021aa1082a8cb5cd1c2686b25b7a4d396f2029eaa1b12159ca46f1766", + "size": 118238, + "suite": "noble", + "version": "1:4.4.36-4build1" + }, + "/noble/libcrypt1:amd64=1:4.4.36-4build1": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/libx/libxcrypt/libcrypt1_4.4.36-4build1_amd64.deb", + "name": "libcrypt1", + "section": "libs", + "sha256": "9474785cd6f398512bf8c305c3901dbb111569dccb6f5832002373c0a8ac5832", + "size": 82302, + "suite": "noble", + "version": "1:4.4.36-4build1" + }, + "/noble/libcrypt1:arm64=1:4.4.36-4build1": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/libx/libxcrypt/libcrypt1_4.4.36-4build1_arm64.deb", + "name": "libcrypt1", + "section": "libs", + "sha256": "5cd73ba112507dabd8e43b528ca9f530719a370e014b8e3e797770e6e940cccf", + "size": 85888, + "suite": "noble", + "version": "1:4.4.36-4build1" + }, + "/noble/libjansson4:amd64=2.14-2build2": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/j/jansson/libjansson4_2.14-2build2_amd64.deb", + "name": "libjansson4", + "section": "libs", + "sha256": "0cf79113f5d193ce9af2be2ff4b2c3b30dd4e55a0b6c47f7d28f6c849ff3aa60", + "size": 32830, + "suite": "noble", + "version": "2.14-2build2" + }, + "/noble/libjansson4:arm64=2.14-2build2": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/j/jansson/libjansson4_2.14-2build2_arm64.deb", + "name": "libjansson4", + "section": "libs", + "sha256": "a9d513eae76f4efb1c7370413bd21634fcfc0955e103d26af95f298af6c90abd", + "size": 34362, + "suite": "noble", + "version": "2.14-2build2" + }, + "/noble/libtinfo6:amd64=6.4+20240113-1ubuntu2": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/n/ncurses/libtinfo6_6.4+20240113-1ubuntu2_amd64.deb", + "name": "libtinfo6", + "section": "libs", + "sha256": "53e1e1753729d04cf65b05e6e58abe06e2bb76cc07eff0e1b2a638a638ca209b", + "size": 107794, + "suite": "noble", + "version": "6.4+20240113-1ubuntu2" + }, + "/noble/libtinfo6:arm64=6.4+20240113-1ubuntu2": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/n/ncurses/libtinfo6_6.4+20240113-1ubuntu2_arm64.deb", + "name": "libtinfo6", + "section": "libs", + "sha256": "e8d06277be81d0f6e7d49ce796a477a9fc88e755bf3048e0afe44fc14a310b72", + "size": 104360, + "suite": "noble", + "version": "6.4+20240113-1ubuntu2" + }, + "/noble/mawk:amd64=1.3.4.20240123-1build1": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/m/mawk/mawk_1.3.4.20240123-1build1_amd64.deb", + "name": "mawk", + "section": "utils", + "sha256": "dc7f7f4dad4b48f6012ea65de3198d8376604afef39f06d65ec6167740e203c9", + "size": 127222, + "suite": "noble", + "version": "1.3.4.20240123-1build1" + }, + "/noble/mawk:arm64=1.3.4.20240123-1build1": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/m/mawk/mawk_1.3.4.20240123-1build1_arm64.deb", + "name": "mawk", + "section": "utils", + "sha256": "a6fa75e49de6327ccdbf664e905cde229df77116a966c310e81c778eba756dca", + "size": 123594, + "suite": "noble", + "version": "1.3.4.20240123-1build1" + }, + "/noble/rpcsvc-proto:amd64=1.4.2-0ubuntu7": { + "architecture": "amd64", + "depends_on": [ + "/noble-updates/libc6:amd64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:amd64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:amd64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/r/rpcsvc-proto/rpcsvc-proto_1.4.2-0ubuntu7_amd64.deb", + "name": "rpcsvc-proto", + "section": "libs", + "sha256": "7eb710fe148d224c159ddec1ceb0ba53ead52a80a6793dcdae1474acf20d8f71", + "size": 67446, + "suite": "noble", + "version": "1.4.2-0ubuntu7" + }, + "/noble/rpcsvc-proto:arm64=1.4.2-0ubuntu7": { + "architecture": "arm64", + "depends_on": [ + "/noble-updates/libc6:arm64=2.39-0ubuntu8.7", + "/noble-updates/libgcc-s1:arm64=14.2.0-4ubuntu2~24.04.1", + "/noble-updates/gcc-14-base:arm64=14.2.0-4ubuntu2~24.04.1" + ], + "filename": "pool/main/r/rpcsvc-proto/rpcsvc-proto_1.4.2-0ubuntu7_arm64.deb", + "name": "rpcsvc-proto", + "section": "libs", + "sha256": "ae527152fc2bf9c1a645c2620d802b0849db32c8aa48328b4ae94c59cc57bcc9", + "size": 64816, + "suite": "noble", + "version": "1.4.2-0ubuntu7" + } + }, + "sources": { + "noble": { + "architectures": [ + "amd64", + "arm64" + ], + "components": [ + "main" + ], + "types": [ + "deb" + ], + "uris": [ + "https://snapshot.ubuntu.com/ubuntu/20260401T000000Z" + ] + }, + "noble-security": { + "architectures": [ + "amd64", + "arm64" + ], + "components": [ + "main" + ], + "types": [ + "deb" + ], + "uris": [ + "https://snapshot.ubuntu.com/ubuntu/20260401T000000Z" + ] + }, + "noble-updates": { + "architectures": [ + "amd64", + "arm64" + ], + "components": [ + "main" + ], + "types": [ + "deb" + ], + "uris": [ + "https://snapshot.ubuntu.com/ubuntu/20260401T000000Z" + ] + } + }, + "version": 2 +} From c41f410659d449673b302c9836e167135a8b1637 Mon Sep 17 00:00:00 2001 From: Ulrich Huber Date: Mon, 15 Jun 2026 12:49:46 +0200 Subject: [PATCH 3/5] Introduce sysroot for LLVM toolchain --- MODULE.bazel | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/MODULE.bazel b/MODULE.bazel index 59ee52fbe..13a828b10 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -188,6 +188,25 @@ apt.sources_list( "https://ports.ubuntu.com/ubuntu-ports", ], ) +apt.install( + dependency_set = "ubuntu24_04_sysroot", + packages = [ + "libc6", # Core C/POSIX + "libc6-dev", # Core C/POSIX + "linux-libc-dev", # Core C/POSIX + "libstdc++6", # C++ standard library runtime + "libstdc++-13-dev", # C++ standard library headers + "libgcc-s1", # Exception unwinding + "libatomic1", # Non-lock-free atomics support + ], + suites = [ + "noble", + "noble-security", + "noble-updates", + ], + mergedusr = True, + unpack = True, +) apt.install( dependency_set = "ubuntu24_04_integration_testing", packages = [ @@ -205,7 +224,7 @@ apt.install( mergedusr = True, ) apt.lock(into = ":rules_distroless.lock.json") -use_repo(apt, "ubuntu24_04_integration_testing") +use_repo(apt, "ubuntu24_04_sysroot", "ubuntu24_04_integration_testing") bazel_dep(name = "toolchains_llvm", version = "1.5.0", dev_dependency = True) @@ -235,6 +254,17 @@ llvm.toolchain( "-latomic", ]}, llvm_version = "19.1.7", + stdlib = {"": "stdc++"}, +) +llvm.sysroot( + name = "llvm_toolchain", + label = "@ubuntu24_04_sysroot//unpack_amd64", + targets = ["linux-x86_64"], +) +llvm.sysroot( + name = "llvm_toolchain", + label = "@ubuntu24_04_sysroot//unpack_arm64", + targets = ["linux-aarch64"], ) use_repo(llvm, "llvm_toolchain") From e5c443f21c29e5d00d0f1bec978e93ee995159a2 Mon Sep 17 00:00:00 2001 From: Ulrich Huber Date: Mon, 15 Jun 2026 13:07:43 +0200 Subject: [PATCH 4/5] Rule to execute a binary within a sysroot This enables simple creation of hermetic tools. --- bazel/rules/BUILD | 19 ++++ bazel/rules/exec_in_sysroot.bzl | 154 ++++++++++++++++++++++++++++++++ bazel/rules/exec_in_sysroot.sh | 91 +++++++++++++++++++ 3 files changed, 264 insertions(+) create mode 100644 bazel/rules/exec_in_sysroot.bzl create mode 100755 bazel/rules/exec_in_sysroot.sh diff --git a/bazel/rules/BUILD b/bazel/rules/BUILD index e69de29bb..9e0f07ff0 100644 --- a/bazel/rules/BUILD +++ b/bazel/rules/BUILD @@ -0,0 +1,19 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +load("@rules_shell//shell:sh_binary.bzl", "sh_binary") + +sh_binary( + name = "exec_in_sysroot", + srcs = ["exec_in_sysroot.sh"], +) diff --git a/bazel/rules/exec_in_sysroot.bzl b/bazel/rules/exec_in_sysroot.bzl new file mode 100644 index 000000000..b758df4d2 --- /dev/null +++ b/bazel/rules/exec_in_sysroot.bzl @@ -0,0 +1,154 @@ +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* + +def _merge_default_and_data_runfiles(target, runfiles): + default_info = target[DefaultInfo] + if default_info.default_runfiles: + runfiles = runfiles.merge(default_info.default_runfiles) + if default_info.data_runfiles: + runfiles = runfiles.merge(default_info.data_runfiles) + return runfiles + +def _exec_in_sysroot_impl(ctx): + if len(ctx.files.sysroot) != 1: + fail("sysroot '{}' must provide exactly one directory artifact".format(ctx.attr.sysroot.label)) + + sysroot = ctx.files.sysroot[0] + sysroot_runfiles_path = sysroot.short_path + if sysroot_runfiles_path.startswith("../"): + sysroot_runfiles_path = sysroot_runfiles_path[3:] + + executable_file = ctx.executable.executable + if executable_file == None: + fail("executable must provide a runnable target") + executable_short_path = executable_file.short_path + if executable_short_path.startswith("../"): + executable_runfiles_path = executable_short_path[3:] + else: + executable_runfiles_path = ctx.workspace_name + "/" + executable_short_path + + out = ctx.actions.declare_file(ctx.label.name) + + # Build exclude paths string - colon-separated list + exclude_paths = ":".join(ctx.attr.exclude_paths) if ctx.attr.exclude_paths else "" + + wrapper_script = """#!/usr/bin/env bash +set -euo pipefail + +# --- begin runfiles.bash initialization --- +if [[ ! -d "${{RUNFILES_DIR:-/dev/null}}" && ! -f "${{RUNFILES_MANIFEST_FILE:-/dev/null}}" ]]; then + if [[ -f "$0.runfiles_manifest" ]]; then + export RUNFILES_MANIFEST_FILE="$0.runfiles_manifest" + elif [[ -f "$0.runfiles/MANIFEST" ]]; then + export RUNFILES_MANIFEST_FILE="$0.runfiles/MANIFEST" + elif [[ -f "$0.runfiles/bazel_tools/tools/bash/runfiles/runfiles.bash" ]]; then + export RUNFILES_DIR="$0.runfiles" + fi +fi +if [[ -f "${{RUNFILES_DIR:-/dev/null}}/bazel_tools/tools/bash/runfiles/runfiles.bash" ]]; then + source "${{RUNFILES_DIR}}/bazel_tools/tools/bash/runfiles/runfiles.bash" +elif [[ -f "${{RUNFILES_MANIFEST_FILE:-/dev/null}}" ]]; then + source "$(grep -m1 '^bazel_tools/tools/bash/runfiles/runfiles.bash ' "$RUNFILES_MANIFEST_FILE" | cut -d ' ' -f 2-)" +else + echo >&2 "ERROR: cannot find @bazel_tools//tools/bash/runfiles:runfiles.bash" + exit 1 +fi +# --- end runfiles.bash initialization --- + +FAKECHROOT_WRAPPER="$(rlocation '{wrapper_short_path}')" +SYSROOT_DIR="$(rlocation '{sysroot_short_path}')" +EXECUTABLE_FILE="$(rlocation '{executable_runfiles_path}')" + +if [[ -z "${{FAKECHROOT_WRAPPER}}" || ! -x "${{FAKECHROOT_WRAPPER}}" ]]; then + echo "ERROR: could not resolve fakechroot wrapper: {wrapper_short_path}" >&2 + exit 1 +fi + +if [[ -z "${{SYSROOT_DIR}}" || ! -d "${{SYSROOT_DIR}}" ]]; then + echo "ERROR: could not resolve sysroot directory: {sysroot_short_path}" >&2 + exit 1 +fi + +if [[ ! -x "${{SYSROOT_DIR}}/usr/bin/fakechroot" ]]; then + echo "ERROR: sysroot does not provide /usr/bin/fakechroot: ${{SYSROOT_DIR}}" >&2 + exit 1 +fi + +if [[ -z "${{EXECUTABLE_FILE}}" || ! -f "${{EXECUTABLE_FILE}}" ]]; then + echo "ERROR: could not resolve executable target: {executable_runfiles_path}" >&2 + exit 1 +fi + +export SYSROOT_DIR +if [[ -n "{exclude_paths}" ]]; then + export FAKECHROOT_EXCLUDE_PATH="{exclude_paths}" +fi + +# The executable lives in host runfiles, not in the sysroot. Exclude its path so +# chrooted execution can still open and execute it. +EXECUTABLE_DIR="$(dirname "${{EXECUTABLE_FILE}}")" +if [[ -n "${{FAKECHROOT_EXCLUDE_PATH:-}}" ]]; then + export FAKECHROOT_EXCLUDE_PATH="${{EXECUTABLE_DIR}}:${{EXECUTABLE_FILE}}:${{FAKECHROOT_EXCLUDE_PATH}}" +else + export FAKECHROOT_EXCLUDE_PATH="${{EXECUTABLE_DIR}}:${{EXECUTABLE_FILE}}" +fi + +exec "${{FAKECHROOT_WRAPPER}}" "${{EXECUTABLE_FILE}}" "$@" +""".format( + wrapper_short_path = ctx.workspace_name + "/" + ctx.executable._fakechroot_wrapper.short_path, + sysroot_short_path = sysroot_runfiles_path, + executable_runfiles_path = executable_runfiles_path, + exclude_paths = exclude_paths, + ) + ctx.actions.write(output = out, content = wrapper_script, is_executable = True) + + runfiles = ctx.runfiles( + files = [out, ctx.executable._fakechroot_wrapper, sysroot, executable_file] + ctx.files._bash_runfiles, + ) + runfiles = _merge_default_and_data_runfiles(ctx.attr.executable, runfiles) + runfiles = _merge_default_and_data_runfiles(ctx.attr._fakechroot_wrapper, runfiles) + runfiles = _merge_default_and_data_runfiles(ctx.attr._bash_runfiles, runfiles) + runfiles = _merge_default_and_data_runfiles(ctx.attr.sysroot, runfiles) + + return [DefaultInfo( + executable = out, + files = depset([out]), + runfiles = runfiles, + )] + + +exec_in_sysroot = rule( + implementation = _exec_in_sysroot_impl, + executable = True, + attrs = { + "executable": attr.label(mandatory = True, executable = True, cfg = "exec"), + "sysroot": attr.label(mandatory = True, allow_files = True), + "exclude_paths": attr.string_list( + default = [], + doc = "Paths to exclude from fakechroot (colon-separated in the env var)", + ), + "_bash_runfiles": attr.label( + default = Label("@bazel_tools//tools/bash/runfiles"), + allow_files = True, + ), + "_fakechroot_wrapper": attr.label( + default = Label("//bazel/rules:exec_in_sysroot"), + executable = True, + cfg = "exec", + ), + }, + doc = """ + Produces an executable wrapper that runs a given executable target using the supplied sysroot. + The wrapped executable runs within fakechroot, allowing access to sysroot tools. + """, +) diff --git a/bazel/rules/exec_in_sysroot.sh b/bazel/rules/exec_in_sysroot.sh new file mode 100755 index 000000000..d2f5a1c16 --- /dev/null +++ b/bazel/rules/exec_in_sysroot.sh @@ -0,0 +1,91 @@ +#!/usr/bin/env bash +# ******************************************************************************* +# Copyright (c) 2026 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# ******************************************************************************* +# Generic wrapper script that executes a command in fakechroot using the provided sysroot. +# +# This wrapper is intentionally strict: fakechroot must come from the Bazel- +# provided sysroot so execution stays hermetic. +# +# Usage: +# fakechroot_wrapper.sh [arguments...] +# +# Arguments: +# command-in-sysroot - Path to the command inside the sysroot (e.g., /usr/bin/lcov) +# arguments... - Arguments to pass to the command +# +# Environment variables: +# SYSROOT_DIR - Path to the sysroot directory (required) +# BUILD_WORKSPACE_DIRECTORY - Automatically excluded from fakechroot (optional) +# FAKECHROOT_EXCLUDE_PATH - Colon-separated paths to exclude from fakechroot (optional) + +set -euo pipefail + +COMMAND_IN_SYSROOT="${1:?Command in sysroot must be provided as first argument}" +shift || true + +SYSROOT_DIR="${SYSROOT_DIR:?SYSROOT_DIR must be set}" +FAKECHROOT_BIN="${SYSROOT_DIR}/usr/bin/fakechroot" + +if [[ ! -x "${FAKECHROOT_BIN}" ]]; then + echo "ERROR: fakechroot not found in sysroot: ${FAKECHROOT_BIN}" >&2 + exit 1 +fi + +ARCH="" +case "$(uname -m)" in + x86_64) ARCH="x86_64" ;; + aarch64) ARCH="aarch64" ;; +esac + +if [[ -z "${ARCH}" ]]; then + echo "ERROR: unsupported host architecture: $(uname -m)" >&2 + exit 1 +fi + +FAKECHROOT_LIB="" +if [[ -n "${ARCH}" && -f "${SYSROOT_DIR}/usr/lib/${ARCH}-linux-gnu/fakechroot/libfakechroot.so" ]]; then + FAKECHROOT_LIB="${SYSROOT_DIR}/usr/lib/${ARCH}-linux-gnu/fakechroot/libfakechroot.so" +fi +if [[ -z "${FAKECHROOT_LIB}" ]]; then + FAKECHROOT_LIB="$(find "${SYSROOT_DIR}/usr/lib" -path '*/fakechroot/libfakechroot.so' -type f | head -1 || true)" +fi +if [[ -z "${FAKECHROOT_LIB}" ]]; then + echo "ERROR: libfakechroot.so not found in sysroot" >&2 + exit 1 +fi + +# Build the exclude paths list. +# Always exclude BUILD_WORKSPACE_DIRECTORY if it's set, so workspace operations +# (reading data, writing reports) remain on the host filesystem. +EXCLUDE_PATHS="" +if [[ -n "${BUILD_WORKSPACE_DIRECTORY:-}" ]]; then + EXCLUDE_PATHS="${BUILD_WORKSPACE_DIRECTORY}" +fi + +# Append any user-specified exclude paths. +if [[ -n "${FAKECHROOT_EXCLUDE_PATH:-}" ]]; then + if [[ -n "${EXCLUDE_PATHS}" ]]; then + EXCLUDE_PATHS="${EXCLUDE_PATHS}:${FAKECHROOT_EXCLUDE_PATH}" + else + EXCLUDE_PATHS="${FAKECHROOT_EXCLUDE_PATH}" + fi +fi + +if [[ -n "${EXCLUDE_PATHS}" ]]; then + export FAKECHROOT_EXCLUDE_PATH="${EXCLUDE_PATHS}" +fi + +# Ensure fakechroot can resolve its preload library from the sysroot. +export LD_LIBRARY_PATH="${SYSROOT_DIR}/lib:${SYSROOT_DIR}/usr/lib:${SYSROOT_DIR}/usr/lib/x86_64-linux-gnu:${SYSROOT_DIR}/usr/lib/aarch64-linux-gnu:${SYSROOT_DIR}/usr/lib/x86_64-linux-gnu/fakechroot:${SYSROOT_DIR}/usr/lib/aarch64-linux-gnu/fakechroot:${LD_LIBRARY_PATH:-}" + +exec "${FAKECHROOT_BIN}" --lib "${FAKECHROOT_LIB}" -- chroot "${SYSROOT_DIR}" "${COMMAND_IN_SYSROOT}" "$@" From 7b2592f07026305482fdc72977053cebece9bf0b Mon Sep 17 00:00:00 2001 From: Ulrich Huber Date: Mon, 15 Jun 2026 13:08:04 +0200 Subject: [PATCH 5/5] Make coverage report script hermetic --- MODULE.bazel | 35 ++++++++---- quality/coverage/BUILD | 13 ++++- quality/coverage/generate_coverage_html.sh | 64 ++-------------------- 3 files changed, 39 insertions(+), 73 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 13a828b10..9f4d45a90 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -223,8 +223,30 @@ apt.install( ], mergedusr = True, ) +apt.install( + dependency_set = "coverage_runtime_sysroot", + packages = [ + "bash", + "coreutils", + "fakechroot", # Mandatory for exec_in_sysroot rule + "findutils", + "lcov", + "libcapture-tiny-perl", + "libdatetime-perl", + "libtimedate-perl", + "perl", + "zip", + ], + suites = [ + "noble", + "noble-security", + "noble-updates", + ], + mergedusr = True, + unpack = True, +) apt.lock(into = ":rules_distroless.lock.json") -use_repo(apt, "ubuntu24_04_sysroot", "ubuntu24_04_integration_testing") +use_repo(apt, "ubuntu24_04_sysroot", "ubuntu24_04_integration_testing", "coverage_runtime_sysroot") bazel_dep(name = "toolchains_llvm", version = "1.5.0", dev_dependency = True) @@ -302,17 +324,6 @@ use_repo( # We use here a pre-compiled fully static and hermetic clang_format binary # and not the one provided by llvm_toolchain, because the one from llvm_toolchain is not fully hermetic (and different version for now) -############################################################################### -# lcov deb package (provides genhtml + lcov for coverage HTML reports) -############################################################################### -deb = use_repo_rule("@download_utils//download/deb:defs.bzl", "download_deb") - -deb( - name = "lcov_deb", - dev_dependency = True, - integrity = "sha256-Ip14IkKavqBtkQ7mh6AXzr/6YyHpvSAZ0veMmw1+N80=", - urls = ["https://archive.ubuntu.com/ubuntu/pool/universe/l/lcov/lcov_2.0-4ubuntu2_all.deb"], -) download_file = use_repo_rule("@download_utils//download/file:defs.bzl", "download_file") diff --git a/quality/coverage/BUILD b/quality/coverage/BUILD index 2a9ad0cb5..75f2726b8 100644 --- a/quality/coverage/BUILD +++ b/quality/coverage/BUILD @@ -12,10 +12,19 @@ # ******************************************************************************* load("@rules_shell//shell:sh_binary.bzl", "sh_binary") +load("//bazel/rules:exec_in_sysroot.bzl", "exec_in_sysroot") sh_binary( - name = "generate_coverage_html", + name = "generate_coverage_html_bin", srcs = ["generate_coverage_html.sh"], - data = ["@lcov_deb//:srcs"], +) + +exec_in_sysroot( + name = "generate_coverage_html", + executable = ":generate_coverage_html_bin", + sysroot = select({ + "@platforms//cpu:x86_64": "@coverage_runtime_sysroot//unpack_amd64:unpack_amd64", + "@platforms//cpu:arm64": "@coverage_runtime_sysroot//unpack_arm64:unpack_arm64", + }), visibility = ["//visibility:private"], ) diff --git a/quality/coverage/generate_coverage_html.sh b/quality/coverage/generate_coverage_html.sh index 94f28a3d6..926cbc24b 100755 --- a/quality/coverage/generate_coverage_html.sh +++ b/quality/coverage/generate_coverage_html.sh @@ -14,6 +14,9 @@ # Generates an HTML coverage report from an LCOV .dat file using genhtml. # Optionally assembles and zips the report together with LCOV data and JUnit XMLs. # +# This script is wrapped in fakechroot for a hermetic environment. +# It runs entirely within fakechroot with excluded paths to the workspace. +# # Usage: # bazel run //quality/coverage:generate_coverage_html [-- [--archive ] [output-dir]] # @@ -40,22 +43,6 @@ while [[ $# -gt 0 ]]; do esac done -# Change to the workspace root first so that all subsequent bazel calls -# and relative paths work correctly. -# -# IMPORTANT: bootstrap RUNFILES_DIR from $0 BEFORE the cd, since after cd -# any relative paths would break. We ensure it is absolute here. -# Do NOT use 'readlink -f $0' — that resolves the sh_binary symlink to the -# source .sh file, losing the adjacent .runfiles tree. -_SELF_DIR="$(cd "$(dirname "$0")" && pwd)" -_SELF_NAME="$(basename "$0")" -if [[ -z "${RUNFILES_DIR:-}" || ! -d "${RUNFILES_DIR}" ]]; then - if [[ -d "${_SELF_DIR}/${_SELF_NAME}.runfiles" ]]; then - export RUNFILES_DIR="${_SELF_DIR}/${_SELF_NAME}.runfiles" - fi -fi -unset _SELF_DIR _SELF_NAME - cd "${BUILD_WORKSPACE_DIRECTORY}" # bazel-out/ is a symlink Bazel always creates in the workspace root, it @@ -65,47 +52,6 @@ cd "${BUILD_WORKSPACE_DIRECTORY}" # on PATH inside the run environment. LCOV_DAT="${BUILD_WORKSPACE_DIRECTORY}/bazel-out/_coverage/_coverage_report.dat" -# --------------------------------------------------------------------------- -# Resolve genhtml: prefer Bazel-managed binary from @lcov_deb runfiles so -# that no system lcov installation is required. Fall back to PATH. -# -# Bazel uses a symlink forest on Linux: runfiles entries are symlinks to the -# real cached files. Use 'find -L' to dereference them ('find -type f' -# without -L never matches symlinks). -# --------------------------------------------------------------------------- -_tool_path() { - local name="$1" - local found="" - # 1. Symlink forest (always present on Linux under bazel run) - if [[ -n "${RUNFILES_DIR:-}" ]]; then - found=$(find -L "${RUNFILES_DIR}" -path "*lcov_deb/usr/bin/${name}" -type f 2>/dev/null | head -1) - fi - # 2. PATH - if [[ -z "${found}" ]]; then - found=$(command -v "${name}" 2>/dev/null || true) - fi - echo "${found}" -} - -GENHTML="$(_tool_path genhtml)" -LCOV="$(_tool_path lcov)" - -if [[ -z "$GENHTML" ]]; then - echo "ERROR: 'genhtml' not found. Run via 'bazel run //quality/coverage:generate_coverage_html' or install 'lcov'." >&2 - exit 1 -fi -if [[ -z "$LCOV" ]]; then - echo "ERROR: 'lcov' not found. Run via 'bazel run //quality/coverage:generate_coverage_html' or install 'lcov'." >&2 - exit 1 -fi - -# When using the Bazel-managed tool, set PERL5LIB so Perl finds lcovutil.pm. -# lcovutil.pm lives two levels above the genhtml binary: bin/ → usr/ → lib/lcov. -lcov_lib="$(dirname "$(dirname "${GENHTML}")")/lib/lcov" -if [[ -d "${lcov_lib}" ]]; then - export PERL5LIB="${lcov_lib}${PERL5LIB:+:${PERL5LIB}}" -fi - # --------------------------------------------------------------------------- # Filter source files from LCOV data before generating HTML. # The --instrumentation_filter in coverage.bazelrc already excludes external @@ -115,7 +61,7 @@ fi # - *mock*.h/cpp mock headers in production packages (e.g. configuration/) # --------------------------------------------------------------------------- LCOV_DAT_FILTERED="${TMPDIR:-/tmp}/coverage_report_filtered_$$.dat" -"${LCOV}" --remove "${LCOV_DAT}" \ +lcov --remove "${LCOV_DAT}" \ '*mock*.h' \ '*mock*.cpp' \ --output-file "${LCOV_DAT_FILTERED}" \ @@ -129,7 +75,7 @@ LCOV_DAT_FILTERED="${TMPDIR:-/tmp}/coverage_report_filtered_$$.dat" # silently skip those entries instead of aborting, coverage numbers are # slightly under-counted for affected translation units but the report still # generates. -"${GENHTML}" "${LCOV_DAT_FILTERED}" \ +genhtml "${LCOV_DAT_FILTERED}" \ --output-directory "${OUTPUT_DIR}" \ --show-details \ --legend \