Skip to content
Merged
Show file tree
Hide file tree
Changes from 22 commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
56b4d3a
chore(bazel): replace hermetic_cc_toolchain (zig cc) with hermetic-llvm
basvandijk Aug 1, 2026
0a02727
Updating container images to tag: 07037fcf3c305a5202b4b410dfb37652f21…
Aug 1, 2026
9069293
fix: keep host library dirs out of hermetic links; pin glibc 2.31; ma…
basvandijk Aug 1, 2026
d17ec08
Updating container images to tag: e1c2cfd7ead3abac7afb1142d5090b35a25…
Aug 1, 2026
4f666de
fix: link the cc_toolchain's static C++ runtime where rules_rust drop…
basvandijk Aug 2, 2026
b744de6
test on RBE
basvandijk Aug 2, 2026
22336f5
chore: drop the zig-era ASan runtime workaround from the fuzzing flags
basvandijk Aug 2, 2026
bf271f1
chore: simplify the pkg-config wrapper to a plain pipeline
basvandijk Aug 2, 2026
ed51d0f
chore: drop libusb-1.0-0-dev from the dev container
basvandijk Aug 2, 2026
729a451
Updating container images to tag: 827366520f53ae0ab466ed38c5103df6d67…
Aug 2, 2026
488ec31
remove comments referring to the old situation
basvandijk Aug 2, 2026
41aa621
chore: narrow the upb linker workaround to -z nostart-stop-gc
basvandijk Aug 2, 2026
225dd8d
address code review comments
basvandijk Aug 3, 2026
12f84ae
chore: suppress the unused --unwindlib=none warning instead of allowi…
basvandijk Aug 3, 2026
d50e777
chore: patch the pkg-config crate instead of wrapping the pkg-config …
basvandijk Aug 3, 2026
b9559b5
Merge remote-tracking branch 'origin/master' into bas/hermetic-llvm
basvandijk Aug 3, 2026
b8ac66d
Merge remote-tracking branch 'origin/master' into bas/hermetic-llvm
basvandijk Aug 3, 2026
8ec152c
Automatically updated Cargo*.lock
Aug 3, 2026
b2bbcab
Merge remote-tracking branch 'origin/master' into bas/hermetic-llvm
basvandijk Aug 3, 2026
919fe0f
Revert "test on RBE"
basvandijk Aug 3, 2026
8bda9f7
rm comment about a patch that is already inside the patch
basvandijk Aug 3, 2026
bdcb0d4
rm unneeded toolchain: //bazel:hermetic_cc_linux_x86_64_to_linux_aarch64
basvandijk Aug 3, 2026
8dba92e
Add reference to hermetic-llvm issue about the pkg-config patch
basvandijk Aug 4, 2026
4b3183b
Merge remote-tracking branch 'origin/master' into bas/hermetic-llvm
basvandijk Aug 4, 2026
aa6f87b
Merge remote-tracking branch 'origin/master' into bas/hermetic-llvm
basvandijk Aug 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude/skills/run-in-dev-container/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ description: Use when you need to run a command (build, test, tool) inside the I

`./ci/container/container-run.sh` runs a command inside the pinned IC dev
container (the `ghcr.io/dfinity/ic-dev` image), bind-mounting the repo checkout
at `/ic` and reusing `~/.cache` for the Bazel/cargo/zig caches.
at `/ic` and reusing `~/.cache` for the Bazel/cargo caches.

Prefer running builds and build tooling through it: it gives you the exact,
pinned toolchain environment, and standardizing on the container — regardless of
Expand Down
9 changes: 2 additions & 7 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"image": "ghcr.io/dfinity/ic-dev@sha256:82bb8cbc8ba0788687ca2c4654bf381e4d6bda839ad2583c2e25dfae1bacb120",
"image": "ghcr.io/dfinity/ic-dev@sha256:484507d3a8cbd75d81f4cc2e990efdde7a780fefacd6d47d0362032f1bfd7968",
"remoteUser": "ubuntu",
"privileged": true,
"runArgs": [
Expand All @@ -14,7 +14,7 @@
],
"workspaceMount": "source=${localWorkspaceFolder},target=/ic,type=bind",
"workspaceFolder": "/ic",
"initializeCommand": "mkdir -p ~/.aws ~/.ssh ~/.cache/cargo ~/.cache/zig-cache ~/.claude ~/.local/share/fish /tmp/ict_testnets && touch ~/.zsh_history ~/.bash_history",
"initializeCommand": "mkdir -p ~/.aws ~/.ssh ~/.cache/cargo ~/.claude ~/.local/share/fish /tmp/ict_testnets && touch ~/.zsh_history ~/.bash_history",
"postStartCommand": "/ic/ci/container/init.sh",
"containerEnv": {
"CARGO_TARGET_DIR": "/home/ubuntu/.cache/cargo",
Expand All @@ -26,11 +26,6 @@
"target": "/home/ubuntu/.cache",
"type": "bind"
},
{
"source": "${localEnv:HOME}/.cache/zig-cache",
"target": "/tmp/zig-cache",
"type": "bind"
},
{
"source": "${localEnv:HOME}/.ssh",
"target": "/home/ubuntu/.ssh",
Expand Down
3 changes: 0 additions & 3 deletions .github/actions/bazel/bin/bazel
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,6 @@ shift
# Extra args we'll be injecting
bazel_args=( )

# Setup zig-cache
mkdir -p /tmp/zig-cache

# Add some options for build-like commands
if [[ $bazel_command == "build" ]] || [[ $bazel_command == "test" ]]; then
command_timestamp=$(date +%s)
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/api-bn-recovery-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
runs-on:
labels: dind-large
container:
image: ghcr.io/dfinity/ic-build@sha256:dd11ad77c455bd491169af8c271a8557cdcca6e7f163a39ebf75aedea0214bf2
image: ghcr.io/dfinity/ic-build@sha256:2a4aed7210bdf3522219410bc14c0ca8161206c02c3cc9f24409f2cb5233f9b5
options: >-
-e NODE_NAME --privileged --cgroupns host
--mount type=tmpfs,target="/home/buildifier/.local/share/containers"
Expand Down
4 changes: 1 addition & 3 deletions .github/workflows/ci-main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ jobs:
runs-on: &dind-large-setup
labels: dind-large
container: &container-setup
image: ghcr.io/dfinity/ic-build@sha256:dd11ad77c455bd491169af8c271a8557cdcca6e7f163a39ebf75aedea0214bf2
image: ghcr.io/dfinity/ic-build@sha256:2a4aed7210bdf3522219410bc14c0ca8161206c02c3cc9f24409f2cb5233f9b5
options: >-
-e NODE_NAME --privileged --cgroupns host --mount type=tmpfs,target="/tmp/containers"
timeout-minutes: 90
Expand Down Expand Up @@ -335,8 +335,6 @@ jobs:
- uses: ./.github/actions/netrc
- name: Build and Test
run: |
mkdir -p /tmp/zig-cache

bazel \
--noworkspace_rc \
--bazelrc=./bazel/conf/.bazelrc.build --bazelrc=/tmp/bazel-cache.bazelrc \
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ci-pr-only.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
runs-on: &dind-small-setup
labels: dind-small
container: &container-setup
image: ghcr.io/dfinity/ic-build@sha256:dd11ad77c455bd491169af8c271a8557cdcca6e7f163a39ebf75aedea0214bf2
image: ghcr.io/dfinity/ic-build@sha256:2a4aed7210bdf3522219410bc14c0ca8161206c02c3cc9f24409f2cb5233f9b5
options: >-
-e NODE_NAME --mount type=tmpfs,target="/tmp/containers"
steps:
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/ci-rbe-evaluation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ jobs:
needs: [config, infer-bazel-targets]
runs-on: namespace-profile-rbe-driver-amd64-linux-16x32
container:
image: nscr.io/c9ptjuknd7oc6/ic-build@sha256:2ffef7066229c82711025be7a0be86848dc91a2a18d52e3bb3c4864558be261b
image: nscr.io/c9ptjuknd7oc6/ic-build@sha256:4f5db2c7a9349a5e656c8b72499ebeacb1c3d177a352f2b1a6d9b2aa48147e9d
# ic-os image builds run 'podman build' (rootless) and are forced to run locally in
# this container by --strategy_regexp=ic-os[:/].*=local in bazel/conf/.bazelrc.build.
# Rootless podman needs to create user namespaces, which fails in an unprivileged
Expand Down Expand Up @@ -237,7 +237,7 @@ jobs:
run: |
set -euo pipefail

worker_image="docker://nscr.io/c9ptjuknd7oc6/ic-build@sha256:2ffef7066229c82711025be7a0be86848dc91a2a18d52e3bb3c4864558be261b"
worker_image="docker://nscr.io/c9ptjuknd7oc6/ic-build@sha256:4f5db2c7a9349a5e656c8b72499ebeacb1c3d177a352f2b1a6d9b2aa48147e9d"

# Directory for the Build Event Protocol and execution profile files,
# later uploaded to Namespace Artifact Storage for offline analysis.
Expand Down Expand Up @@ -295,7 +295,7 @@ jobs:
run: |
set -euo pipefail

worker_image="docker://nscr.io/c9ptjuknd7oc6/ic-build@sha256:2ffef7066229c82711025be7a0be86848dc91a2a18d52e3bb3c4864558be261b"
worker_image="docker://nscr.io/c9ptjuknd7oc6/ic-build@sha256:4f5db2c7a9349a5e656c8b72499ebeacb1c3d177a352f2b1a6d9b2aa48147e9d"

# Directory for the Build Event Protocol and execution profile files,
# later uploaded to Namespace Artifact Storage for offline analysis.
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/container-api-bn-recovery.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
runs-on:
labels: dind-large
container:
image: ghcr.io/dfinity/ic-build@sha256:dd11ad77c455bd491169af8c271a8557cdcca6e7f163a39ebf75aedea0214bf2
image: ghcr.io/dfinity/ic-build@sha256:2a4aed7210bdf3522219410bc14c0ca8161206c02c3cc9f24409f2cb5233f9b5
options: >-
-e NODE_NAME --privileged --cgroupns host
--mount type=tmpfs,target="/home/buildifier/.local/share/containers"
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/container-scan-nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
runs-on:
labels: dind-large
container:
image: ghcr.io/dfinity/ic-build@sha256:dd11ad77c455bd491169af8c271a8557cdcca6e7f163a39ebf75aedea0214bf2
image: ghcr.io/dfinity/ic-build@sha256:2a4aed7210bdf3522219410bc14c0ca8161206c02c3cc9f24409f2cb5233f9b5
options: >-
-e NODE_NAME --privileged --cgroupns host --mount type=tmpfs,target="/tmp/containers"
timeout-minutes: 60
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/local-system-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
runs-on:
labels: dind-large
container:
image: ghcr.io/dfinity/ic-build@sha256:dd11ad77c455bd491169af8c271a8557cdcca6e7f163a39ebf75aedea0214bf2
image: ghcr.io/dfinity/ic-build@sha256:2a4aed7210bdf3522219410bc14c0ca8161206c02c3cc9f24409f2cb5233f9b5
options: >-
-e NODE_NAME --privileged --cgroupns host --mount type=tmpfs,target="/tmp/containers"
timeout-minutes: 600
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pocket-ic-tests-windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ jobs:
bazel-build-pocket-ic:
name: Bazel Build PocketIC
container:
image: ghcr.io/dfinity/ic-build@sha256:dd11ad77c455bd491169af8c271a8557cdcca6e7f163a39ebf75aedea0214bf2
image: ghcr.io/dfinity/ic-build@sha256:2a4aed7210bdf3522219410bc14c0ca8161206c02c3cc9f24409f2cb5233f9b5
options: >-
-e NODE_NAME --privileged --cgroupns host --mount type=tmpfs,target="/tmp/containers"
timeout-minutes: 90
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/rate-limits-backend-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ jobs:
labels: dind-large

container:
image: ghcr.io/dfinity/ic-build@sha256:dd11ad77c455bd491169af8c271a8557cdcca6e7f163a39ebf75aedea0214bf2
image: ghcr.io/dfinity/ic-build@sha256:2a4aed7210bdf3522219410bc14c0ca8161206c02c3cc9f24409f2cb5233f9b5
options: >-
-e NODE_NAME --privileged --cgroupns host -v /var/tmp:/var/tmp -v /ceph-s3-info:/ceph-s3-info --mount type=tmpfs,target="/tmp/containers"

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release-testing.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ jobs:
group: dm1
labels: dind-large
container: &container-setup
image: ghcr.io/dfinity/ic-build@sha256:dd11ad77c455bd491169af8c271a8557cdcca6e7f163a39ebf75aedea0214bf2
image: ghcr.io/dfinity/ic-build@sha256:2a4aed7210bdf3522219410bc14c0ca8161206c02c3cc9f24409f2cb5233f9b5
options: >-
-e NODE_NAME --privileged --cgroupns host --mount type=tmpfs,target="/tmp/containers"
timeout-minutes: 180
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/rosetta-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
runs-on:
labels: dind-large
container:
image: ghcr.io/dfinity/ic-build@sha256:dd11ad77c455bd491169af8c271a8557cdcca6e7f163a39ebf75aedea0214bf2
image: ghcr.io/dfinity/ic-build@sha256:2a4aed7210bdf3522219410bc14c0ca8161206c02c3cc9f24409f2cb5233f9b5
options: >-
-e NODE_NAME --privileged --cgroupns host --mount type=tmpfs,target="/tmp/containers"
environment: DockerHub
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/salt-sharing-canister-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ jobs:
labels: dind-large

container:
image: ghcr.io/dfinity/ic-build@sha256:dd11ad77c455bd491169af8c271a8557cdcca6e7f163a39ebf75aedea0214bf2
image: ghcr.io/dfinity/ic-build@sha256:2a4aed7210bdf3522219410bc14c0ca8161206c02c3cc9f24409f2cb5233f9b5
options: >-
-e NODE_NAME --privileged --cgroupns host -v /var/tmp:/var/tmp -v /ceph-s3-info:/ceph-s3-info --mount type=tmpfs,target="/tmp/containers"

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/schedule-daily-bare-metal.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
runs-on: &dind-large-setup
labels: dind-large
container: &container-setup
image: ghcr.io/dfinity/ic-build@sha256:dd11ad77c455bd491169af8c271a8557cdcca6e7f163a39ebf75aedea0214bf2
image: ghcr.io/dfinity/ic-build@sha256:2a4aed7210bdf3522219410bc14c0ca8161206c02c3cc9f24409f2cb5233f9b5
options: >-
-e NODE_NAME --privileged --cgroupns host --mount type=tmpfs,target="/tmp/containers"
environment: Bare Metal Tests
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/schedule-daily.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
runs-on: &dind-large-setup
labels: dind-large
container: &container-setup
image: ghcr.io/dfinity/ic-build@sha256:dd11ad77c455bd491169af8c271a8557cdcca6e7f163a39ebf75aedea0214bf2
image: ghcr.io/dfinity/ic-build@sha256:2a4aed7210bdf3522219410bc14c0ca8161206c02c3cc9f24409f2cb5233f9b5
options: >-
-e NODE_NAME --privileged --cgroupns host --mount type=tmpfs,target="/tmp/containers"
timeout-minutes: 720 # 12 hours
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/schedule-rust-bench.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
# see linux-x86-64 runner group
labels: rust-benchmarks
container:
image: ghcr.io/dfinity/ic-build@sha256:dd11ad77c455bd491169af8c271a8557cdcca6e7f163a39ebf75aedea0214bf2
image: ghcr.io/dfinity/ic-build@sha256:2a4aed7210bdf3522219410bc14c0ca8161206c02c3cc9f24409f2cb5233f9b5
# running on bare metal machine using ubuntu user
options: --user ubuntu --mount type=tmpfs,target="/tmp/containers"
timeout-minutes: 720 # 12 hours
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/system-tests-benchmarks-nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
group: dm1
labels: dind-large
container:
image: ghcr.io/dfinity/ic-build@sha256:dd11ad77c455bd491169af8c271a8557cdcca6e7f163a39ebf75aedea0214bf2
image: ghcr.io/dfinity/ic-build@sha256:2a4aed7210bdf3522219410bc14c0ca8161206c02c3cc9f24409f2cb5233f9b5
options: >-
-e NODE_NAME --privileged --cgroupns host --mount type=tmpfs,target="/tmp/containers"
timeout-minutes: 480
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/update-mainnet-canister-revisions.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:
labels: dind-small
environment: CREATE_PR
container:
image: ghcr.io/dfinity/ic-build@sha256:dd11ad77c455bd491169af8c271a8557cdcca6e7f163a39ebf75aedea0214bf2
image: ghcr.io/dfinity/ic-build@sha256:2a4aed7210bdf3522219410bc14c0ca8161206c02c3cc9f24409f2cb5233f9b5
options: >-
-e NODE_NAME --privileged --cgroupns host -v /var/tmp:/var/tmp -v /ceph-s3-info:/ceph-s3-info --mount type=tmpfs,target="/tmp/containers"
env:
Expand Down
11 changes: 11 additions & 0 deletions BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -361,6 +361,17 @@ platform(
],
)

# Host platform + a pinned glibc for the hermetic-llvm toolchain.
# Without this constraint hermetic-llvm defaults to glibc 2.28, which lacks symbols we use
# (e.g. gettid, glibc 2.30). Set on Linux via bazelrc (build:linux --platforms/--host_platform);
# one definition covers both x86_64 and aarch64 hosts because it inherits the autodetected host constraints.
# Note that an explicit --platforms=... on the command line overrides this default and silently reverts to glibc 2.28.
platform(
name = "linux-glibc-2.31",
constraint_values = ["@llvm//constraints/libc:gnu.2.31"],
parents = ["@platforms//host"],
)

## Extract ovmf firmware from the `ovmf-generic-hwe` `.deb`.
## This pulls the two firmware files the backend needs
## * `OVMF_CODE_4M.fd` -- read-only UEFI code image (shared, mounted read-only)
Expand Down
Loading
Loading