diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index be024b0cba10..0b01c6fdd43c 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,5 +1,5 @@ { - "image": "ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a", + "image": "ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d", "remoteUser": "ubuntu", "privileged": true, "runArgs": [ diff --git a/.github/workflows-source/ci-main.yml b/.github/workflows-source/ci-main.yml index 596e528c646e..e94056d359bc 100644 --- a/.github/workflows-source/ci-main.yml +++ b/.github/workflows-source/ci-main.yml @@ -34,7 +34,7 @@ env: anchors: image: &image - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d dind-large-setup: &dind-large-setup runs-on: labels: dind-large diff --git a/.github/workflows-source/ci-pr-only.yml b/.github/workflows-source/ci-pr-only.yml index 8f96faa2e91b..4ca5e69bd55e 100644 --- a/.github/workflows-source/ci-pr-only.yml +++ b/.github/workflows-source/ci-pr-only.yml @@ -17,7 +17,7 @@ env: anchors: image: &image - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d container: &container container: <<: *image diff --git a/.github/workflows-source/release-testing.yml b/.github/workflows-source/release-testing.yml index 5c7da873f2b3..00b8217ff657 100644 --- a/.github/workflows-source/release-testing.yml +++ b/.github/workflows-source/release-testing.yml @@ -25,7 +25,7 @@ env: anchors: image: &image - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d dind-large-setup: &dind-large-setup runs-on: labels: dind-large diff --git a/.github/workflows-source/schedule-daily.yml b/.github/workflows-source/schedule-daily.yml index 787ce6bec4c5..7b49c6b10f00 100644 --- a/.github/workflows-source/schedule-daily.yml +++ b/.github/workflows-source/schedule-daily.yml @@ -14,7 +14,7 @@ env: anchors: image: &image - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d dind-large-setup: &dind-large-setup runs-on: labels: dind-large diff --git a/.github/workflows-source/schedule-hourly.yml b/.github/workflows-source/schedule-hourly.yml index 55d3f2d5c443..693d52e645fb 100644 --- a/.github/workflows-source/schedule-hourly.yml +++ b/.github/workflows-source/schedule-hourly.yml @@ -14,7 +14,7 @@ env: anchors: image: &image - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d dind-large-setup: &dind-large-setup runs-on: labels: dind-large diff --git a/.github/workflows/ci-main.yml b/.github/workflows/ci-main.yml index c712787e2ba7..0dc31dc90aad 100644 --- a/.github/workflows/ci-main.yml +++ b/.github/workflows/ci-main.yml @@ -107,7 +107,7 @@ jobs: name: Bazel Test All needs: [config] container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME --privileged --cgroupns host timeout-minutes: 120 @@ -286,7 +286,7 @@ jobs: runs-on: labels: dind-large container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME --privileged --cgroupns host timeout-minutes: 90 @@ -337,7 +337,7 @@ jobs: runs-on: labels: dind-large container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME --privileged --cgroupns host timeout-minutes: 90 @@ -358,7 +358,7 @@ jobs: runs-on: labels: dind-large container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME --privileged --cgroupns host timeout-minutes: 90 @@ -379,7 +379,7 @@ jobs: runs-on: labels: dind-small container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME timeout-minutes: 30 @@ -412,7 +412,7 @@ jobs: needs: [config] name: Build IC container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME --privileged --cgroupns host timeout-minutes: 90 @@ -493,7 +493,7 @@ jobs: runs-on: labels: dind-small container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME timeout-minutes: 30 @@ -530,7 +530,7 @@ jobs: runs-on: labels: dind-small container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME timeout-minutes: 30 diff --git a/.github/workflows/ci-pr-only.yml b/.github/workflows/ci-pr-only.yml index b222faca6c26..bc88d36679be 100644 --- a/.github/workflows/ci-pr-only.yml +++ b/.github/workflows/ci-pr-only.yml @@ -20,7 +20,7 @@ jobs: runs-on: labels: dind-large container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME if: ${{ github.event_name != 'merge_group' }} @@ -50,7 +50,7 @@ jobs: runs-on: labels: dind-small container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME if: ${{ github.event_name != 'merge_group' }} @@ -92,7 +92,7 @@ jobs: runs-on: labels: dind-small container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME timeout-minutes: 5 @@ -128,7 +128,7 @@ jobs: runs-on: labels: dind-small container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME if: ${{ github.event_name != 'merge_group' }} @@ -189,7 +189,7 @@ jobs: runs-on: labels: dind-large container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME if: contains(github.event.pull_request.labels.*.name, 'CI_COVERAGE') diff --git a/.github/workflows/container-mirror-images.json b/.github/workflows/container-mirror-images.json index 3315eb469c8c..9a5d45501be7 100644 --- a/.github/workflows/container-mirror-images.json +++ b/.github/workflows/container-mirror-images.json @@ -1,15 +1,5 @@ { "images": [ - { - "image": "library/ubuntu", - "repo": "docker.io", - "sha256": "965fbcae990b0467ed5657caceaec165018ef44a4d2d46c7cdea80a9dff0d1ea" - }, - { - "image": "library/ubuntu", - "repo": "docker.io", - "sha256": "5d070ad5f7fe63623cbb99b4fc0fd997f5591303d4b03ccce50f403957d0ddc4" - }, { "note": "ubuntu:noble-20250415.1", "image": "library/ubuntu", diff --git a/.github/workflows/pocket-ic-tests-windows.yml b/.github/workflows/pocket-ic-tests-windows.yml index 293cbca2b0dc..ec2cf40cc5c2 100644 --- a/.github/workflows/pocket-ic-tests-windows.yml +++ b/.github/workflows/pocket-ic-tests-windows.yml @@ -17,7 +17,7 @@ jobs: bazel-build-pocket-ic: name: Bazel Build PocketIC container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME --privileged --cgroupns host timeout-minutes: 90 diff --git a/.github/workflows/rate-limits-backend-release.yml b/.github/workflows/rate-limits-backend-release.yml index e9134a09a313..0d4763cbf236 100644 --- a/.github/workflows/rate-limits-backend-release.yml +++ b/.github/workflows/rate-limits-backend-release.yml @@ -32,7 +32,7 @@ jobs: labels: dind-large container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME --privileged --cgroupns host -v /var/sysimage:/var/sysimage -v /var/tmp:/var/tmp -v /ceph-s3-info:/ceph-s3-info diff --git a/.github/workflows/release-testing.yml b/.github/workflows/release-testing.yml index 4f803d393067..cbd4c3ec72ba 100644 --- a/.github/workflows/release-testing.yml +++ b/.github/workflows/release-testing.yml @@ -28,7 +28,7 @@ jobs: runs-on: labels: dind-large container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME --privileged --cgroupns host timeout-minutes: 180 # 3 hours @@ -49,7 +49,7 @@ jobs: runs-on: labels: dind-large container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME --privileged --cgroupns host timeout-minutes: 180 # 3 hours @@ -70,7 +70,7 @@ jobs: runs-on: labels: dind-large container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME --privileged --cgroupns host timeout-minutes: 90 @@ -91,7 +91,7 @@ jobs: runs-on: labels: dind-large container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME --privileged --cgroupns host timeout-minutes: 60 @@ -132,7 +132,7 @@ jobs: runs-on: labels: dind-large container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME --privileged --cgroupns host timeout-minutes: 180 # 3 hours @@ -159,7 +159,7 @@ jobs: runs-on: labels: dind-large container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME --privileged --cgroupns host timeout-minutes: 180 # 3 hours diff --git a/.github/workflows/rosetta-release.yml b/.github/workflows/rosetta-release.yml index 8554797177ab..9313e4d9280f 100644 --- a/.github/workflows/rosetta-release.yml +++ b/.github/workflows/rosetta-release.yml @@ -22,7 +22,7 @@ jobs: runs-on: labels: dind-large container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d steps: - name: Checkout uses: actions/checkout@v4 diff --git a/.github/workflows/salt-sharing-canister-release.yml b/.github/workflows/salt-sharing-canister-release.yml index 92c0ed7968ed..9f121dc989e8 100644 --- a/.github/workflows/salt-sharing-canister-release.yml +++ b/.github/workflows/salt-sharing-canister-release.yml @@ -32,7 +32,7 @@ jobs: labels: dind-large container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME --privileged --cgroupns host -v /var/sysimage:/var/sysimage -v /var/tmp:/var/tmp -v /ceph-s3-info:/ceph-s3-info diff --git a/.github/workflows/schedule-daily.yml b/.github/workflows/schedule-daily.yml index e0b5cbd82845..3964ea18a079 100644 --- a/.github/workflows/schedule-daily.yml +++ b/.github/workflows/schedule-daily.yml @@ -15,7 +15,7 @@ jobs: runs-on: labels: dind-large container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME --privileged --cgroupns host timeout-minutes: 120 @@ -60,7 +60,7 @@ jobs: runs-on: labels: dind-large container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME --privileged --cgroupns host timeout-minutes: 720 # 12 hours @@ -80,7 +80,7 @@ jobs: runs-on: labels: dind-large container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME --privileged --cgroupns host timeout-minutes: 30 @@ -100,7 +100,7 @@ jobs: runs-on: labels: dind-large container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME --privileged --cgroupns host timeout-minutes: 480 @@ -134,7 +134,7 @@ jobs: runs-on: labels: dind-large container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME --privileged --cgroupns host timeout-minutes: 60 @@ -185,7 +185,7 @@ jobs: runs-on: labels: dind-large container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME --privileged --cgroupns host timeout-minutes: 120 diff --git a/.github/workflows/schedule-hourly.yml b/.github/workflows/schedule-hourly.yml index 71eb4e7969d1..605b9abf373e 100644 --- a/.github/workflows/schedule-hourly.yml +++ b/.github/workflows/schedule-hourly.yml @@ -15,7 +15,7 @@ jobs: runs-on: labels: dind-large container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME --privileged --cgroupns host timeout-minutes: 120 @@ -37,7 +37,7 @@ jobs: runs-on: labels: dind-large container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME --privileged --cgroupns host timeout-minutes: 120 @@ -59,7 +59,7 @@ jobs: runs-on: labels: dind-large container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME --privileged --cgroupns host timeout-minutes: 120 diff --git a/.github/workflows/schedule-rust-bench.yml b/.github/workflows/schedule-rust-bench.yml index 865232b089ac..4f17d2fe9751 100644 --- a/.github/workflows/schedule-rust-bench.yml +++ b/.github/workflows/schedule-rust-bench.yml @@ -25,7 +25,7 @@ jobs: # see linux-x86-64 runner group labels: rust-benchmarks container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d # running on bare metal machine using ubuntu user options: --user ubuntu timeout-minutes: 720 # 12 hours diff --git a/.github/workflows/schedule-weekly.yml b/.github/workflows/schedule-weekly.yml index fff941177649..27de9b40e4b4 100644 --- a/.github/workflows/schedule-weekly.yml +++ b/.github/workflows/schedule-weekly.yml @@ -10,7 +10,7 @@ jobs: runs-on: labels: dind-large container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME timeout-minutes: 60 # 1 hour diff --git a/.github/workflows/system-tests-k8s.yml b/.github/workflows/system-tests-k8s.yml index 72b113170d82..8b9b63f76e2b 100644 --- a/.github/workflows/system-tests-k8s.yml +++ b/.github/workflows/system-tests-k8s.yml @@ -50,7 +50,7 @@ jobs: group: ln1 labels: dind-large container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME -e KUBECONFIG --privileged --cgroupns host @@ -105,7 +105,7 @@ jobs: group: ln1 labels: dind-large container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME -e KUBECONFIG --privileged --cgroupns host timeout-minutes: 150 diff --git a/.github/workflows/update-mainnet-revisions.yaml b/.github/workflows/update-mainnet-revisions.yaml index 51aa7337c76c..bacbbcf3a694 100644 --- a/.github/workflows/update-mainnet-revisions.yaml +++ b/.github/workflows/update-mainnet-revisions.yaml @@ -46,7 +46,7 @@ jobs: labels: dind-small environment: CREATE_PR container: - image: ghcr.io/dfinity/ic-build@sha256:2e7a20ff226ac7c35227853804f13a2294e530e772a302504467bb4f5264b02a + image: ghcr.io/dfinity/ic-build@sha256:102f19636e9bdd1b79d4fdf939d59b2c62276409b4178703f19d3913f564a38d options: >- -e NODE_NAME --privileged --cgroupns host -v /var/sysimage:/var/sysimage -v /var/tmp:/var/tmp -v /ceph-s3-info:/ceph-s3-info steps: diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d9226120925f..4e2f3ca9bb5e 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -58,3 +58,11 @@ repos: language: system always_run: true verbose: true + +- repo: https://github.com/ansible/ansible-lint.git + rev: v24.5.0 + hooks: + - id: ansible-lint + always_run: false + files: (^|/)testnet/ansible/.+\.(yaml|yml)$ + args: ['-i', 'testnet/ansible/.ansible-lint-ignore', 'testnet/ansible'] diff --git a/MODULE.bazel b/MODULE.bazel index 6fb15454069b..a0aaed578856 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -187,7 +187,7 @@ use_repo(oci, "minica", "minica_linux_amd64") # used by rosetta image oci.pull( name = "rust_base", - image = "gcr.io/distroless/cc-debian11@sha256:8e94f031353596c3fc9db6a2499bcc82dacc40cb71e0703476f9fad41677efdf", + image = "gcr.io/distroless/cc-debian12@sha256:3310655aac0d85eb9d579792387af1ff3eb7a1667823478be58020ab0e0d97a8", platforms = ["linux/amd64"], ) use_repo(oci, "rust_base", "rust_base_linux_amd64") @@ -195,7 +195,7 @@ use_repo(oci, "rust_base", "rust_base_linux_amd64") # used in various places as base oci.pull( name = "ubuntu_base", - image = "ghcr.io/dfinity/ubuntu@sha256:965fbcae990b0467ed5657caceaec165018ef44a4d2d46c7cdea80a9dff0d1ea", + image = "ghcr.io/dfinity/ubuntu@sha256:6015f66923d7afbc53558d7ccffd325d43b4e249f41a6e93eef074c9505d2233", platforms = ["linux/amd64"], ) use_repo(oci, "ubuntu_base", "ubuntu_base_linux_amd64") @@ -234,17 +234,6 @@ bazel_dep(name = "rules_distroless", version = "0.3.8") apt = use_extension("@rules_distroless//apt:extensions.bzl", "apt") -## Packageset based on an Ubuntu focal snapshot, see manifest file -## for details -## To update, comment out the `lock` field below and run: -## bazel run @focal//:lock -apt.install( - name = "focal", - lock = "//bazel:focal.lock.json", - manifest = "//bazel:focal.yaml", -) -use_repo(apt, "focal") - # Packageset based on an Ubuntu noble snapshot, see manifest file # for details # To update, comment out the `lock` field below and run: diff --git a/bazel/focal.lock.json b/bazel/focal.lock.json deleted file mode 100755 index 203307935c47..000000000000 --- a/bazel/focal.lock.json +++ /dev/null @@ -1,1746 +0,0 @@ -{ - "packages": [ - { - "arch": "amd64", - "dependencies": [ - { - "key": "openssl_1.1.1f-1ubuntu2.22_amd64", - "name": "openssl", - "version": "1.1.1f-1ubuntu2.22" - }, - { - "key": "libssl1.1_1.1.1f-1ubuntu2.22_amd64", - "name": "libssl1.1", - "version": "1.1.1f-1ubuntu2.22" - }, - { - "key": "libc6_2.31-0ubuntu9.14_amd64", - "name": "libc6", - "version": "2.31-0ubuntu9.14" - }, - { - "key": "libcrypt1_1-4.4.10-10ubuntu4_amd64", - "name": "libcrypt1", - "version": "1:4.4.10-10ubuntu4" - }, - { - "key": "libgcc-s1_10.5.0-1ubuntu1_20.04_amd64", - "name": "libgcc-s1", - "version": "10.5.0-1ubuntu1~20.04" - }, - { - "key": "gcc-10-base_10.5.0-1ubuntu1_20.04_amd64", - "name": "gcc-10-base", - "version": "10.5.0-1ubuntu1~20.04" - } - ], - "key": "ca-certificates_20230311ubuntu0.20.04.1_amd64", - "name": "ca-certificates", - "sha256": "ec23973dbb9317eb746d44aa6795556ee591d75eb9f7292a6672e69f215afcb9", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/c/ca-certificates/ca-certificates_20230311ubuntu0.20.04.1_all.deb", - "version": "20230311ubuntu0.20.04.1" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "openssl_1.1.1f-1ubuntu2.22_amd64", - "name": "openssl", - "sha256": "d5b1e5de1627b6b895adbb030ccb8fc16125c5d0ef3604d898da136fc2bd6ad2", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/o/openssl/openssl_1.1.1f-1ubuntu2.22_amd64.deb", - "version": "1.1.1f-1ubuntu2.22" - }, - { - "arch": "amd64", - "dependencies": [ - { - "key": "libc6_2.31-0ubuntu9.14_amd64", - "name": "libc6", - "version": "2.31-0ubuntu9.14" - }, - { - "key": "libcrypt1_1-4.4.10-10ubuntu4_amd64", - "name": "libcrypt1", - "version": "1:4.4.10-10ubuntu4" - }, - { - "key": "libgcc-s1_10.5.0-1ubuntu1_20.04_amd64", - "name": "libgcc-s1", - "version": "10.5.0-1ubuntu1~20.04" - }, - { - "key": "gcc-10-base_10.5.0-1ubuntu1_20.04_amd64", - "name": "gcc-10-base", - "version": "10.5.0-1ubuntu1~20.04" - } - ], - "key": "libssl1.1_1.1.1f-1ubuntu2.22_amd64", - "name": "libssl1.1", - "sha256": "df9d07d552aab0c7e5b9fbcc568913acd20d50fb8b1e34876fa348b7a0c82d48", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2.22_amd64.deb", - "version": "1.1.1f-1ubuntu2.22" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libc6_2.31-0ubuntu9.14_amd64", - "name": "libc6", - "sha256": "a469164a97599aaef2552512acfd91c8830dc8d5e8053f9c02215ff9cd36673c", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/g/glibc/libc6_2.31-0ubuntu9.14_amd64.deb", - "version": "2.31-0ubuntu9.14" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libcrypt1_1-4.4.10-10ubuntu4_amd64", - "name": "libcrypt1", - "sha256": "231b4dbbe5865775f118cfa61394f1e16fa7102b6953a327e672499a20876d73", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/libx/libxcrypt/libcrypt1_4.4.10-10ubuntu4_amd64.deb", - "version": "1:4.4.10-10ubuntu4" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libgcc-s1_10.5.0-1ubuntu1_20.04_amd64", - "name": "libgcc-s1", - "sha256": "4aa7b9c9f3225df65a750ae0ff5c890fc6108c82a609b3c5abd45d211838bf3c", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/g/gcc-10/libgcc-s1_10.5.0-1ubuntu1~20.04_amd64.deb", - "version": "10.5.0-1ubuntu1~20.04" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "gcc-10-base_10.5.0-1ubuntu1_20.04_amd64", - "name": "gcc-10-base", - "sha256": "8fac06791057b1bba6178466e160bb3ec2a795297f10e88e34daf762572ed5c0", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/g/gcc-10/gcc-10-base_10.5.0-1ubuntu1~20.04_amd64.deb", - "version": "10.5.0-1ubuntu1~20.04" - }, - { - "arch": "amd64", - "dependencies": [ - { - "key": "libselinux1_3.0-1build2_amd64", - "name": "libselinux1", - "version": "3.0-1build2" - }, - { - "key": "libpcre2-8-0_10.34-7ubuntu0.1_amd64", - "name": "libpcre2-8-0", - "version": "10.34-7ubuntu0.1" - }, - { - "key": "libc6_2.31-0ubuntu9.14_amd64", - "name": "libc6", - "version": "2.31-0ubuntu9.14" - }, - { - "key": "libcrypt1_1-4.4.10-10ubuntu4_amd64", - "name": "libcrypt1", - "version": "1:4.4.10-10ubuntu4" - }, - { - "key": "libgcc-s1_10.5.0-1ubuntu1_20.04_amd64", - "name": "libgcc-s1", - "version": "10.5.0-1ubuntu1~20.04" - }, - { - "key": "gcc-10-base_10.5.0-1ubuntu1_20.04_amd64", - "name": "gcc-10-base", - "version": "10.5.0-1ubuntu1~20.04" - }, - { - "key": "libattr1_1-2.4.48-5_amd64", - "name": "libattr1", - "version": "1:2.4.48-5" - }, - { - "key": "libacl1_2.2.53-6_amd64", - "name": "libacl1", - "version": "2.2.53-6" - } - ], - "key": "coreutils_8.30-3ubuntu2_amd64", - "name": "coreutils", - "sha256": "99aa50af84de1737735f2f51e570d60f5842aa1d4a3129527906e7ffda368853", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/c/coreutils/coreutils_8.30-3ubuntu2_amd64.deb", - "version": "8.30-3ubuntu2" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libselinux1_3.0-1build2_amd64", - "name": "libselinux1", - "sha256": "1b8674b6f9e62fbae768d9ffbd686955d08db889ee4107d15ae02d1ec033cc7b", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/libs/libselinux/libselinux1_3.0-1build2_amd64.deb", - "version": "3.0-1build2" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libpcre2-8-0_10.34-7ubuntu0.1_amd64", - "name": "libpcre2-8-0", - "sha256": "5229f14c06074ae5f2d6dd7cef2c9dff8dd57c6ecf1381ff019fe5d233cc275f", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/p/pcre2/libpcre2-8-0_10.34-7ubuntu0.1_amd64.deb", - "version": "10.34-7ubuntu0.1" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libattr1_1-2.4.48-5_amd64", - "name": "libattr1", - "sha256": "d916bb73d9a160ccaa48d997c823af528cb6b4174c5234c744b40ae5aa85ce98", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/a/attr/libattr1_2.4.48-5_amd64.deb", - "version": "1:2.4.48-5" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libacl1_2.2.53-6_amd64", - "name": "libacl1", - "sha256": "9fa9cc2f8eeccd8d29efcb998111b082432c65de75ca60ad9c333289bb3bb765", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/a/acl/libacl1_2.2.53-6_amd64.deb", - "version": "2.2.53-6" - }, - { - "arch": "amd64", - "dependencies": [ - { - "key": "libsigsegv2_2.12-2_amd64", - "name": "libsigsegv2", - "version": "2.12-2" - }, - { - "key": "libc6_2.31-0ubuntu9.14_amd64", - "name": "libc6", - "version": "2.31-0ubuntu9.14" - }, - { - "key": "libcrypt1_1-4.4.10-10ubuntu4_amd64", - "name": "libcrypt1", - "version": "1:4.4.10-10ubuntu4" - }, - { - "key": "libgcc-s1_10.5.0-1ubuntu1_20.04_amd64", - "name": "libgcc-s1", - "version": "10.5.0-1ubuntu1~20.04" - }, - { - "key": "gcc-10-base_10.5.0-1ubuntu1_20.04_amd64", - "name": "gcc-10-base", - "version": "10.5.0-1ubuntu1~20.04" - }, - { - "key": "libreadline8_8.0-4_amd64", - "name": "libreadline8", - "version": "8.0-4" - }, - { - "key": "libtinfo6_6.2-0ubuntu2.1_amd64", - "name": "libtinfo6", - "version": "6.2-0ubuntu2.1" - }, - { - "key": "readline-common_8.0-4_amd64", - "name": "readline-common", - "version": "8.0-4" - }, - { - "key": "libmpfr6_4.0.2-1_amd64", - "name": "libmpfr6", - "version": "4.0.2-1" - }, - { - "key": "libgmp10_2-6.2.0-p-dfsg-4ubuntu0.1_amd64", - "name": "libgmp10", - "version": "2:6.2.0+dfsg-4ubuntu0.1" - } - ], - "key": "gawk_1-5.0.1-p-dfsg-1ubuntu0.1_amd64", - "name": "gawk", - "sha256": "5d48f427156f9d65f433a90af21033051102db391b1c1a7a07babd17dced5453", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/g/gawk/gawk_5.0.1+dfsg-1ubuntu0.1_amd64.deb", - "version": "1:5.0.1+dfsg-1ubuntu0.1" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libsigsegv2_2.12-2_amd64", - "name": "libsigsegv2", - "sha256": "58279e0a8af9cc299d7195f4b5dc1922f4b0779c1166d3715b335944102f9f7e", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/libs/libsigsegv/libsigsegv2_2.12-2_amd64.deb", - "version": "2.12-2" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libreadline8_8.0-4_amd64", - "name": "libreadline8", - "sha256": "5c0e982098eeb1b69a1360f4dc20553397d0a41240f3b2fc2812ee3f02274a82", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/r/readline/libreadline8_8.0-4_amd64.deb", - "version": "8.0-4" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libtinfo6_6.2-0ubuntu2.1_amd64", - "name": "libtinfo6", - "sha256": "711a3a901c3a71561565558865699efa9c07a99fdc810ffe086a5636f89c6431", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/n/ncurses/libtinfo6_6.2-0ubuntu2.1_amd64.deb", - "version": "6.2-0ubuntu2.1" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "readline-common_8.0-4_amd64", - "name": "readline-common", - "sha256": "38c3ac67e2dab4122a2f948f433c4cb5d5653d82b323f3ff30599797b7adee9f", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/r/readline/readline-common_8.0-4_all.deb", - "version": "8.0-4" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libmpfr6_4.0.2-1_amd64", - "name": "libmpfr6", - "sha256": "d098b67c3e1492a1c21a6a0d9befc88344e59a0d0eb6109384f85d8524a608cb", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/m/mpfr4/libmpfr6_4.0.2-1_amd64.deb", - "version": "4.0.2-1" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libgmp10_2-6.2.0-p-dfsg-4ubuntu0.1_amd64", - "name": "libgmp10", - "sha256": "541dc5050b0cecdecbfe155641588ba08da645b61b11fc4bcb045f2f4773da43", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/g/gmp/libgmp10_6.2.0+dfsg-4ubuntu0.1_amd64.deb", - "version": "2:6.2.0+dfsg-4ubuntu0.1" - }, - { - "arch": "amd64", - "dependencies": [ - { - "key": "libudev1_245.4-4ubuntu3.23_amd64", - "name": "libudev1", - "version": "245.4-4ubuntu3.23" - }, - { - "key": "libc6_2.31-0ubuntu9.14_amd64", - "name": "libc6", - "version": "2.31-0ubuntu9.14" - }, - { - "key": "libcrypt1_1-4.4.10-10ubuntu4_amd64", - "name": "libcrypt1", - "version": "1:4.4.10-10ubuntu4" - }, - { - "key": "libgcc-s1_10.5.0-1ubuntu1_20.04_amd64", - "name": "libgcc-s1", - "version": "10.5.0-1ubuntu1~20.04" - }, - { - "key": "gcc-10-base_10.5.0-1ubuntu1_20.04_amd64", - "name": "gcc-10-base", - "version": "10.5.0-1ubuntu1~20.04" - } - ], - "key": "dosfstools_4.1-2_amd64", - "name": "dosfstools", - "sha256": "58492d84924cee267cb3cba0e64e1241accde967748e6a1f31820fa74892ee32", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/d/dosfstools/dosfstools_4.1-2_amd64.deb", - "version": "4.1-2" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libudev1_245.4-4ubuntu3.23_amd64", - "name": "libudev1", - "sha256": "a9521025f12a45a91ed198fa10221e149caaba0f1156e07a641ebf02a5449805", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/s/systemd/libudev1_245.4-4ubuntu3.23_amd64.deb", - "version": "245.4-4ubuntu3.23" - }, - { - "arch": "amd64", - "dependencies": [ - { - "key": "liblzma5_5.2.4-1ubuntu1.1_amd64", - "name": "liblzma5", - "version": "5.2.4-1ubuntu1.1" - }, - { - "key": "libc6_2.31-0ubuntu9.14_amd64", - "name": "libc6", - "version": "2.31-0ubuntu9.14" - }, - { - "key": "libcrypt1_1-4.4.10-10ubuntu4_amd64", - "name": "libcrypt1", - "version": "1:4.4.10-10ubuntu4" - }, - { - "key": "libgcc-s1_10.5.0-1ubuntu1_20.04_amd64", - "name": "libgcc-s1", - "version": "10.5.0-1ubuntu1~20.04" - }, - { - "key": "gcc-10-base_10.5.0-1ubuntu1_20.04_amd64", - "name": "gcc-10-base", - "version": "10.5.0-1ubuntu1~20.04" - } - ], - "key": "libunwind8_1.2.1-9ubuntu0.1_amd64", - "name": "libunwind8", - "sha256": "269f62bfb9fc6d7e5bbfb600b8f688e2d94099ff9dc0fddc28351330915212d1", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/libu/libunwind/libunwind8_1.2.1-9ubuntu0.1_amd64.deb", - "version": "1.2.1-9ubuntu0.1" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "liblzma5_5.2.4-1ubuntu1.1_amd64", - "name": "liblzma5", - "sha256": "f545d34c86119802fbae869a09e1077a714e12a01ef6a3ef67fdc745e5db311d", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/x/xz-utils/liblzma5_5.2.4-1ubuntu1.1_amd64.deb", - "version": "5.2.4-1ubuntu1.1" - }, - { - "arch": "amd64", - "dependencies": [ - { - "key": "libc6_2.31-0ubuntu9.14_amd64", - "name": "libc6", - "version": "2.31-0ubuntu9.14" - }, - { - "key": "libcrypt1_1-4.4.10-10ubuntu4_amd64", - "name": "libcrypt1", - "version": "1:4.4.10-10ubuntu4" - }, - { - "key": "libgcc-s1_10.5.0-1ubuntu1_20.04_amd64", - "name": "libgcc-s1", - "version": "10.5.0-1ubuntu1~20.04" - }, - { - "key": "gcc-10-base_10.5.0-1ubuntu1_20.04_amd64", - "name": "gcc-10-base", - "version": "10.5.0-1ubuntu1~20.04" - } - ], - "key": "mtools_4.0.24-1_amd64", - "name": "mtools", - "sha256": "69e3dd6afa31643cf57a2475eb4156998cbc3144ec07985a9d65b0e78731743c", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/m/mtools/mtools_4.0.24-1_amd64.deb", - "version": "4.0.24-1" - }, - { - "arch": "amd64", - "dependencies": [ - { - "key": "zlib1g_1-1.2.11.dfsg-2ubuntu1.5_amd64", - "name": "zlib1g", - "version": "1:1.2.11.dfsg-2ubuntu1.5" - }, - { - "key": "libc6_2.31-0ubuntu9.14_amd64", - "name": "libc6", - "version": "2.31-0ubuntu9.14" - }, - { - "key": "libcrypt1_1-4.4.10-10ubuntu4_amd64", - "name": "libcrypt1", - "version": "1:4.4.10-10ubuntu4" - }, - { - "key": "libgcc-s1_10.5.0-1ubuntu1_20.04_amd64", - "name": "libgcc-s1", - "version": "10.5.0-1ubuntu1~20.04" - }, - { - "key": "gcc-10-base_10.5.0-1ubuntu1_20.04_amd64", - "name": "gcc-10-base", - "version": "10.5.0-1ubuntu1~20.04" - }, - { - "key": "libssl1.1_1.1.1f-1ubuntu2.22_amd64", - "name": "libssl1.1", - "version": "1.1.1f-1ubuntu2.22" - }, - { - "key": "libselinux1_3.0-1build2_amd64", - "name": "libselinux1", - "version": "3.0-1build2" - }, - { - "key": "libpcre2-8-0_10.34-7ubuntu0.1_amd64", - "name": "libpcre2-8-0", - "version": "10.34-7ubuntu0.1" - }, - { - "key": "libgssapi-krb5-2_1.17-6ubuntu4.4_amd64", - "name": "libgssapi-krb5-2", - "version": "1.17-6ubuntu4.4" - }, - { - "key": "libkrb5support0_1.17-6ubuntu4.4_amd64", - "name": "libkrb5support0", - "version": "1.17-6ubuntu4.4" - }, - { - "key": "libkrb5-3_1.17-6ubuntu4.4_amd64", - "name": "libkrb5-3", - "version": "1.17-6ubuntu4.4" - }, - { - "key": "libkeyutils1_1.6-6ubuntu1.1_amd64", - "name": "libkeyutils1", - "version": "1.6-6ubuntu1.1" - }, - { - "key": "libk5crypto3_1.17-6ubuntu4.4_amd64", - "name": "libk5crypto3", - "version": "1.17-6ubuntu4.4" - }, - { - "key": "libcom-err2_1.45.5-2ubuntu1.1_amd64", - "name": "libcom-err2", - "version": "1.45.5-2ubuntu1.1" - }, - { - "key": "libfido2-1_1.3.1-1ubuntu2_amd64", - "name": "libfido2-1", - "version": "1.3.1-1ubuntu2" - }, - { - "key": "libudev1_245.4-4ubuntu3.23_amd64", - "name": "libudev1", - "version": "245.4-4ubuntu3.23" - }, - { - "key": "libcbor0.6_0.6.0-0ubuntu1_amd64", - "name": "libcbor0.6", - "version": "0.6.0-0ubuntu1" - }, - { - "key": "libedit2_3.1-20191231-1_amd64", - "name": "libedit2", - "version": "3.1-20191231-1" - }, - { - "key": "libtinfo6_6.2-0ubuntu2.1_amd64", - "name": "libtinfo6", - "version": "6.2-0ubuntu2.1" - }, - { - "key": "libbsd0_0.10.0-1_amd64", - "name": "libbsd0", - "version": "0.10.0-1" - }, - { - "key": "passwd_1-4.8.1-1ubuntu5.20.04.5_amd64", - "name": "passwd", - "version": "1:4.8.1-1ubuntu5.20.04.5" - }, - { - "key": "libpam-modules_1.3.1-5ubuntu4.7_amd64", - "name": "libpam-modules", - "version": "1.3.1-5ubuntu4.7" - }, - { - "key": "libpam-modules-bin_1.3.1-5ubuntu4.7_amd64", - "name": "libpam-modules-bin", - "version": "1.3.1-5ubuntu4.7" - }, - { - "key": "libpam0g_1.3.1-5ubuntu4.7_amd64", - "name": "libpam0g", - "version": "1.3.1-5ubuntu4.7" - }, - { - "key": "libaudit1_1-2.8.5-2ubuntu6_amd64", - "name": "libaudit1", - "version": "1:2.8.5-2ubuntu6" - }, - { - "key": "libcap-ng0_0.7.9-2.1build1_amd64", - "name": "libcap-ng0", - "version": "0.7.9-2.1build1" - }, - { - "key": "libaudit-common_1-2.8.5-2ubuntu6_amd64", - "name": "libaudit-common", - "version": "1:2.8.5-2ubuntu6" - }, - { - "key": "libdb5.3_5.3.28-p-dfsg1-0.6ubuntu2_amd64", - "name": "libdb5.3", - "version": "5.3.28+dfsg1-0.6ubuntu2" - }, - { - "key": "libsemanage1_3.0-1build2_amd64", - "name": "libsemanage1", - "version": "3.0-1build2" - }, - { - "key": "libsepol1_3.0-1ubuntu0.1_amd64", - "name": "libsepol1", - "version": "3.0-1ubuntu0.1" - }, - { - "key": "libbz2-1.0_1.0.8-2_amd64", - "name": "libbz2-1.0", - "version": "1.0.8-2" - }, - { - "key": "libsemanage-common_3.0-1build2_amd64", - "name": "libsemanage-common", - "version": "3.0-1build2" - }, - { - "key": "dpkg_1.19.7ubuntu3.2_amd64", - "name": "dpkg", - "version": "1.19.7ubuntu3.2" - }, - { - "key": "tar_1.30-p-dfsg-7ubuntu0.20.04.4_amd64", - "name": "tar", - "version": "1.30+dfsg-7ubuntu0.20.04.4" - }, - { - "key": "libacl1_2.2.53-6_amd64", - "name": "libacl1", - "version": "2.2.53-6" - }, - { - "key": "libzstd1_1.4.4-p-dfsg-3ubuntu0.1_amd64", - "name": "libzstd1", - "version": "1.4.4+dfsg-3ubuntu0.1" - }, - { - "key": "liblzma5_5.2.4-1ubuntu1.1_amd64", - "name": "liblzma5", - "version": "5.2.4-1ubuntu1.1" - }, - { - "key": "adduser_3.118ubuntu2_amd64", - "name": "adduser", - "version": "3.118ubuntu2" - } - ], - "key": "openssh-client_1-8.2p1-4ubuntu0.11_amd64", - "name": "openssh-client", - "sha256": "4df6dd0ce56ef519f884483b8b993027d54fd7f80baf4c415236fc5180b345c2", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/o/openssh/openssh-client_8.2p1-4ubuntu0.11_amd64.deb", - "version": "1:8.2p1-4ubuntu0.11" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "zlib1g_1-1.2.11.dfsg-2ubuntu1.5_amd64", - "name": "zlib1g", - "sha256": "bf67018f5303466eb468680b637a5d3f3bb17b9d44decf3d82d40b35babcd3e0", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/z/zlib/zlib1g_1.2.11.dfsg-2ubuntu1.5_amd64.deb", - "version": "1:1.2.11.dfsg-2ubuntu1.5" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libgssapi-krb5-2_1.17-6ubuntu4.4_amd64", - "name": "libgssapi-krb5-2", - "sha256": "873956e64e6e8c3dcbe2f62beaf919199a63e026483d1823410f9f79c954b1e2", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/k/krb5/libgssapi-krb5-2_1.17-6ubuntu4.4_amd64.deb", - "version": "1.17-6ubuntu4.4" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libkrb5support0_1.17-6ubuntu4.4_amd64", - "name": "libkrb5support0", - "sha256": "4997d0cbd7b5bcd940a981f5ab231de89febe3ee0ee53c113a0b4bf556cb97e1", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/k/krb5/libkrb5support0_1.17-6ubuntu4.4_amd64.deb", - "version": "1.17-6ubuntu4.4" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libkrb5-3_1.17-6ubuntu4.4_amd64", - "name": "libkrb5-3", - "sha256": "4457de873b2ad6f81311f6464568321751a4a8382526155f8560ec04ccfb9e94", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/k/krb5/libkrb5-3_1.17-6ubuntu4.4_amd64.deb", - "version": "1.17-6ubuntu4.4" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libkeyutils1_1.6-6ubuntu1.1_amd64", - "name": "libkeyutils1", - "sha256": "5a098b2585e549b997a979c38e5bfcc07a5df3efef4753e41ad4dab1122d576c", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/k/keyutils/libkeyutils1_1.6-6ubuntu1.1_amd64.deb", - "version": "1.6-6ubuntu1.1" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libk5crypto3_1.17-6ubuntu4.4_amd64", - "name": "libk5crypto3", - "sha256": "046e292eb3beb82cc83365a4580a2c0448b484e8ce47f6057771cf44ccc9be45", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/k/krb5/libk5crypto3_1.17-6ubuntu4.4_amd64.deb", - "version": "1.17-6ubuntu4.4" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libcom-err2_1.45.5-2ubuntu1.1_amd64", - "name": "libcom-err2", - "sha256": "25ad33e306bf4ed08fbd39bf32db643f189c6ed1ec2acb19553d6a2bf69e590d", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/e/e2fsprogs/libcom-err2_1.45.5-2ubuntu1.1_amd64.deb", - "version": "1.45.5-2ubuntu1.1" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libfido2-1_1.3.1-1ubuntu2_amd64", - "name": "libfido2-1", - "sha256": "3af0d3b8ef2cff01d9a2f04bca11cf16fd91a6f5d5bd2fcf915c7ff24ffacc04", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/libf/libfido2/libfido2-1_1.3.1-1ubuntu2_amd64.deb", - "version": "1.3.1-1ubuntu2" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libcbor0.6_0.6.0-0ubuntu1_amd64", - "name": "libcbor0.6", - "sha256": "bcf2b0dd3b62cc29d28b1a4150f6023c8b57c5dbf3cb4cdb8ee51bcdaf072739", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/libc/libcbor/libcbor0.6_0.6.0-0ubuntu1_amd64.deb", - "version": "0.6.0-0ubuntu1" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libedit2_3.1-20191231-1_amd64", - "name": "libedit2", - "sha256": "51a1190157e2dfe2c26bbdc114d1fc659456def2e78e6e9582809cf92a0a49a4", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/libe/libedit/libedit2_3.1-20191231-1_amd64.deb", - "version": "3.1-20191231-1" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libbsd0_0.10.0-1_amd64", - "name": "libbsd0", - "sha256": "4f668025fe923a372eb7fc368d6769fcfff6809233d48fd20fc072917cd82e60", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/libb/libbsd/libbsd0_0.10.0-1_amd64.deb", - "version": "0.10.0-1" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "passwd_1-4.8.1-1ubuntu5.20.04.5_amd64", - "name": "passwd", - "sha256": "839d12b834d2ec87945020482493b435ac0297eba9dcbd9ce049f1c542790de9", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/s/shadow/passwd_4.8.1-1ubuntu5.20.04.5_amd64.deb", - "version": "1:4.8.1-1ubuntu5.20.04.5" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libpam-modules_1.3.1-5ubuntu4.7_amd64", - "name": "libpam-modules", - "sha256": "aef66cca70cd3b384cc12d385076fc793206be25ffaf7ff52334e14f95d03e0e", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/p/pam/libpam-modules_1.3.1-5ubuntu4.7_amd64.deb", - "version": "1.3.1-5ubuntu4.7" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libpam-modules-bin_1.3.1-5ubuntu4.7_amd64", - "name": "libpam-modules-bin", - "sha256": "644e9b03c46d7b99d6bcfe6105d57eeeb00086273081633f5e89951df4600df3", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/p/pam/libpam-modules-bin_1.3.1-5ubuntu4.7_amd64.deb", - "version": "1.3.1-5ubuntu4.7" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libpam0g_1.3.1-5ubuntu4.7_amd64", - "name": "libpam0g", - "sha256": "afc769e31f70c5ccfd9f184019b382c0e4455b0b6494704ec010b811baeea511", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/p/pam/libpam0g_1.3.1-5ubuntu4.7_amd64.deb", - "version": "1.3.1-5ubuntu4.7" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libaudit1_1-2.8.5-2ubuntu6_amd64", - "name": "libaudit1", - "sha256": "fb539f4d848d00e9472444285831e0204b9e92e7ee65dbb72b56e144a6dbedf8", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/a/audit/libaudit1_2.8.5-2ubuntu6_amd64.deb", - "version": "1:2.8.5-2ubuntu6" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libcap-ng0_0.7.9-2.1build1_amd64", - "name": "libcap-ng0", - "sha256": "e8606a60a92aa8054d1620781889a8b709c3db8714e3b03b3987f81c7e168d06", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/libc/libcap-ng/libcap-ng0_0.7.9-2.1build1_amd64.deb", - "version": "0.7.9-2.1build1" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libaudit-common_1-2.8.5-2ubuntu6_amd64", - "name": "libaudit-common", - "sha256": "9fa4a291df5682f5fee12aacdddd9ed09445c352c80d8a1af36056866e4b4906", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/a/audit/libaudit-common_2.8.5-2ubuntu6_all.deb", - "version": "1:2.8.5-2ubuntu6" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libdb5.3_5.3.28-p-dfsg1-0.6ubuntu2_amd64", - "name": "libdb5.3", - "sha256": "330775026b5e31340387fb58e12e40e241ca34cbbb6c0c28331bd83cb47c3656", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/d/db5.3/libdb5.3_5.3.28+dfsg1-0.6ubuntu2_amd64.deb", - "version": "5.3.28+dfsg1-0.6ubuntu2" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libsemanage1_3.0-1build2_amd64", - "name": "libsemanage1", - "sha256": "0d0acf32d855061b30ee8d2a84421e08adbaa781ce8884730ec3c3e3b49bd1f9", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/libs/libsemanage/libsemanage1_3.0-1build2_amd64.deb", - "version": "3.0-1build2" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libsepol1_3.0-1ubuntu0.1_amd64", - "name": "libsepol1", - "sha256": "83811dd753b41ed1bb7cf31fdebcb51dd6e1ad452c4f5ce6a39791ec64152108", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/libs/libsepol/libsepol1_3.0-1ubuntu0.1_amd64.deb", - "version": "3.0-1ubuntu0.1" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libbz2-1.0_1.0.8-2_amd64", - "name": "libbz2-1.0", - "sha256": "f3632ec38402ca0f9c61a6854469f1a0eba9389d3f73827b466033c3d5bbec69", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/b/bzip2/libbz2-1.0_1.0.8-2_amd64.deb", - "version": "1.0.8-2" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libsemanage-common_3.0-1build2_amd64", - "name": "libsemanage-common", - "sha256": "4141f803c811277d2ea56568a676a79f06017b8c5eb57891741808a27c55fffb", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/libs/libsemanage/libsemanage-common_3.0-1build2_all.deb", - "version": "3.0-1build2" - }, - { - "arch": "amd64", - "dependencies": [ - { - "key": "tar_1.30-p-dfsg-7ubuntu0.20.04.4_amd64", - "name": "tar", - "version": "1.30+dfsg-7ubuntu0.20.04.4" - }, - { - "key": "libselinux1_3.0-1build2_amd64", - "name": "libselinux1", - "version": "3.0-1build2" - }, - { - "key": "libpcre2-8-0_10.34-7ubuntu0.1_amd64", - "name": "libpcre2-8-0", - "version": "10.34-7ubuntu0.1" - }, - { - "key": "libc6_2.31-0ubuntu9.14_amd64", - "name": "libc6", - "version": "2.31-0ubuntu9.14" - }, - { - "key": "libcrypt1_1-4.4.10-10ubuntu4_amd64", - "name": "libcrypt1", - "version": "1:4.4.10-10ubuntu4" - }, - { - "key": "libgcc-s1_10.5.0-1ubuntu1_20.04_amd64", - "name": "libgcc-s1", - "version": "10.5.0-1ubuntu1~20.04" - }, - { - "key": "gcc-10-base_10.5.0-1ubuntu1_20.04_amd64", - "name": "gcc-10-base", - "version": "10.5.0-1ubuntu1~20.04" - }, - { - "key": "libacl1_2.2.53-6_amd64", - "name": "libacl1", - "version": "2.2.53-6" - }, - { - "key": "zlib1g_1-1.2.11.dfsg-2ubuntu1.5_amd64", - "name": "zlib1g", - "version": "1:1.2.11.dfsg-2ubuntu1.5" - }, - { - "key": "libzstd1_1.4.4-p-dfsg-3ubuntu0.1_amd64", - "name": "libzstd1", - "version": "1.4.4+dfsg-3ubuntu0.1" - }, - { - "key": "liblzma5_5.2.4-1ubuntu1.1_amd64", - "name": "liblzma5", - "version": "5.2.4-1ubuntu1.1" - }, - { - "key": "libbz2-1.0_1.0.8-2_amd64", - "name": "libbz2-1.0", - "version": "1.0.8-2" - } - ], - "key": "dpkg_1.19.7ubuntu3.2_amd64", - "name": "dpkg", - "sha256": "6fdb88a04deb4cc57a164a43de7efe2ab36fd31f6b1df9a3aca4b39fc0a4d87f", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/d/dpkg/dpkg_1.19.7ubuntu3.2_amd64.deb", - "version": "1.19.7ubuntu3.2" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "tar_1.30-p-dfsg-7ubuntu0.20.04.4_amd64", - "name": "tar", - "sha256": "7387a202f0c71a5638c9514f854f2efd9809e24fa5212d1c7227b02bd06be5ec", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/t/tar/tar_1.30+dfsg-7ubuntu0.20.04.4_amd64.deb", - "version": "1.30+dfsg-7ubuntu0.20.04.4" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libzstd1_1.4.4-p-dfsg-3ubuntu0.1_amd64", - "name": "libzstd1", - "sha256": "7a4422dadb90510dc90765c308d65e61a3e244ceb3886394335e48cff7559e69", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/libz/libzstd/libzstd1_1.4.4+dfsg-3ubuntu0.1_amd64.deb", - "version": "1.4.4+dfsg-3ubuntu0.1" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "adduser_3.118ubuntu2_amd64", - "name": "adduser", - "sha256": "5f7ea9d1d52a2a9c349468f89d160230e21c8542faed1b1a97c23bce873e17b4", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/a/adduser/adduser_3.118ubuntu2_all.deb", - "version": "3.118ubuntu2" - }, - { - "arch": "amd64", - "dependencies": [ - { - "key": "libpopt0_1.16-14_amd64", - "name": "libpopt0", - "version": "1.16-14" - }, - { - "key": "libc6_2.31-0ubuntu9.14_amd64", - "name": "libc6", - "version": "2.31-0ubuntu9.14" - }, - { - "key": "libcrypt1_1-4.4.10-10ubuntu4_amd64", - "name": "libcrypt1", - "version": "1:4.4.10-10ubuntu4" - }, - { - "key": "libgcc-s1_10.5.0-1ubuntu1_20.04_amd64", - "name": "libgcc-s1", - "version": "10.5.0-1ubuntu1~20.04" - }, - { - "key": "gcc-10-base_10.5.0-1ubuntu1_20.04_amd64", - "name": "gcc-10-base", - "version": "10.5.0-1ubuntu1~20.04" - }, - { - "key": "libacl1_2.2.53-6_amd64", - "name": "libacl1", - "version": "2.2.53-6" - }, - { - "key": "lsb-base_11.1.0ubuntu2_amd64", - "name": "lsb-base", - "version": "11.1.0ubuntu2" - }, - { - "key": "init-system-helpers_1.57_amd64", - "name": "init-system-helpers", - "version": "1.57" - }, - { - "key": "perl-base_5.30.0-9ubuntu0.5_amd64", - "name": "perl-base", - "version": "5.30.0-9ubuntu0.5" - }, - { - "key": "dpkg_1.19.7ubuntu3.2_amd64", - "name": "dpkg", - "version": "1.19.7ubuntu3.2" - }, - { - "key": "tar_1.30-p-dfsg-7ubuntu0.20.04.4_amd64", - "name": "tar", - "version": "1.30+dfsg-7ubuntu0.20.04.4" - }, - { - "key": "libselinux1_3.0-1build2_amd64", - "name": "libselinux1", - "version": "3.0-1build2" - }, - { - "key": "libpcre2-8-0_10.34-7ubuntu0.1_amd64", - "name": "libpcre2-8-0", - "version": "10.34-7ubuntu0.1" - }, - { - "key": "zlib1g_1-1.2.11.dfsg-2ubuntu1.5_amd64", - "name": "zlib1g", - "version": "1:1.2.11.dfsg-2ubuntu1.5" - }, - { - "key": "libzstd1_1.4.4-p-dfsg-3ubuntu0.1_amd64", - "name": "libzstd1", - "version": "1.4.4+dfsg-3ubuntu0.1" - }, - { - "key": "liblzma5_5.2.4-1ubuntu1.1_amd64", - "name": "liblzma5", - "version": "5.2.4-1ubuntu1.1" - }, - { - "key": "libbz2-1.0_1.0.8-2_amd64", - "name": "libbz2-1.0", - "version": "1.0.8-2" - } - ], - "key": "rsync_3.1.3-8ubuntu0.7_amd64", - "name": "rsync", - "sha256": "272c2377df80d037eeaa7af2fcbde7d31c25d807b7e889fc0a90fe8bb83f6263", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/r/rsync/rsync_3.1.3-8ubuntu0.7_amd64.deb", - "version": "3.1.3-8ubuntu0.7" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libpopt0_1.16-14_amd64", - "name": "libpopt0", - "sha256": "8548aa6b6a1f2a7b865a13f8643eb2a1caca9113f82c89f24e75c84d7099eed1", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/p/popt/libpopt0_1.16-14_amd64.deb", - "version": "1.16-14" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "lsb-base_11.1.0ubuntu2_amd64", - "name": "lsb-base", - "sha256": "eb40f6e96189cbde27a9cc4681f7ba7b4d51552d1ad74b876aea6a7ccb83f628", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/l/lsb/lsb-base_11.1.0ubuntu2_all.deb", - "version": "11.1.0ubuntu2" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "init-system-helpers_1.57_amd64", - "name": "init-system-helpers", - "sha256": "5628715888e797fcddf2c5b3c3923b0a76dad78916025a52e19375703dd9586c", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/i/init-system-helpers/init-system-helpers_1.57_all.deb", - "version": "1.57" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "perl-base_5.30.0-9ubuntu0.5_amd64", - "name": "perl-base", - "sha256": "9997a2d7cf8a0ce2270730414c269e04a3ad6457280c21741c9e8f2489b18ba7", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/p/perl/perl-base_5.30.0-9ubuntu0.5_amd64.deb", - "version": "5.30.0-9ubuntu0.5" - }, - { - "arch": "amd64", - "dependencies": [ - { - "key": "zlib1g_1-1.2.11.dfsg-2ubuntu1.5_amd64", - "name": "zlib1g", - "version": "1:1.2.11.dfsg-2ubuntu1.5" - }, - { - "key": "libc6_2.31-0ubuntu9.14_amd64", - "name": "libc6", - "version": "2.31-0ubuntu9.14" - }, - { - "key": "libcrypt1_1-4.4.10-10ubuntu4_amd64", - "name": "libcrypt1", - "version": "1:4.4.10-10ubuntu4" - }, - { - "key": "libgcc-s1_10.5.0-1ubuntu1_20.04_amd64", - "name": "libgcc-s1", - "version": "10.5.0-1ubuntu1~20.04" - }, - { - "key": "gcc-10-base_10.5.0-1ubuntu1_20.04_amd64", - "name": "gcc-10-base", - "version": "10.5.0-1ubuntu1~20.04" - }, - { - "key": "libstdc-p--p-6_10.5.0-1ubuntu1_20.04_amd64", - "name": "libstdc++6", - "version": "10.5.0-1ubuntu1~20.04" - }, - { - "key": "liblzma5_5.2.4-1ubuntu1.1_amd64", - "name": "liblzma5", - "version": "5.2.4-1ubuntu1.1" - }, - { - "key": "liblz4-1_1.9.2-2ubuntu0.20.04.1_amd64", - "name": "liblz4-1", - "version": "1.9.2-2ubuntu0.20.04.1" - } - ], - "key": "zstd_1.4.4-p-dfsg-3_amd64", - "name": "zstd", - "sha256": "fa2c41d144ab414c70fbbf176dcd7adbe77fc1cb0a060fc7eec8a09ec94cd1c7", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/universe/libz/libzstd/zstd_1.4.4+dfsg-3_amd64.deb", - "version": "1.4.4+dfsg-3" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libstdc-p--p-6_10.5.0-1ubuntu1_20.04_amd64", - "name": "libstdc++6", - "sha256": "7f9222342d3551d063bf651319ec397c39278eeeb9ab5950ae0e8c28ef0af431", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/g/gcc-10/libstdc++6_10.5.0-1ubuntu1~20.04_amd64.deb", - "version": "10.5.0-1ubuntu1~20.04" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "liblz4-1_1.9.2-2ubuntu0.20.04.1_amd64", - "name": "liblz4-1", - "sha256": "a9b706941eb8e2a0012869dbe63c7337fc9629aaf919563f63e92baa2a3a7c18", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/l/lz4/liblz4-1_1.9.2-2ubuntu0.20.04.1_amd64.deb", - "version": "1.9.2-2ubuntu0.20.04.1" - }, - { - "arch": "amd64", - "dependencies": [ - { - "key": "libc6_2.31-0ubuntu9.14_amd64", - "name": "libc6", - "version": "2.31-0ubuntu9.14" - }, - { - "key": "libcrypt1_1-4.4.10-10ubuntu4_amd64", - "name": "libcrypt1", - "version": "1:4.4.10-10ubuntu4" - }, - { - "key": "libgcc-s1_10.5.0-1ubuntu1_20.04_amd64", - "name": "libgcc-s1", - "version": "10.5.0-1ubuntu1~20.04" - }, - { - "key": "gcc-10-base_10.5.0-1ubuntu1_20.04_amd64", - "name": "gcc-10-base", - "version": "10.5.0-1ubuntu1~20.04" - } - ], - "key": "gzip_1.10-0ubuntu4.1_amd64", - "name": "gzip", - "sha256": "218a588ffe646e69dcde814634cb85bcaad1486da4fa3060937ab12ef04fed9c", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/g/gzip/gzip_1.10-0ubuntu4.1_amd64.deb", - "version": "1.10-0ubuntu4.1" - }, - { - "arch": "amd64", - "dependencies": [ - { - "key": "libsystemd0_245.4-4ubuntu3.23_amd64", - "name": "libsystemd0", - "version": "245.4-4ubuntu3.23" - }, - { - "key": "liblzma5_5.2.4-1ubuntu1.1_amd64", - "name": "liblzma5", - "version": "5.2.4-1ubuntu1.1" - }, - { - "key": "libc6_2.31-0ubuntu9.14_amd64", - "name": "libc6", - "version": "2.31-0ubuntu9.14" - }, - { - "key": "libcrypt1_1-4.4.10-10ubuntu4_amd64", - "name": "libcrypt1", - "version": "1:4.4.10-10ubuntu4" - }, - { - "key": "libgcc-s1_10.5.0-1ubuntu1_20.04_amd64", - "name": "libgcc-s1", - "version": "10.5.0-1ubuntu1~20.04" - }, - { - "key": "gcc-10-base_10.5.0-1ubuntu1_20.04_amd64", - "name": "gcc-10-base", - "version": "10.5.0-1ubuntu1~20.04" - }, - { - "key": "liblz4-1_1.9.2-2ubuntu0.20.04.1_amd64", - "name": "liblz4-1", - "version": "1.9.2-2ubuntu0.20.04.1" - }, - { - "key": "libgcrypt20_1.8.5-5ubuntu1.1_amd64", - "name": "libgcrypt20", - "version": "1.8.5-5ubuntu1.1" - }, - { - "key": "libgpg-error0_1.37-1_amd64", - "name": "libgpg-error0", - "version": "1.37-1" - }, - { - "key": "libstdc-p--p-6_10.5.0-1ubuntu1_20.04_amd64", - "name": "libstdc++6", - "version": "10.5.0-1ubuntu1~20.04" - }, - { - "key": "libseccomp2_2.5.1-1ubuntu1_20.04.2_amd64", - "name": "libseccomp2", - "version": "2.5.1-1ubuntu1~20.04.2" - }, - { - "key": "libgnutls30_3.6.13-2ubuntu1.10_amd64", - "name": "libgnutls30", - "version": "3.6.13-2ubuntu1.10" - }, - { - "key": "libunistring2_0.9.10-2_amd64", - "name": "libunistring2", - "version": "0.9.10-2" - }, - { - "key": "libtasn1-6_4.16.0-2_amd64", - "name": "libtasn1-6", - "version": "4.16.0-2" - }, - { - "key": "libp11-kit0_0.23.20-1ubuntu0.1_amd64", - "name": "libp11-kit0", - "version": "0.23.20-1ubuntu0.1" - }, - { - "key": "libffi7_3.3-4_amd64", - "name": "libffi7", - "version": "3.3-4" - }, - { - "key": "libnettle7_3.5.1-p-really3.5.1-2ubuntu0.2_amd64", - "name": "libnettle7", - "version": "3.5.1+really3.5.1-2ubuntu0.2" - }, - { - "key": "libidn2-0_2.2.0-2_amd64", - "name": "libidn2-0", - "version": "2.2.0-2" - }, - { - "key": "libhogweed5_3.5.1-p-really3.5.1-2ubuntu0.2_amd64", - "name": "libhogweed5", - "version": "3.5.1+really3.5.1-2ubuntu0.2" - }, - { - "key": "libgmp10_2-6.2.0-p-dfsg-4ubuntu0.1_amd64", - "name": "libgmp10", - "version": "2:6.2.0+dfsg-4ubuntu0.1" - }, - { - "key": "ubuntu-keyring_2020.02.11.4_amd64", - "name": "ubuntu-keyring", - "version": "2020.02.11.4" - }, - { - "key": "libapt-pkg6.0_2.0.10_amd64", - "name": "libapt-pkg6.0", - "version": "2.0.10" - }, - { - "key": "zlib1g_1-1.2.11.dfsg-2ubuntu1.5_amd64", - "name": "zlib1g", - "version": "1:1.2.11.dfsg-2ubuntu1.5" - }, - { - "key": "libzstd1_1.4.4-p-dfsg-3ubuntu0.1_amd64", - "name": "libzstd1", - "version": "1.4.4+dfsg-3ubuntu0.1" - }, - { - "key": "libudev1_245.4-4ubuntu3.23_amd64", - "name": "libudev1", - "version": "245.4-4ubuntu3.23" - }, - { - "key": "libbz2-1.0_1.0.8-2_amd64", - "name": "libbz2-1.0", - "version": "1.0.8-2" - }, - { - "key": "adduser_3.118ubuntu2_amd64", - "name": "adduser", - "version": "3.118ubuntu2" - }, - { - "key": "passwd_1-4.8.1-1ubuntu5.20.04.5_amd64", - "name": "passwd", - "version": "1:4.8.1-1ubuntu5.20.04.5" - }, - { - "key": "libpam-modules_1.3.1-5ubuntu4.7_amd64", - "name": "libpam-modules", - "version": "1.3.1-5ubuntu4.7" - }, - { - "key": "libpam-modules-bin_1.3.1-5ubuntu4.7_amd64", - "name": "libpam-modules-bin", - "version": "1.3.1-5ubuntu4.7" - }, - { - "key": "libselinux1_3.0-1build2_amd64", - "name": "libselinux1", - "version": "3.0-1build2" - }, - { - "key": "libpcre2-8-0_10.34-7ubuntu0.1_amd64", - "name": "libpcre2-8-0", - "version": "10.34-7ubuntu0.1" - }, - { - "key": "libpam0g_1.3.1-5ubuntu4.7_amd64", - "name": "libpam0g", - "version": "1.3.1-5ubuntu4.7" - }, - { - "key": "libaudit1_1-2.8.5-2ubuntu6_amd64", - "name": "libaudit1", - "version": "1:2.8.5-2ubuntu6" - }, - { - "key": "libcap-ng0_0.7.9-2.1build1_amd64", - "name": "libcap-ng0", - "version": "0.7.9-2.1build1" - }, - { - "key": "libaudit-common_1-2.8.5-2ubuntu6_amd64", - "name": "libaudit-common", - "version": "1:2.8.5-2ubuntu6" - }, - { - "key": "libdb5.3_5.3.28-p-dfsg1-0.6ubuntu2_amd64", - "name": "libdb5.3", - "version": "5.3.28+dfsg1-0.6ubuntu2" - }, - { - "key": "libsemanage1_3.0-1build2_amd64", - "name": "libsemanage1", - "version": "3.0-1build2" - }, - { - "key": "libsepol1_3.0-1ubuntu0.1_amd64", - "name": "libsepol1", - "version": "3.0-1ubuntu0.1" - }, - { - "key": "libsemanage-common_3.0-1build2_amd64", - "name": "libsemanage-common", - "version": "3.0-1build2" - } - ], - "key": "apt_2.0.10_amd64", - "name": "apt", - "sha256": "642a65e0cd79c4f3202976ae1e70c0339927947e6b5c77abac7abb35d0ca9404", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/a/apt/apt_2.0.10_amd64.deb", - "version": "2.0.10" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libsystemd0_245.4-4ubuntu3.23_amd64", - "name": "libsystemd0", - "sha256": "147da635fb19d7e2a25e3f9f26ee4de719704dd14decb84ed43a97c2454a015b", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/s/systemd/libsystemd0_245.4-4ubuntu3.23_amd64.deb", - "version": "245.4-4ubuntu3.23" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libgcrypt20_1.8.5-5ubuntu1.1_amd64", - "name": "libgcrypt20", - "sha256": "f040f801e2cced9bd82e484c23678cb9b464d04974a9cf4cf25fc9ad09d9e90d", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/libg/libgcrypt20/libgcrypt20_1.8.5-5ubuntu1.1_amd64.deb", - "version": "1.8.5-5ubuntu1.1" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libgpg-error0_1.37-1_amd64", - "name": "libgpg-error0", - "sha256": "4744163850851f60080a8b0fdf3dd3258d93114bd83f8024414737a2826da7fe", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/libg/libgpg-error/libgpg-error0_1.37-1_amd64.deb", - "version": "1.37-1" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libseccomp2_2.5.1-1ubuntu1_20.04.2_amd64", - "name": "libseccomp2", - "sha256": "e2fe929b69bec68e5e00eaecc2e661da0b31d8a5e9df298df43e2ba40983bdc1", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/libs/libseccomp/libseccomp2_2.5.1-1ubuntu1~20.04.2_amd64.deb", - "version": "2.5.1-1ubuntu1~20.04.2" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libgnutls30_3.6.13-2ubuntu1.10_amd64", - "name": "libgnutls30", - "sha256": "0e11ab42085fffeecdb9700288e63e59a883d1c081a37c878e3b807d5f8d6894", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/g/gnutls28/libgnutls30_3.6.13-2ubuntu1.10_amd64.deb", - "version": "3.6.13-2ubuntu1.10" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libunistring2_0.9.10-2_amd64", - "name": "libunistring2", - "sha256": "4ccfbc1e3a1cbc42616bd4fd407e01eb1434996c8500ac2fbccb7a2e1bcb166a", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/libu/libunistring/libunistring2_0.9.10-2_amd64.deb", - "version": "0.9.10-2" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libtasn1-6_4.16.0-2_amd64", - "name": "libtasn1-6", - "sha256": "f4d9cbcc2c915a58557ecf3ea6ffb42321c8a2f444945af57e64d9ce18744329", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/libt/libtasn1-6/libtasn1-6_4.16.0-2_amd64.deb", - "version": "4.16.0-2" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libp11-kit0_0.23.20-1ubuntu0.1_amd64", - "name": "libp11-kit0", - "sha256": "e6c415cef9c7e829e43cac6cfea7371222005650cf4751eee22fd19710d4fa8e", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/p/p11-kit/libp11-kit0_0.23.20-1ubuntu0.1_amd64.deb", - "version": "0.23.20-1ubuntu0.1" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libffi7_3.3-4_amd64", - "name": "libffi7", - "sha256": "4584aa8fef1bf5086168ce2f7078cd2ebd78fdc4cc0d86d958d795d4e0b0f50d", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/libf/libffi/libffi7_3.3-4_amd64.deb", - "version": "3.3-4" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libnettle7_3.5.1-p-really3.5.1-2ubuntu0.2_amd64", - "name": "libnettle7", - "sha256": "3496aed83407fde71e0dc5988b28e8fd7f07a2f27fcf3e0f214c7cd86667eecd", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/n/nettle/libnettle7_3.5.1+really3.5.1-2ubuntu0.2_amd64.deb", - "version": "3.5.1+really3.5.1-2ubuntu0.2" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libidn2-0_2.2.0-2_amd64", - "name": "libidn2-0", - "sha256": "698abe11d444c7e87c656c2083373d1e0fae04b3a64be0371adb2bb180092537", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/libi/libidn2/libidn2-0_2.2.0-2_amd64.deb", - "version": "2.2.0-2" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libhogweed5_3.5.1-p-really3.5.1-2ubuntu0.2_amd64", - "name": "libhogweed5", - "sha256": "12d76fa6c9149af3da228e3062faaefd7d12e0c6fd3424579627672437a84f14", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/n/nettle/libhogweed5_3.5.1+really3.5.1-2ubuntu0.2_amd64.deb", - "version": "3.5.1+really3.5.1-2ubuntu0.2" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "ubuntu-keyring_2020.02.11.4_amd64", - "name": "ubuntu-keyring", - "sha256": "2684fae16e90a9ff3cb4dc08a8af5bd9973d38763b60e5f458dea0b403a39788", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/u/ubuntu-keyring/ubuntu-keyring_2020.02.11.4_all.deb", - "version": "2020.02.11.4" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libapt-pkg6.0_2.0.10_amd64", - "name": "libapt-pkg6.0", - "sha256": "31c9edaf662200d5ae5c3ca891786a5717af247cd31c528f1b6a1644574c3490", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/a/apt/libapt-pkg6.0_2.0.10_amd64.deb", - "version": "2.0.10" - }, - { - "arch": "amd64", - "dependencies": [ - { - "key": "debianutils_4.9.1_amd64", - "name": "debianutils", - "version": "4.9.1" - }, - { - "key": "libc6_2.31-0ubuntu9.14_amd64", - "name": "libc6", - "version": "2.31-0ubuntu9.14" - }, - { - "key": "libcrypt1_1-4.4.10-10ubuntu4_amd64", - "name": "libcrypt1", - "version": "1:4.4.10-10ubuntu4" - }, - { - "key": "libgcc-s1_10.5.0-1ubuntu1_20.04_amd64", - "name": "libgcc-s1", - "version": "10.5.0-1ubuntu1~20.04" - }, - { - "key": "gcc-10-base_10.5.0-1ubuntu1_20.04_amd64", - "name": "gcc-10-base", - "version": "10.5.0-1ubuntu1~20.04" - }, - { - "key": "base-files_11ubuntu5.8_amd64", - "name": "base-files", - "version": "11ubuntu5.8" - }, - { - "key": "libtinfo6_6.2-0ubuntu2.1_amd64", - "name": "libtinfo6", - "version": "6.2-0ubuntu2.1" - } - ], - "key": "bash_5.0-6ubuntu1.2_amd64", - "name": "bash", - "sha256": "58e03b3be46c54eeb22ede348baf2b8251a6f3e0ce4f0bf0191c516f90f1f283", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/b/bash/bash_5.0-6ubuntu1.2_amd64.deb", - "version": "5.0-6ubuntu1.2" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "debianutils_4.9.1_amd64", - "name": "debianutils", - "sha256": "535571a8898bb69476b1d0ed6893b4700c312bff14fc7687b7f1fdfe18f55a1f", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/d/debianutils/debianutils_4.9.1_amd64.deb", - "version": "4.9.1" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "base-files_11ubuntu5.8_amd64", - "name": "base-files", - "sha256": "f92bb87ad4347c4b9c33c3e4f013a483ac637d65e56d330f429b0be7c1739a74", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/b/base-files/base-files_11ubuntu5.8_amd64.deb", - "version": "11ubuntu5.8" - }, - { - "arch": "amd64", - "dependencies": [ - { - "key": "libperl5.30_5.30.0-9ubuntu0.5_amd64", - "name": "libperl5.30", - "version": "5.30.0-9ubuntu0.5" - }, - { - "key": "perl-modules-5.30_5.30.0-9ubuntu0.5_amd64", - "name": "perl-modules-5.30", - "version": "5.30.0-9ubuntu0.5" - }, - { - "key": "perl-base_5.30.0-9ubuntu0.5_amd64", - "name": "perl-base", - "version": "5.30.0-9ubuntu0.5" - }, - { - "key": "dpkg_1.19.7ubuntu3.2_amd64", - "name": "dpkg", - "version": "1.19.7ubuntu3.2" - }, - { - "key": "tar_1.30-p-dfsg-7ubuntu0.20.04.4_amd64", - "name": "tar", - "version": "1.30+dfsg-7ubuntu0.20.04.4" - }, - { - "key": "libselinux1_3.0-1build2_amd64", - "name": "libselinux1", - "version": "3.0-1build2" - }, - { - "key": "libpcre2-8-0_10.34-7ubuntu0.1_amd64", - "name": "libpcre2-8-0", - "version": "10.34-7ubuntu0.1" - }, - { - "key": "libc6_2.31-0ubuntu9.14_amd64", - "name": "libc6", - "version": "2.31-0ubuntu9.14" - }, - { - "key": "libcrypt1_1-4.4.10-10ubuntu4_amd64", - "name": "libcrypt1", - "version": "1:4.4.10-10ubuntu4" - }, - { - "key": "libgcc-s1_10.5.0-1ubuntu1_20.04_amd64", - "name": "libgcc-s1", - "version": "10.5.0-1ubuntu1~20.04" - }, - { - "key": "gcc-10-base_10.5.0-1ubuntu1_20.04_amd64", - "name": "gcc-10-base", - "version": "10.5.0-1ubuntu1~20.04" - }, - { - "key": "libacl1_2.2.53-6_amd64", - "name": "libacl1", - "version": "2.2.53-6" - }, - { - "key": "zlib1g_1-1.2.11.dfsg-2ubuntu1.5_amd64", - "name": "zlib1g", - "version": "1:1.2.11.dfsg-2ubuntu1.5" - }, - { - "key": "libzstd1_1.4.4-p-dfsg-3ubuntu0.1_amd64", - "name": "libzstd1", - "version": "1.4.4+dfsg-3ubuntu0.1" - }, - { - "key": "liblzma5_5.2.4-1ubuntu1.1_amd64", - "name": "liblzma5", - "version": "5.2.4-1ubuntu1.1" - }, - { - "key": "libbz2-1.0_1.0.8-2_amd64", - "name": "libbz2-1.0", - "version": "1.0.8-2" - }, - { - "key": "libgdbm6_1.18.1-5_amd64", - "name": "libgdbm6", - "version": "1.18.1-5" - }, - { - "key": "libgdbm-compat4_1.18.1-5_amd64", - "name": "libgdbm-compat4", - "version": "1.18.1-5" - }, - { - "key": "libdb5.3_5.3.28-p-dfsg1-0.6ubuntu2_amd64", - "name": "libdb5.3", - "version": "5.3.28+dfsg1-0.6ubuntu2" - } - ], - "key": "perl_5.30.0-9ubuntu0.5_amd64", - "name": "perl", - "sha256": "e98e1122172fe4d32bf45503c2dedf5d4771a2995a7070f19bb8d31e998c0fb5", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/p/perl/perl_5.30.0-9ubuntu0.5_amd64.deb", - "version": "5.30.0-9ubuntu0.5" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libperl5.30_5.30.0-9ubuntu0.5_amd64", - "name": "libperl5.30", - "sha256": "7546cd8f74d9300823c4470a55abf2e6e97be1961e2033cd927e775b774eba3d", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/p/perl/libperl5.30_5.30.0-9ubuntu0.5_amd64.deb", - "version": "5.30.0-9ubuntu0.5" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "perl-modules-5.30_5.30.0-9ubuntu0.5_amd64", - "name": "perl-modules-5.30", - "sha256": "f2093f468af836518bfe80269a94526c75c9c67582e45adf1ec4ed305fd9ee6e", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/p/perl/perl-modules-5.30_5.30.0-9ubuntu0.5_all.deb", - "version": "5.30.0-9ubuntu0.5" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libgdbm6_1.18.1-5_amd64", - "name": "libgdbm6", - "sha256": "8ac1108585490fc2321df8d27cc565054003d86fab0ab8b8e2a4a2d050a53098", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/g/gdbm/libgdbm6_1.18.1-5_amd64.deb", - "version": "1.18.1-5" - }, - { - "arch": "amd64", - "dependencies": [], - "key": "libgdbm-compat4_1.18.1-5_amd64", - "name": "libgdbm-compat4", - "sha256": "4f93394bda7be86b94fb32ac1bdf1a0b7124b8150962b55512371c3a816a382d", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/g/gdbm/libgdbm-compat4_1.18.1-5_amd64.deb", - "version": "1.18.1-5" - }, - { - "arch": "amd64", - "dependencies": [ - { - "key": "liblzma5_5.2.4-1ubuntu1.1_amd64", - "name": "liblzma5", - "version": "5.2.4-1ubuntu1.1" - }, - { - "key": "libc6_2.31-0ubuntu9.14_amd64", - "name": "libc6", - "version": "2.31-0ubuntu9.14" - }, - { - "key": "libcrypt1_1-4.4.10-10ubuntu4_amd64", - "name": "libcrypt1", - "version": "1:4.4.10-10ubuntu4" - }, - { - "key": "libgcc-s1_10.5.0-1ubuntu1_20.04_amd64", - "name": "libgcc-s1", - "version": "10.5.0-1ubuntu1~20.04" - }, - { - "key": "gcc-10-base_10.5.0-1ubuntu1_20.04_amd64", - "name": "gcc-10-base", - "version": "10.5.0-1ubuntu1~20.04" - } - ], - "key": "xz-utils_5.2.4-1ubuntu1.1_amd64", - "name": "xz-utils", - "sha256": "6b192aa8e56c7e16ad7b3f39e6978a8ca899194e4d7af05ca4640170eafa8272", - "url": "https://snapshot.ubuntu.com/ubuntu/20240301T030400Z/pool/main/x/xz-utils/xz-utils_5.2.4-1ubuntu1.1_amd64.deb", - "version": "5.2.4-1ubuntu1.1" - } - ], - "version": 1 -} \ No newline at end of file diff --git a/bazel/focal.yaml b/bazel/focal.yaml deleted file mode 100644 index 595cc2c1c26a..000000000000 --- a/bazel/focal.yaml +++ /dev/null @@ -1,38 +0,0 @@ -# Packages used by our ubuntu base, adapted from: -# https://github.com/GoogleContainerTools/rules_distroless/blob/2ce7b477def75579c49bab25266f953f30275c88/examples/ubuntu_snapshot/BUILD.bazel -# -# Anytime this file is changed, the lockfile needs to be regenerated. See WORKSPACE -# for instructions. -version: 1 - -# Various channels used to pull packages from -sources: - - channel: focal main - url: https://snapshot.ubuntu.com/ubuntu/20240301T030400Z - - channel: focal universe - url: https://snapshot.ubuntu.com/ubuntu/20240301T030400Z - - channel: focal-security main - url: https://snapshot.ubuntu.com/ubuntu/20240301T030400Z - - channel: focal-updates main - url: https://snapshot.ubuntu.com/ubuntu/20240301T030400Z - -archs: - - "amd64" - -packages: - - "ca-certificates" - - "coreutils" # for chmod - - "gawk" # for build-bootstrap-config-image - - "dosfstools" - - "libssl1.1" - - "libunwind8" - - "mtools" - - "openssh-client" # used to SSH into image - - "rsync" - - "zstd" - - "dpkg" # for apt list --installed - - "gzip" # for tar-ing up ic regsitry store in systests - - "apt" - - "bash" - - "perl" - - "xz-utils" # for //rs/backup diff --git a/bazel/hermetic_cc_toolchain.patch b/bazel/hermetic_cc_toolchain.patch index 14cf14994669..4c84efaf854b 100644 --- a/bazel/hermetic_cc_toolchain.patch +++ b/bazel/hermetic_cc_toolchain.patch @@ -6,19 +6,37 @@ # Strip debug_info off every target for determinism # (https://github.com/ziglang/zig/issues/23821, https://github.com/ziglang/zig/issues/23823). diff --git a/MODULE.bazel b/MODULE.bazel -index 409d626..1265298 100644 +index 409d626..15b70b3 100644 --- a/MODULE.bazel +++ b/MODULE.bazel -@@ -49,6 +49,7 @@ register_toolchains( +@@ -49,7 +49,25 @@ register_toolchains( "@zig_sdk//libc_aware/toolchain:linux_arm64_musl", # wasm/wasi toolchains "@zig_sdk//toolchain:wasip1_wasm", + "@zig_sdk//toolchain:none_wasm", - + # These toolchains are only registered locally. dev_dependency = True, + ) ++ ++bazel_dep(name = "bazel_skylib", version = "1.7.1") ++ ++new_local_repository = use_repo_rule("@bazel_tools//tools/build_defs/repo:local.bzl", "new_local_repository") ++new_local_repository( ++ name = "strip", ++ build_file_content = """ ++load("@bazel_skylib//rules:native_binary.bzl", "native_binary") ++ ++native_binary( ++name = "strip_bin", ++src = ":strip", ++visibility = ["//visibility:public"], ++) ++""", ++ path = "/usr/bin", ++) diff --git a/toolchain/defs.bzl b/toolchain/defs.bzl -index f6f613e..02d5597 100644 +index f6f613e..49482fb 100644 --- a/toolchain/defs.bzl +++ b/toolchain/defs.bzl @@ -60,7 +60,8 @@ def toolchains( @@ -37,12 +55,12 @@ index f6f613e..02d5597 100644 host_platform_ext = host_platform_ext, + extra_settings = extra_settings ) - + def _quote(s): @@ -110,6 +112,8 @@ def _zig_repository_impl(repository_ctx): "host_platform": host_platform, } - + + extra_settings = "[" + " ".join([_quote(str(setting)) for setting in repository_ctx.attr.extra_settings]) + "]" + # Fetch Label dependencies before doing download/extract. @@ -57,7 +75,7 @@ index f6f613e..02d5597 100644 "libc_aware/platform/BUILD": "//toolchain/libc_aware/platform:BUILD", "libc_aware/toolchain/BUILD": "//toolchain/libc_aware/toolchain:BUILD", @@ -126,6 +129,7 @@ def _zig_repository_impl(repository_ctx): - + for dest, src in { "BUILD": "//toolchain:BUILD.sdk.bazel", + "toolchain/BUILD": "//toolchain/toolchain:BUILD", @@ -71,7 +89,7 @@ index f6f613e..02d5597 100644 + "{extra_settings}": extra_settings, }, ) - + @@ -230,6 +235,7 @@ zig_repository = repository_rule( "host_platform_sha256": attr.string_dict(), "url_formats": attr.string_list(allow_empty = False), @@ -80,20 +98,36 @@ index f6f613e..02d5597 100644 }, environ = ["HERMETIC_CC_TOOLCHAIN_CACHE_PREFIX"], implementation = _zig_repository_impl, +@@ -272,6 +278,7 @@ def declare_files(os): + ":zig", + ":{}_includes".format(target_config.zigtarget), + cxx_tool_label, ++ "@strip//:strip_bin", + ], + ) + +@@ -281,6 +288,7 @@ def declare_files(os): + ":zig", + ":{}_includes".format(target_config.zigtarget), + cxx_tool_label, ++ "@strip//:strip_bin", + ] + native.glob([ + "lib/libc/{}/**".format(target_config.libc), + "lib/libcxx/**", diff --git a/toolchain/ext.bzl b/toolchain/ext.bzl index ebf0ff8..c2e8af3 100644 --- a/toolchain/ext.bzl +++ b/toolchain/ext.bzl @@ -1,6 +1,11 @@ load("@hermetic_cc_toolchain//toolchain:defs.bzl", zig_toolchains = "toolchains") - + def _toolchains_impl(ctx): - zig_toolchains() + extra_settings = [] + for mod in ctx.modules: + for tag in mod.tags.extra_settings: + extra_settings += tag.settings - + -toolchains = module_extension(implementation = _toolchains_impl) + zig_toolchains(extra_settings = extra_settings) + @@ -103,11 +137,11 @@ index d4a8344..faafc5b 100644 --- a/toolchain/platform/defs.bzl +++ b/toolchain/platform/defs.bzl @@ -16,6 +16,7 @@ def declare_platforms(): - + # We can support GOARCH=wasm32 after https://github.com/golang/go/issues/63131 declare_platform("wasm", "wasm32", "wasi", "wasip1") + declare_platform("wasm", "wasm32", "none", "none") - + def declare_libc_aware_platforms(): # create @zig_sdk//{os}_{arch}_platform entries with zig and go conventions diff --git a/toolchain/private/defs.bzl b/toolchain/private/defs.bzl @@ -120,7 +154,7 @@ index 716a3a3..b88d082 100644 ret.append(_target_wasm()) + ret.append(_target_wasm_no_wasi()) return ret - + def _target_macos(gocpu, zigcpu): @@ -222,3 +223,22 @@ def _target_wasm(): ld_zig_subcmd = "wasm-ld", @@ -152,7 +186,7 @@ index 552fcaa..8f7dba5 100644 @@ -4,4 +4,4 @@ package( default_visibility = ["//visibility:public"], ) - + -declare_toolchains() +declare_toolchains(extra_settings = {extra_settings}) diff --git a/toolchain/toolchain/defs.bzl b/toolchain/toolchain/defs.bzl @@ -161,7 +195,7 @@ index 50cc881..0549c26 100644 +++ b/toolchain/toolchain/defs.bzl @@ -1,6 +1,6 @@ load("@hermetic_cc_toolchain//toolchain/private:defs.bzl", "target_structs") - + -def declare_toolchains(): +def declare_toolchains(extra_settings = []): for target_config in target_structs(): @@ -170,16 +204,16 @@ index 50cc881..0549c26 100644 @@ -12,7 +12,7 @@ def declare_toolchains(): if hasattr(target_config, "libc_constraint"): extra_constraints = ["@zig_sdk//libc:unconstrained"] - + - _declare_toolchain(gotarget, zigtarget, target_config.constraint_values + extra_constraints) + _declare_toolchain(gotarget, zigtarget, target_config.constraint_values + extra_constraints, extra_settings) - + def declare_libc_aware_toolchains(): for target_config in target_structs(): @@ -25,13 +25,14 @@ def declare_libc_aware_toolchains(): if hasattr(target_config, "libc_constraint"): _declare_toolchain(gotarget, zigtarget, target_config.constraint_values + [target_config.libc_constraint]) - + -def _declare_toolchain(gotarget, zigtarget, target_compatible_with): +def _declare_toolchain(gotarget, zigtarget, target_compatible_with, extra_settings): # register two kinds of toolchain targets: Go and Zig conventions. @@ -216,7 +250,7 @@ index d1d59f9..4f471ee 100644 @@ -161,6 +161,71 @@ fn execUnix(arena: mem.Allocator, params: ExecParams) u8 { return 1; } - + +fn makeSuffix(allocator: std.mem.Allocator, pwd: []const u8) ![]const u8 { + var it = std.mem.tokenize(u8, pwd, "/"); + @@ -288,7 +322,7 @@ index d1d59f9..4f471ee 100644 @@ -217,9 +282,19 @@ fn parseArgs( var env = process.getEnvMap(arena) catch |err| return parseFatal(arena, "error getting env: {s}", .{@errorName(err)}); - + + // Get the current working directory (PWD) + const allocator = std.heap.page_allocator; + const pwd = std.fs.cwd().realpathAlloc(allocator, ".") catch { @@ -304,15 +338,15 @@ index d1d59f9..4f471ee 100644 - try env.put("ZIG_GLOBAL_CACHE_DIR", CACHE_DIR); + try env.put("ZIG_LOCAL_CACHE_DIR", cache_dir); + try env.put("ZIG_GLOBAL_CACHE_DIR", cache_dir); - + // args is the path to the zig binary and args to it. var args = ArrayListUnmanaged([]const u8){}; @@ -283,7 +358,7 @@ fn getRunMode(self_exe: []const u8, self_base_noexe: []const u8) error{BadParent return error.BadParent; - + const got_os = it.next() orelse return error.BadParent; - if (mem.indexOf(u8, "linux,macos,windows,wasi", got_os) == null) + if (mem.indexOf(u8, "linux,macos,windows,wasi,freestanding", got_os) == null) return error.BadParent; - + // ABI triple is too much of a moving target diff --git a/bazel/noble.lock.json b/bazel/noble.lock.json index d5d072316f83..8baad37e0cfc 100755 --- a/bazel/noble.lock.json +++ b/bazel/noble.lock.json @@ -1665,6 +1665,36 @@ "url": "https://snapshot.ubuntu.com/ubuntu/20240923T000000Z/pool/main/i/init-system-helpers/init-system-helpers_1.66ubuntu1_all.deb", "version": "1.66ubuntu1" }, + { + "arch": "amd64", + "dependencies": [ + { + "key": "liblzma5_5.6.1-p-really5.4.5-1build0.1_amd64", + "name": "liblzma5", + "version": "5.6.1+really5.4.5-1build0.1" + }, + { + "key": "libc6_2.39-0ubuntu8.3_amd64", + "name": "libc6", + "version": "2.39-0ubuntu8.3" + }, + { + "key": "libgcc-s1_14-20240412-0ubuntu1_amd64", + "name": "libgcc-s1", + "version": "14-20240412-0ubuntu1" + }, + { + "key": "gcc-14-base_14-20240412-0ubuntu1_amd64", + "name": "gcc-14-base", + "version": "14-20240412-0ubuntu1" + } + ], + "key": "xz-utils_5.6.1-p-really5.4.5-1build0.1_amd64", + "name": "xz-utils", + "sha256": "d9e9aa167ef1108f81c7007917b35c7a1edc09c49752ccd4558f03dc2a044b11", + "url": "https://snapshot.ubuntu.com/ubuntu/20240923T000000Z/pool/main/x/xz-utils/xz-utils_5.6.1+really5.4.5-1build0.1_amd64.deb", + "version": "5.6.1+really5.4.5-1build0.1" + }, { "arch": "amd64", "dependencies": [ diff --git a/bazel/noble.yaml b/bazel/noble.yaml index 0707aa915d4d..da1bf4139362 100644 --- a/bazel/noble.yaml +++ b/bazel/noble.yaml @@ -1,7 +1,7 @@ # Packages used by our ubuntu base, adapted from: # https://github.com/GoogleContainerTools/rules_distroless/blob/2ce7b477def75579c49bab25266f953f30275c88/examples/ubuntu_snapshot/BUILD.bazel # -# Anytime this file is changed, the lockfile needs to be regenerated. See WORKSPACE +# Anytime this file is changed, the lockfile needs to be regenerated. See MODULE # for instructions. version: 1 @@ -35,4 +35,5 @@ packages: - "perl" - "rsync" - "tar" + - "xz-utils" - "zstd" diff --git a/ci/container/Dockerfile b/ci/container/Dockerfile index 947593b0d859..61111bcda5ab 100644 --- a/ci/container/Dockerfile +++ b/ci/container/Dockerfile @@ -1,6 +1,6 @@ # https://hub.docker.com/_/ubuntu -# focal-20240216 -FROM ubuntu@sha256:48c35f3de33487442af224ed4aabac19fd9bfbd91ee90e9471d412706b20ba73 +# ubuntu:noble-20250415.1 +FROM ghcr.io/dfinity/library/ubuntu@sha256:6015f66923d7afbc53558d7ccffd325d43b4e249f41a6e93eef074c9505d2233 ENV TZ=UTC ARG PACKAGE_FILE=ci/container/files/packages.common @@ -12,14 +12,12 @@ RUN apt -yq update && \ RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg && \ echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null && \ - curl -fsSL "https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/xUbuntu_20.04/Release.key" | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/devel_kubic_libcontainers_stable.gpg > /dev/null && \ - echo 'deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_20.04/ /' | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list && \ apt -yq update && \ apt -yqq install --no-install-recommends docker-ce-cli podman containernetworking-plugins buildah zip fuse-overlayfs xtail # install afl & gsutils deps for bazel-fuzzers RUN curl -L "https://apt.llvm.org/llvm-snapshot.gpg.key" | apt-key add - && \ - echo "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-18 main" | tee -a /etc/apt/sources.list.d/llvm.list && \ + echo "deb http://apt.llvm.org/noble/ llvm-toolchain-noble-18 main" | tee -a /etc/apt/sources.list.d/llvm.list && \ echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] http://packages.cloud.google.com/apt cloud-sdk main" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list && \ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key --keyring /usr/share/keyrings/cloud.google.gpg add - && \ apt -yq update && \ @@ -46,6 +44,14 @@ RUN export DEBIAN_FRONTEND=noninteractive && \ cd .. && \ rm -rf e2fsdroid +# Install an older libtinfo for rules_haskell +RUN mkdir libtinfo && \ + cd libtinfo && \ + wget "http://mirrors.kernel.org/ubuntu/pool/universe/n/ncurses/libtinfo5_6.3-2ubuntu0.1_amd64.deb" && \ + apt -yqq install ./libtinfo5_6.3-2ubuntu0.1_amd64.deb && \ + cd .. && \ + rm -rf libtinfo + ARG mkcert_version=1.4.4 ARG mkcert_sha=6d31c65b03972c6dc4a14ab429f2928300518b26503f58723e532d1b0a3bbb52 RUN curl -fsSL https://github.com/FiloSottile/mkcert/releases/download/v${mkcert_version}/mkcert-v${mkcert_version}-linux-amd64 -o /usr/local/bin/mkcert && \ @@ -118,10 +124,8 @@ RUN . /opt/nvm/nvm.sh && \ nvm install ${dependency_mgmt_default_node_version} && \ nvm install ${dependency_mgmt_oisy_wallet_node_version} -# Create user groups -RUN groupadd -g 1000 ubuntu && useradd -ms /bin/bash -u 1000 -g 1000 ubuntu && \ - # needed for github actions runner \ - groupadd -g 1001 buildifier && useradd -ms /bin/bash -u 1001 -g 1001 buildifier && \ +# Create user groups needed for github actions runner +RUN groupadd -g 1001 buildifier && useradd -ms /bin/bash -u 1001 -g 1001 -G ubuntu buildifier && \ # CI before script requires sudo \ echo "ALL ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers diff --git a/ci/container/TAG b/ci/container/TAG index 856d33711a65..8f6b2948f3fe 100644 --- a/ci/container/TAG +++ b/ci/container/TAG @@ -1 +1 @@ -da2368e22d997879528d1dd42aea5ac9cd55bef427fe0f0ce99a867d723cc068 +844f7be0c2407e733aeda4a9bc4f098c067c537002992253ba466122e93fdd36 diff --git a/ci/container/container-run.sh b/ci/container/container-run.sh index 4d69eec20418..e09184082433 100755 --- a/ci/container/container-run.sh +++ b/ci/container/container-run.sh @@ -69,9 +69,14 @@ IMAGE="$IMAGE:$IMAGE_TAG" if ! sudo podman "${PODMAN_ARGS[@]}" image exists $IMAGE; then if ! sudo podman "${PODMAN_ARGS[@]}" pull $IMAGE; then # fallback to building the image - docker() { sudo podman "${PODMAN_ARGS[@]}" "$@" --network=host; } + docker() { + # Preserve "${PODMAN_ARGS[@]}" in the exported function by passing + # them through a single variable, and unpacking them here. + PODMAN_ARGS=(${PODMAN_ARGS}) + sudo podman "${PODMAN_ARGS[@]}" "$@" --network=host + } export -f docker - "$REPO_ROOT"/ci/container/build-image.sh "${BUILD_ARGS[@]}" + PODMAN_ARGS="${PODMAN_ARGS[@]}" "$REPO_ROOT"/ci/container/build-image.sh "${BUILD_ARGS[@]}" unset -f docker fi fi diff --git a/ci/container/files/packages.common b/ci/container/files/packages.common index e16f1dc59201..7d63aea7895f 100644 --- a/ci/container/files/packages.common +++ b/ci/container/files/packages.common @@ -40,19 +40,19 @@ libunwind-dev libusb-1.0-0-dev libsqlite3-dev zlib1g-dev -libclang-10-dev +libclang-18-dev protobuf-compiler llvm liblmdb-dev liblzma-dev # Haskell -libtinfo5 libtinfo-dev libffi-dev libgmp-dev # IC-OS +fdisk cryptsetup-bin dosfstools fakeroot diff --git a/ci/src/dependencies/scanner/manager/bazel_rust_dependency_manager.py b/ci/src/dependencies/scanner/manager/bazel_rust_dependency_manager.py index 02236cddcef6..c848a0ba2e5c 100644 --- a/ci/src/dependencies/scanner/manager/bazel_rust_dependency_manager.py +++ b/ci/src/dependencies/scanner/manager/bazel_rust_dependency_manager.py @@ -110,8 +110,11 @@ def __transitive_bazel_string_to_dependency(bazel_string: str) -> typing.Optiona # ['zstd', 'sys', '2.0.2', 'zstd.1.5.2'] for split_string in parse_result: # 2.0.2 - if isinstance(version.parse(split_string), version.Version): - version_str = split_string + try: + if isinstance(version.parse(split_string), version.Version): + version_str = split_string + except version.InvalidVersion: + continue # split with -2.0.2 # noinspection PyUnboundLocalVariable name = result[0].split(f"-{version_str}", 1)[0] diff --git a/ic-os/bootloader/build-bootloader-tree.sh b/ic-os/bootloader/build-bootloader-tree.sh index cffad72af42f..8be9a28eba43 100755 --- a/ic-os/bootloader/build-bootloader-tree.sh +++ b/ic-os/bootloader/build-bootloader-tree.sh @@ -31,7 +31,7 @@ sudo mount -t tmpfs tmpfs-podman "${TMPFS}" TMPDIR=$(mktemp -d -t build-image-XXXXXXXXXXXX) -BASE_IMAGE="ghcr.io/dfinity/library/ubuntu@sha256:5d070ad5f7fe63623cbb99b4fc0fd997f5591303d4b03ccce50f403957d0ddc4" +BASE_IMAGE="ghcr.io/dfinity/library/ubuntu@sha256:6015f66923d7afbc53558d7ccffd325d43b4e249f41a6e93eef074c9505d2233" sudo podman --root "${TMPFS}" build --iidfile "${TMPDIR}/iidfile" - <<<" FROM $BASE_IMAGE diff --git a/rs/tests/BUILD.bazel b/rs/tests/BUILD.bazel index 883e49505e30..c53398a5866c 100644 --- a/rs/tests/BUILD.bazel +++ b/rs/tests/BUILD.bazel @@ -21,107 +21,6 @@ bool_flag( # Packages we install into the image; see base image definition and its # 'manifest = ...' field for more information PACKAGES = [ - "@focal//ca-certificates/amd64", - "@focal//bash/amd64", - "@focal//coreutils/amd64", - "@focal//gawk/amd64", - "@focal//dosfstools/amd64", - "@focal//libssl1.1/amd64", - "@focal//libunwind8/amd64", - "@focal//mtools/amd64", - "@focal//openssh-client/amd64", - "@focal//rsync/amd64", - "@focal//gzip/amd64", - "@focal//zstd/amd64", - "@focal//xz-utils/amd64", -] - -tar( - name = "sh", - mtree = [ - # needed as dpkg assumes sh is installed in a typical debian installation. - "./bin/sh type=link link=/bin/bash", - ], -) - -tar( - name = "mkfsvfat", - mtree = [ - # symlink instead of updating the PATH - "./bin/mkfs.vfat type=link link=/sbin/mkfs.vfat", - ], -) - -tar( - name = "awk", - mtree = [ - # we install the GNU variant but call 'awk' so we symlink - "./bin/awk type=link link=/usr/bin/gawk", - ], -) - -# Creates /var/lib/dpkg/status with installed package information. -dpkg_status( - name = "dpkg_status", - controls = [ - "%s:control" % package - for package in PACKAGES - ], -) - -passwd( - name = "passwd", - entries = [ - dict( - gecos = ["root"], - gid = 0, - home = "/root", - shell = "/usr/bin/bash", - uid = 0, - username = "root", - ), - ], -) - -oci_image( - name = "ubuntu_test_runtime_image_src", - architecture = "amd64", - os = "linux", - target_compatible_with = [ - "@platforms//os:linux", - ], - tars = [ - ":dpkg_status", - ":passwd", # needed because we ssh in - - # symlinks - ":awk", - ":mkfsvfat", - ":sh", - ] + PACKAGES, -) - -oci_tar( - name = "ubuntu_test_runtime.tar", - image = ":ubuntu_test_runtime_image_src", - repo_tags = ["ubuntu_test_runtime:image"], -) - -uvm_config_image( - name = "colocate_uvm_config_image", - srcs = [ - ":ubuntu_test_runtime.tar", - "//rs/tests:activate-systest-uvm-config", - ], - remap_paths = { - "activate-systest-uvm-config": "activate", - }, - tags = ["manual"], # this target will be built if required as a dependency of another target -) - -# Packages we install into the image; see base image definition and its -# 'manifest = ...' field for more information -PACKAGES_NOBLE = [ "@noble//bash/amd64", "@noble//ca-certificates/amd64", "@noble//coreutils/amd64", @@ -134,11 +33,12 @@ PACKAGES_NOBLE = [ "@noble//openssh-client/amd64", "@noble//rsync/amd64", "@noble//tar/amd64", + "@noble//xz-utils/amd64", "@noble//zstd/amd64", ] tar( - name = "sh_noble", + name = "sh", mtree = [ # needed as dpkg assumes sh is installed in a typical debian installation. "./usr/bin/sh type=link link=/bin/bash", @@ -146,7 +46,7 @@ tar( ) tar( - name = "mkfsvfat_noble", + name = "mkfsvfat", mtree = [ # symlink instead of updating the PATH "./usr/bin/mkfs.vfat type=link link=/sbin/mkfs.vfat", @@ -154,7 +54,7 @@ tar( ) tar( - name = "awk_noble", + name = "awk", mtree = [ # we install the GNU variant but call 'awk' so we symlink "./usr/bin/awk type=link link=/usr/bin/gawk", @@ -163,10 +63,10 @@ tar( # Creates /var/lib/dpkg/status with installed package information. dpkg_status( - name = "dpkg_status_noble", + name = "dpkg_status", controls = [ "%s:control" % package - for package in PACKAGES_NOBLE + for package in PACKAGES ], target_compatible_with = [ "@platforms//os:linux", @@ -174,7 +74,7 @@ dpkg_status( ) passwd( - name = "passwd_noble", + name = "passwd", entries = [ dict( gecos = ["root"], @@ -188,33 +88,33 @@ passwd( ) oci_image( - name = "ubuntu_noble_test_runtime_image_src", + name = "ubuntu_test_runtime_image_src", architecture = "amd64", os = "linux", target_compatible_with = [ "@platforms//os:linux", ], tars = [ - ":dpkg_status_noble", - ":passwd_noble", # needed because we ssh in + ":dpkg_status", + ":passwd", # needed because we ssh in # symlinks - ":awk_noble", - ":mkfsvfat_noble", - ":sh_noble", - ] + PACKAGES_NOBLE, + ":awk", + ":mkfsvfat", + ":sh", + ] + PACKAGES, ) oci_tar( - name = "ubuntu_noble_test_runtime.tar", - image = ":ubuntu_noble_test_runtime_image_src", - repo_tags = ["ubuntu_noble_test_runtime:image"], + name = "ubuntu_test_runtime.tar", + image = ":ubuntu_test_runtime_image_src", + repo_tags = ["ubuntu_test_runtime:image"], ) uvm_config_image( - name = "colocate_uvm_noble_config_image", + name = "colocate_uvm_config_image", srcs = [ - ":ubuntu_noble_test_runtime.tar", + ":ubuntu_test_runtime.tar", "//rs/tests:activate-systest-uvm-config", ], remap_paths = { diff --git a/testnet/ansible/debug_vars_dump.yml b/testnet/ansible/debug_vars_dump.yml index 22c99a4b0774..bf53ba97fd0e 100644 --- a/testnet/ansible/debug_vars_dump.yml +++ b/testnet/ansible/debug_vars_dump.yml @@ -4,5 +4,5 @@ tasks: - name: Display all variables/facts known for a host - debug: + ansible.builtin.debug: var: hostvars[inventory_hostname] diff --git a/testnet/ansible/ic_p8s_service_discovery_destroy.yml b/testnet/ansible/ic_p8s_service_discovery_destroy.yml index 0dc3c8bebdc0..8e346945d52d 100644 --- a/testnet/ansible/ic_p8s_service_discovery_destroy.yml +++ b/testnet/ansible/ic_p8s_service_discovery_destroy.yml @@ -8,7 +8,7 @@ - name: Remove all service discovery scraping targets vars: ic: "{{ ic_deployment_name }}" - uri: + ansible.builtin.uri: url: "{{ multiservice_discovery_server }}/{{ ic }}" method: DELETE return_content: true diff --git a/testnet/ansible/ic_p8s_service_discovery_install.yml b/testnet/ansible/ic_p8s_service_discovery_install.yml index 148d56a2006f..f47f7cab9b45 100644 --- a/testnet/ansible/ic_p8s_service_discovery_install.yml +++ b/testnet/ansible/ic_p8s_service_discovery_install.yml @@ -11,14 +11,14 @@ tasks: - name: Check action - fail: + ansible.builtin.fail: msg: "\"'ic_git_revision' not given.\"" when: ic_git_revision is not defined - name: Generate scrape configurations for [host_node_exporter, node_exporter, orchestrator, replica] vars: ic: "{{ ic_deployment_name }}" - uri: + ansible.builtin.uri: url: "{{ multiservice_discovery_server }}/" method: POST body_format: json @@ -35,7 +35,7 @@ - name: Generate scrape configurations for [boundary_nodes] vars: ic: "{{ ic_deployment_name }}" - uri: + ansible.builtin.uri: url: "{{ multiservice_discovery_server }}/add_boundary_node" method: POST body_format: json diff --git a/testnet/ansible/roles/ic_guest/tasks/aux_disk_push.yml b/testnet/ansible/roles/ic_guest/tasks/aux_disk_push.yml index 0cc52141be77..e5bfc937de2e 100644 --- a/testnet/ansible/roles/ic_guest/tasks/aux_disk_push.yml +++ b/testnet/ansible/roles/ic_guest/tasks/aux_disk_push.yml @@ -1,13 +1,13 @@ --- - name: Remove existing disk-img.tar.zst - file: + ansible.builtin.file: state: absent path: "{{ ic_disk_path }}/disk-img.tar.zst" run_once: true tags: [ic_guest] - name: Archive disk.img - command: + ansible.builtin.command: cmd: | tar --directory={{ ic_disk_path }} --create \ --sparse \ @@ -22,14 +22,14 @@ tags: [ic_guest] - name: Synchronize disk-img.tar.zst - synchronize: - mode: push + ansible.builtin.copy: + mode: preserve src: "{{ ic_disk_path }}/disk-img.tar.zst" dest: /var/local/ic/disk/{{ ic_deployment_name }}/{{ ic_git_revision }}/aux/disk-img.tar.zst tags: [ic_guest] - name: Unarchive file disk-img.tar.zst - unarchive: + ansible.builtin.unarchive: src: /var/local/ic/disk/{{ ic_deployment_name }}/{{ ic_git_revision }}/aux_disk-img.tar.zst dest: /var/local/ic/disk owner: root diff --git a/testnet/ansible/roles/ic_guest/tasks/create.yml b/testnet/ansible/roles/ic_guest/tasks/create.yml index 247713d98445..84efc6466e27 100644 --- a/testnet/ansible/roles/ic_guest/tasks/create.yml +++ b/testnet/ansible/roles/ic_guest/tasks/create.yml @@ -5,7 +5,7 @@ boundary_nodes: "{{ hostvars[inventory_hostname].groups.boundary | intersect(hostvars[inventory_hostname].ic_guests) | default([]) }}" aux_nodes: "{{ hostvars[inventory_hostname].groups.aux | intersect(hostvars[inventory_hostname].ic_guests) | default([]) }}" replica_nodes: "{{ hostvars[inventory_hostname].ic_guests | default([]) | difference(api_nodes) | difference(aux_nodes) | difference(boundary_nodes) }}" - shell: | + ansible.builtin.shell: | set -eExuo pipefail MEDIA_DIR="/var/local/ic/media/{{ ic_deployment_name }}/{{ ic_git_revision }}" @@ -26,7 +26,7 @@ aux_nodes: "{{ hostvars[inventory_hostname].groups.aux | intersect(hostvars[inventory_hostname].ic_guests) | default([]) }}" replica_nodes: "{{ hostvars[inventory_hostname].ic_guests | default([]) | difference(api_nodes) | difference(aux_nodes) | difference(boundary_nodes) }}" ic_disk_size_bytes: "{{ ic_disk_gb | int * (1024 | pow(3)) | int }}" - shell: | + ansible.builtin.shell: | set -eExuo pipefail # Deploy replica images @@ -48,7 +48,7 @@ - name: Copy file media.img for boundary node VMs vars: boundary_nodes: "{{ hostvars[inventory_hostname].groups.boundary | intersect(hostvars[inventory_hostname].ic_guests) | default([]) }}" - shell: | + ansible.builtin.shell: | set -eExuo pipefail MEDIA_DIR="/var/local/ic/media/{{ ic_deployment_name }}/{{ ic_git_revision }}/boundary" @@ -66,7 +66,7 @@ - name: Copy file media.img for api node VMs vars: api_nodes: "{{ hostvars[inventory_hostname].groups.api | intersect(hostvars[inventory_hostname].ic_guests) | default([]) }}" - shell: | + ansible.builtin.shell: | set -eExuo pipefail MEDIA_DIR="/var/local/ic/media/{{ ic_deployment_name }}/{{ ic_git_revision }}/api" @@ -85,7 +85,7 @@ vars: api_nodes: "{{ hostvars[inventory_hostname].groups.api | intersect(hostvars[inventory_hostname].ic_guests) | default([]) }}" ic_disk_size_bytes: "{{ ic_disk_gb | int * (1024 | pow(3)) | int }}" - shell: | + ansible.builtin.shell: | set -eExuo pipefail # Deploy replica images @@ -109,7 +109,7 @@ api_nodes: "{{ hostvars[inventory_hostname].groups.api | intersect(hostvars[inventory_hostname].ic_guests) | default([]) }}" boundary_nodes: "{{ hostvars[inventory_hostname].groups.boundary | intersect(hostvars[inventory_hostname].ic_guests) | default([]) }}" ic_disk_size_bytes: "{{ ic_disk_gb | int * (1024 | pow(3)) | int }}" - shell: | + ansible.builtin.shell: | set -eExuo pipefail # Deploy replica images @@ -132,7 +132,7 @@ vars: aux_nodes: "{{ hostvars[inventory_hostname].groups.aux | intersect(hostvars[inventory_hostname].ic_guests) | default([]) }}" ic_disk_size_bytes: "{{ ic_disk_gb | int * (1024 | pow(3)) | int }}" - shell: | + ansible.builtin.shell: | set -eExuo pipefail IMAGE_DIR="/var/local/ic/disk/{{ ic_deployment_name }}/{{ ic_git_revision }}/aux" @@ -159,7 +159,7 @@ ic_memory_kib: "{{ ic_memory_gb | int * (1024 | pow(2)) }}" mac_address: "{{ hostvars[item].mac_address }}" ipv6_interface: "{{ hostvars[item].ipv6_interface | default('vlan66') }}" - template: + ansible.builtin.template: src: ../ic_guest/templates/guest.xml dest: /var/local/ic/disk/{{ ic_deployment_name }}/{{ item }}.xml owner: root @@ -179,7 +179,7 @@ mac_address: "{{ hostvars[item].mac_address }}" ipv4_interface: "{{ hostvars[item].ipv4_interface | default('vlan66') }}" ipv6_interface: "{{ hostvars[item].ipv6_interface | default('vlan66') }}" - template: + ansible.builtin.template: src: ../ic_guest/templates/generic.xml dest: /var/local/ic/disk/{{ ic_deployment_name }}/{{ item }}.xml owner: root @@ -191,7 +191,7 @@ tags: [ic_guest] - name: Define (create) a guest - shell: | + ansible.builtin.shell: | set -eExuo pipefail virsh define "/var/local/ic/disk/{{ ic_deployment_name }}/{{ item }}.xml" virsh dominfo "{{ item }}" @@ -203,19 +203,19 @@ tags: [ic_guest] - name: Check if dfinity-hsm-agent service exist - command: service dfinity-hsm-agent status + ansible.builtin.command: service dfinity-hsm-agent status register: dfinity_hsm_agent_status failed_when: not(dfinity_hsm_agent_status.rc == 4 or dfinity_hsm_agent_status.rc == 3 or dfinity_hsm_agent_status.rc == 0) - name: Stop the dfinity-hsm-agent.service - systemd: + ansible.builtin.systemd: state: stopped name: dfinity-hsm-agent when: dfinity_hsm_agent_status.rc == 0 tags: [ic_guest] - name: Ensure potentially conflicting kernel modules are not loaded - shell: | + ansible.builtin.shell: | if lsmod | grep -q vhost_vsock; then exit 0; fi # the required kernel module is already loaded get_depends() { lsmod | awk -vmod="$1" '($1==mod){gsub(",", "\n", $4); print $4}' ; } recursive_get_depends() { while read line ; do echo $line; get_depends $line ; done | grep . ; } @@ -228,12 +228,12 @@ tags: [ic_guest] - name: Load the vhost_vsock kernel module - command: modprobe vhost_vsock + ansible.builtin.command: modprobe vhost_vsock ignore_errors: true tags: [ic_guest] - name: Start the dfinity-hsm-agent.service - systemd: + ansible.builtin.systemd: state: started name: dfinity-hsm-agent when: dfinity_hsm_agent_status.rc == 0 diff --git a/testnet/ansible/roles/ic_guest/tasks/destroy.yml b/testnet/ansible/roles/ic_guest/tasks/destroy.yml index c9ead43d6740..5cff20c4bdf6 100644 --- a/testnet/ansible/roles/ic_guest/tasks/destroy.yml +++ b/testnet/ansible/roles/ic_guest/tasks/destroy.yml @@ -1,6 +1,6 @@ --- - name: Destroy guests - shell: | + ansible.builtin.shell: | set -euo pipefail # Destroy (stop) all existing VMs from this deployment running on this node diff --git a/testnet/ansible/roles/ic_guest/tasks/disk_pull.yml b/testnet/ansible/roles/ic_guest/tasks/disk_pull.yml index a622d86b8bcb..9a85c8fa1ae2 100644 --- a/testnet/ansible/roles/ic_guest/tasks/disk_pull.yml +++ b/testnet/ansible/roles/ic_guest/tasks/disk_pull.yml @@ -4,7 +4,7 @@ aux_nodes: "{{ hostvars[inventory_hostname].groups.aux | intersect(hostvars[inventory_hostname].ic_guests) | default([]) }}" boundary_nodes: "{{ hostvars[inventory_hostname].groups.boundary | intersect(hostvars[inventory_hostname].ic_guests) | default([]) }}" replica_nodes: "{{ hostvars[inventory_hostname].ic_guests | default([]) | difference(aux_nodes) | difference(boundary_nodes) }}" - shell: | + ansible.builtin.shell: | set -eExuo pipefail # check if disk image is available on the new or the old location for the given hash PROXY_CONNECT_TIMEOUT=5 @@ -97,7 +97,7 @@ aux_nodes: "{{ hostvars[inventory_hostname].groups.aux | intersect(hostvars[inventory_hostname].ic_guests) | default([]) }}" boundary_nodes: "{{ hostvars[inventory_hostname].groups.boundary | intersect(hostvars[inventory_hostname].ic_guests) | default([]) }}" replica_nodes: "{{ hostvars[inventory_hostname].ic_guests | default([]) | difference(aux_nodes) | difference(boundary_nodes) }}" - shell: | + ansible.builtin.shell: | # if the unpacked file does not exist or if the archive is newer than the unpacked file set -eExuo pipefail diff --git a/testnet/ansible/roles/ic_guest/tasks/disk_push.yml b/testnet/ansible/roles/ic_guest/tasks/disk_push.yml index 00a7303733f2..7185917f9a72 100644 --- a/testnet/ansible/roles/ic_guest/tasks/disk_push.yml +++ b/testnet/ansible/roles/ic_guest/tasks/disk_push.yml @@ -1,13 +1,13 @@ --- - name: Remove existing disk-img.tar.zst - file: + ansible.builtin.file: state: absent path: "{{ ic_disk_path }}/disk-img.tar.zst" run_once: true tags: [ic_guest] - name: Archive disk.img - command: + ansible.builtin.command: cmd: | tar --directory={{ ic_disk_path }} --create \ --sparse \ @@ -22,14 +22,14 @@ tags: [ic_guest] - name: Synchronize disk-img.tar.zst - synchronize: - mode: push + ansible.builtin.copy: + mode: preserve src: "{{ ic_disk_path }}/disk-img.tar.zst" dest: /var/local/ic/disk/{{ ic_deployment_name }}/{{ ic_git_revision }}/disk-img.tar.zst tags: [ic_guest] - name: Unarchive file disk-img.tar.zst - unarchive: + ansible.builtin.unarchive: src: /var/local/ic/disk/{{ ic_deployment_name }}/{{ ic_git_revision }}/disk-img.tar.zst dest: /var/local/ic/disk owner: root diff --git a/testnet/ansible/roles/ic_guest/tasks/install.yml b/testnet/ansible/roles/ic_guest/tasks/install.yml index 315132321caa..e538f13b5c92 100644 --- a/testnet/ansible/roles/ic_guest/tasks/install.yml +++ b/testnet/ansible/roles/ic_guest/tasks/install.yml @@ -1,6 +1,6 @@ --- - name: Wait for replica to listen on all NNS nodes on port 8080 - include_tasks: + ansible.builtin.include_tasks: file: url_waitfor_connect.yml loop: "{{ groups['nns'] }}" loop_control: @@ -8,21 +8,21 @@ tags: [ic_guest] - name: Check if the initial neuron config exists - stat: + ansible.builtin.stat: path: "{{ inventory_file | dirname }}/initial-neurons.csv" register: stat_result become: false delegate_to: localhost run_once: true -- debug: +- ansible.builtin.debug: msg: Using the initial neuron configuration from {{ inventory_file | dirname }}/initial-neurons.csv delegate_to: localhost run_once: true when: stat_result.stat.exists - name: Set initial_neurons to path to csv file it is exists and is not set already - set_fact: + ansible.builtin.set_fact: initial_neurons: "{{ stat_result.stat.path }}" delegate_to: localhost run_once: true @@ -30,14 +30,15 @@ when: stat_result.stat.exists and initial_neurons is undefined - name: Print value of initial_neurons - debug: + ansible.builtin.debug: var: initial_neurons + cmd: "" delegate_to: localhost run_once: true become: false - name: Get Custom NNS canisters - shell: | + ansible.builtin.shell: | set -exuo pipefail echo "Media path: {{ ic_media_path }}" echo "Adding canisters from '{{ custom_canister_dir }}'" @@ -53,12 +54,13 @@ tags: [ic_guest] when: custom_canister_dir is defined -- debug: +- ansible.builtin.debug: var: nns_canisters.stdout_lines + cmd: "" when: custom_canister_dir is defined - name: Install NNS canisters - shell: | + ansible.builtin.shell: | set -exuo pipefail NODE0_NAME={{ groups['nns'][0] }} @@ -116,7 +118,7 @@ tags: [ic_guest] - name: Wait for all nodes to listen on port 8080 - include_tasks: + ansible.builtin.include_tasks: file: url_waitfor_connect.yml when: - "'subnet_unassigned' not in hostvars[item].group_names and 'api' not in hostvars[item].group_names diff --git a/testnet/ansible/roles/ic_guest/tasks/main.yml b/testnet/ansible/roles/ic_guest/tasks/main.yml index 503d4ee23e94..4ba9e1a06bc7 100644 --- a/testnet/ansible/roles/ic_guest/tasks/main.yml +++ b/testnet/ansible/roles/ic_guest/tasks/main.yml @@ -1,60 +1,60 @@ --- - name: Import tasks prepare - import_tasks: prepare.yml + ansible.builtin.import_tasks: prepare.yml when: ic_state == "create" tags: [ic_guest] - name: Import tasks disk_pull - import_tasks: disk_pull.yml + ansible.builtin.import_tasks: disk_pull.yml when: ic_state == "create" and (ic_disk_path | length == 0) tags: [ic_guest] - name: Import tasks disk_push - import_tasks: disk_push.yml + ansible.builtin.import_tasks: disk_push.yml when: ic_state == "create" and (ic_disk_path | length > 0) tags: [ic_guest] - name: Import tasks disk_push - import_tasks: aux_disk_push.yml + ansible.builtin.import_tasks: aux_disk_push.yml when: ic_state == "create" and ic_disk_path tags: [ic_guest] - name: Import tasks media_pull - import_tasks: media_pull.yml + ansible.builtin.import_tasks: media_pull.yml when: ic_state == "create" and (ic_media_path | length == 0) tags: [ic_guest] - name: Import tasks media_push - import_tasks: media_push.yml + ansible.builtin.import_tasks: media_push.yml when: ic_state == "create" and (ic_media_path | length > 0) tags: [ic_guest] - name: Import tasks - import_tasks: create.yml + ansible.builtin.import_tasks: create.yml when: ic_state == "create" tags: [ic_guest] - name: Import tasks start - import_tasks: start.yml + ansible.builtin.import_tasks: start.yml when: ic_state == "start" tags: [ic_guest] - name: Import tasks shutdown - import_tasks: shutdown.yml + ansible.builtin.import_tasks: shutdown.yml when: ic_state == "shutdown" tags: [ic_guest] - name: Import tasks install - import_tasks: install.yml + ansible.builtin.import_tasks: install.yml when: ic_state == "install" tags: [ic_guest] - name: Import tasks stop - import_tasks: stop.yml + ansible.builtin.import_tasks: stop.yml when: ic_state == "stop" tags: [ic_guest] - name: Import tasks destroy - import_tasks: destroy.yml + ansible.builtin.import_tasks: destroy.yml when: ic_state == "destroy" tags: [ic_guest] diff --git a/testnet/ansible/roles/ic_guest/tasks/media_pull.yml b/testnet/ansible/roles/ic_guest/tasks/media_pull.yml index e01442448e68..b2c7374e1589 100644 --- a/testnet/ansible/roles/ic_guest/tasks/media_pull.yml +++ b/testnet/ansible/roles/ic_guest/tasks/media_pull.yml @@ -1,5 +1,5 @@ --- - name: Print information - debug: + ansible.builtin.debug: msg: 'CI/CD pipeline for media.img unavailable, use push mode: -e ic_media_path="/home/user/media/"' tags: [ic_guest] diff --git a/testnet/ansible/roles/ic_guest/tasks/media_push.yml b/testnet/ansible/roles/ic_guest/tasks/media_push.yml index 12c6bb883f10..33d10aff849f 100644 --- a/testnet/ansible/roles/ic_guest/tasks/media_push.yml +++ b/testnet/ansible/roles/ic_guest/tasks/media_push.yml @@ -5,7 +5,7 @@ aux_nodes: "{{ hostvars[inventory_hostname].groups.aux | intersect(hostvars[inventory_hostname].ic_guests) | default([]) }}" boundary_nodes: "{{ hostvars[inventory_hostname].groups.boundary | intersect(hostvars[inventory_hostname].ic_guests) | default([]) }}" replica_nodes: "{{ hostvars[inventory_hostname].ic_guests | default([]) | difference(api_nodes) | difference(aux_nodes) | difference(boundary_nodes) }}" - copy: + ansible.builtin.copy: # copy the media image built for the node, or fallback to the generic 'media.img' src: "{{ lookup('first_found', ['{{ ic_media_path }}/{{ item }}.img', '{{ ic_media_path }}/media.img']) }}" dest: /var/local/ic/media/{{ ic_deployment_name }}/{{ ic_git_revision }}/{{ item }}.img @@ -16,7 +16,7 @@ tags: [ic_guest] - name: Copy new api node VM media.img to remote - copy: + ansible.builtin.copy: # copy the media image built for the new api node src: "{{ api_media_path }}/{{ item }}.img" dest: /var/local/ic/media/{{ ic_deployment_name }}/{{ ic_git_revision }}/api/ @@ -27,7 +27,7 @@ tags: [api_node_vm] - name: Copy single api node VM media.img to remote - copy: + ansible.builtin.copy: # copy the media image built for the new api node src: "{{ api_media_path }}/{{ item }}.img" dest: /var/lib/libvirt/media/{{ item }}.img @@ -40,7 +40,7 @@ tags: [api_node_vm] - name: Copy new boundary node VM media.img to remote - copy: + ansible.builtin.copy: # copy the media image built for the new boundary node src: "{{ bn_media_path }}/{{ item }}.img" dest: /var/local/ic/media/{{ ic_deployment_name }}/{{ ic_git_revision }}/boundary/ @@ -51,7 +51,7 @@ tags: [boundary_node_vm] - name: Copy single boundary node VM media.img to remote - copy: + ansible.builtin.copy: # copy the media image built for the new boundary node src: "{{ bn_media_path }}/{{ item }}.img" dest: /var/lib/libvirt/media/{{ item }}.img diff --git a/testnet/ansible/roles/ic_guest/tasks/prepare.yml b/testnet/ansible/roles/ic_guest/tasks/prepare.yml index 21c1135d9caa..903ef351d8c3 100644 --- a/testnet/ansible/roles/ic_guest/tasks/prepare.yml +++ b/testnet/ansible/roles/ic_guest/tasks/prepare.yml @@ -1,6 +1,6 @@ --- - name: Create directories - shell: | + ansible.builtin.shell: | set -eExuo pipefail mkdir -v -p /var/local/ic/{disk,media}/{{ ic_deployment_name }}/{{ ic_git_revision }}/ @@ -18,13 +18,13 @@ tags: [ic_guest] - name: Install GNU parallel - apt: + ansible.builtin.apt: name: parallel state: present tags: [ic_guest] - name: Install zstd - apt: + ansible.builtin.apt: name: zstd state: present tags: [ic_guest] diff --git a/testnet/ansible/roles/ic_guest/tasks/shutdown.yml b/testnet/ansible/roles/ic_guest/tasks/shutdown.yml index 8afc1461126c..c7f656b4f53f 100644 --- a/testnet/ansible/roles/ic_guest/tasks/shutdown.yml +++ b/testnet/ansible/roles/ic_guest/tasks/shutdown.yml @@ -1,6 +1,6 @@ --- # Prompt for USB key press. ASCII art is hard to escape, so base64 it is -- debug: +- ansible.builtin.debug: msg: - "{{ '8J+aqPCflJHwn5qo8J+UkfCfmqjwn5SR8J+aqPCflJHwn5qo8J+UkfCfmqjwn5SR8J+aqPCflJHwn5qo8J+UkfCfmqjwn5SR8J+aqPCflJHwn5qo8J+UkfCfmqjwn5SR8J+aqPCflJHwn5qo8J+UkfCfmqjwn5SR8J+aqPCflJHwn5qo8J+UkfCfmqjwn5SR8J+aqPCflJHwn5qo' | b64decode }}" @@ -15,7 +15,7 @@ tags: [ic_guest] - name: Shutdown guest - shell: | + ansible.builtin.shell: | set -Exu virsh shutdown "{{ item }}" # virsh shutdown command is asynchronous, so the next command waits upto 70sec for the VM to shutdown diff --git a/testnet/ansible/roles/ic_guest/tasks/start.yml b/testnet/ansible/roles/ic_guest/tasks/start.yml index 45fc3e8890ad..91b59018ca08 100644 --- a/testnet/ansible/roles/ic_guest/tasks/start.yml +++ b/testnet/ansible/roles/ic_guest/tasks/start.yml @@ -1,6 +1,6 @@ --- - name: Start guest - shell: | + ansible.builtin.shell: | set -eExuo pipefail virsh start "{{ item }}" || true virsh autostart "{{ item }}" || true diff --git a/testnet/ansible/roles/ic_guest/tasks/stop.yml b/testnet/ansible/roles/ic_guest/tasks/stop.yml index 5cbbb1a9c850..3c50986090bb 100644 --- a/testnet/ansible/roles/ic_guest/tasks/stop.yml +++ b/testnet/ansible/roles/ic_guest/tasks/stop.yml @@ -1,6 +1,6 @@ --- - name: Stop guest - shell: | + ansible.builtin.shell: | set -eExu virsh stop "{{ item }}" virsh autostart --disable "{{ item }}" diff --git a/testnet/ansible/roles/ic_guest/tasks/url_waitfor_connect.yml b/testnet/ansible/roles/ic_guest/tasks/url_waitfor_connect.yml index b835eb729f4f..30efe85c647a 100644 --- a/testnet/ansible/roles/ic_guest/tasks/url_waitfor_connect.yml +++ b/testnet/ansible/roles/ic_guest/tasks/url_waitfor_connect.yml @@ -1,11 +1,11 @@ --- - name: URL to be checked - debug: + ansible.builtin.debug: msg: "{{ hostvars[item].guest_hostname }}: http://[{{ hostvars[item].ipv6_address }}]:8080/api/v2/status" tags: [ic_guest] - name: Wait for listener to respond on port 8080 - uri: + ansible.builtin.uri: url: http://[{{ hostvars[item].ipv6_address }}]:8080/api/v2/status register: _result until: _result.status == 200 diff --git a/testnet/ansible/roles/ic_guest_prod/tasks/disk_pull.yml b/testnet/ansible/roles/ic_guest_prod/tasks/disk_pull.yml index cf91fbd24b2c..64dae2e8ea9f 100644 --- a/testnet/ansible/roles/ic_guest_prod/tasks/disk_pull.yml +++ b/testnet/ansible/roles/ic_guest_prod/tasks/disk_pull.yml @@ -1,6 +1,6 @@ --- - name: Download disk images - shell: | + ansible.builtin.shell: | set -eExuo pipefail CDN_URL="https://download.dfinity.systems" @@ -36,7 +36,7 @@ tags: [ic_guest] - name: Unarchive file disk-img.tar.zst - shell: | + ansible.builtin.shell: | set -eExuo pipefail # unarchive the disk diff --git a/testnet/ansible/roles/ic_guest_prod/tasks/main.yml b/testnet/ansible/roles/ic_guest_prod/tasks/main.yml index 877306bb882a..d66b20b70916 100644 --- a/testnet/ansible/roles/ic_guest_prod/tasks/main.yml +++ b/testnet/ansible/roles/ic_guest_prod/tasks/main.yml @@ -1,62 +1,62 @@ --- - name: Import tasks prepare - import_tasks: + ansible.builtin.import_tasks: # Import local tasks/prepare.yml if exists, otherwise use ic_guest/tasks/prepare.yml file: "{{ lookup('first_found', ['tasks/prepare.yml', '../ic_guest/tasks/prepare.yml']) }}" when: ic_state == "create" tags: [ic_guest] - name: Import tasks disk_pull - import_tasks: + ansible.builtin.import_tasks: file: "{{ lookup('first_found', ['tasks/disk_pull.yml', '../ic_guest/tasks/disk_pull.yml']) }}" when: ic_state == "create" and (ic_disk_path | length == 0) tags: [ic_guest] - name: Import tasks disk_push - import_tasks: + ansible.builtin.import_tasks: file: "{{ lookup('first_found', ['tasks/disk_push.yml', '../ic_guest/tasks/disk_push.yml']) }}" when: ic_state == "create" and (ic_disk_path | length > 0) tags: [ic_guest] - name: Import tasks media_pull - import_tasks: + ansible.builtin.import_tasks: file: "{{ lookup('first_found', ['tasks/media_pull.yml', '../ic_guest/tasks/media_pull.yml']) }}" when: ic_state == "create" and (ic_media_path | length == 0) tags: [ic_guest] - name: Import tasks media_push - import_tasks: + ansible.builtin.import_tasks: file: "{{ lookup('first_found', ['tasks/media_push.yml', '../ic_guest/tasks/media_push.yml']) }}" when: ic_state == "create" and (ic_media_path | length > 0) tags: [ic_guest] - name: Import tasks - import_tasks: + ansible.builtin.import_tasks: file: "{{ lookup('first_found', ['tasks/create.yml', '../ic_guest/tasks/create.yml']) }}" when: ic_state == "create" tags: [ic_guest] - name: Import tasks start - import_tasks: + ansible.builtin.import_tasks: file: "{{ lookup('first_found', ['tasks/start.yml', '../ic_guest/tasks/start.yml']) }}" when: ic_state == "start" tags: - ic_guest - name: Import tasks install - import_tasks: + ansible.builtin.import_tasks: file: "{{ lookup('first_found', ['tasks/install.yml', '../ic_guest/tasks/install.yml']) }}" when: ic_state == "install" tags: [ic_guest] - name: Import tasks stop - import_tasks: + ansible.builtin.import_tasks: file: "{{ lookup('first_found', ['tasks/stop.yml', '../ic_guest/tasks/stop.yml']) }}" when: ic_state == "stop" tags: [ic_guest] - name: Import tasks destroy - import_tasks: + ansible.builtin.import_tasks: file: "{{ lookup('first_found', ['tasks/destroy.yml', '../ic_guest/tasks/destroy.yml']) }}" when: ic_state == "destroy" tags: [ic_guest] diff --git a/toolchains/sysimage/build_container_filesystem_tar.py b/toolchains/sysimage/build_container_filesystem_tar.py index 04dcf68024a0..2f11cbbbc514 100755 --- a/toolchains/sysimage/build_container_filesystem_tar.py +++ b/toolchains/sysimage/build_container_filesystem_tar.py @@ -17,10 +17,8 @@ from loguru import logger as log from toolchains.sysimage.utils import ( - path_owned_by_root, purge_podman, remove_image, - take_ownership_of_file, ) @@ -103,19 +101,20 @@ def export_container_filesystem(container_cmd: str, image_tag: str, destination_ Export the filesystem from an image. Creates container - but does not start it, avoiding timestamp and other determinism issues. """ + tar_dir = tempfile.mkdtemp() + tar_file = tar_dir + "/temp.tar" + container_name = image_tag + "_container" invoke.run(f"{container_cmd} create --name {container_name} {image_tag}") - invoke.run(f"{container_cmd} export -o {destination_tar_filename} {container_name}") + invoke.run(f"{container_cmd} export -o {tar_file} {container_name}") + invoke.run(f"tar xf {tar_file} -C {tar_dir}") + invoke.run(f"rm {tar_file}") + invoke.run( + f"tar cf {destination_tar_filename} --numeric-owner --sort=name --exclude='run/*' --mtime=\"UTC 1970-01-01 00:00:00\" -C {tar_dir} $(ls -A {tar_dir})" + ) invoke.run("sync") invoke.run(f"{container_cmd} container rm {container_name}") - destination_tar_path = Path(destination_tar_filename) - # Using sudo w/ podman requires changing permissions on the output tar file (not the tar contents) - assert path_owned_by_root( - destination_tar_path - ), f"'{destination_tar_path}' not owned by root. Remove this and the next line." - take_ownership_of_file(destination_tar_path) - def resolve_file_args(context_dir: str, file_build_args: List[str]) -> List[str]: result = list()