ci(standards-build): build jouleclaw-rs on linux-arm64 without debuginfo #95
1 changed files with 21 additions and 3 deletions
24
.github/workflows/standards-build.yml
vendored
24
.github/workflows/standards-build.yml
vendored
|
|
@ -82,7 +82,7 @@ jobs:
|
||||||
# failing for no apparent reason, check `df -h /mnt/lima-colima-txarm`
|
# failing for no apparent reason, check `df -h /mnt/lima-colima-txarm`
|
||||||
# on the txarm VM before suspecting the code: a full cache volume
|
# on the txarm VM before suspecting the code: a full cache volume
|
||||||
# fails whatever happens to be building, not whatever changed.
|
# fails whatever happens to be building, not whatever changed.
|
||||||
- { name: jouleclaw-rs, dir: jouleclaw/jouleclaw-rs, runner: linux-arm64, rustflags: "-C target-feature=+fp16" }
|
- { name: jouleclaw-rs, dir: jouleclaw/jouleclaw-rs, runner: linux-arm64, rustflags: "-C target-feature=+fp16", cache_suffix: "-nodebug" }
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v5
|
||||||
|
|
||||||
|
|
@ -124,6 +124,24 @@ jobs:
|
||||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal
|
||||||
echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
|
echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
|
||||||
|
|
||||||
|
# jouleclaw-rs is the CAPACITY entry above. Linux embeds full DWARF in every
|
||||||
|
# test binary, so with default debuginfo its aarch64 test target outgrows
|
||||||
|
# the ~15 GB left on the shared txarm volume and the link fails with
|
||||||
|
# "No space left on device" (reproduced with the same toolchain, flags and
|
||||||
|
# image). Without debuginfo the same target is ~6 GB and the whole suite
|
||||||
|
# passes. Panic messages keep their file:line: that comes from the panic
|
||||||
|
# location, not from DWARF.
|
||||||
|
#
|
||||||
|
# Set through $GITHUB_ENV rather than a matrix field on purpose: a matrix
|
||||||
|
# field would hand every other job CARGO_PROFILE_DEV_DEBUG="", which cargo
|
||||||
|
# can reject. `cache_suffix` gives this job a fresh cache namespace so it
|
||||||
|
# cannot restore a full-debuginfo target and hold both builds at once;
|
||||||
|
# for every other job the suffix is empty and its key string is unchanged.
|
||||||
|
- name: Trim debuginfo (arm64 jouleclaw)
|
||||||
|
if: matrix.name == 'jouleclaw-rs'
|
||||||
|
shell: bash
|
||||||
|
run: echo "CARGO_PROFILE_DEV_DEBUG=0" >> "$GITHUB_ENV"
|
||||||
|
|
||||||
- name: Cache cargo registry + target
|
- name: Cache cargo registry + target
|
||||||
uses: actions/cache@v4
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
|
|
@ -131,9 +149,9 @@ jobs:
|
||||||
~/.cargo/registry
|
~/.cargo/registry
|
||||||
~/.cargo/git
|
~/.cargo/git
|
||||||
${{ matrix.dir }}/target
|
${{ matrix.dir }}/target
|
||||||
key: standards-${{ matrix.name }}-${{ hashFiles(format('{0}/Cargo.lock', matrix.dir), 'rust-toolchain.toml') }}
|
key: standards-${{ matrix.name }}${{ matrix.cache_suffix }}-${{ hashFiles(format('{0}/Cargo.lock', matrix.dir), 'rust-toolchain.toml') }}
|
||||||
restore-keys: |
|
restore-keys: |
|
||||||
standards-${{ matrix.name }}-
|
standards-${{ matrix.name }}${{ matrix.cache_suffix }}-
|
||||||
|
|
||||||
# --all-targets is load-bearing: a plain `cargo check` does not build test
|
# --all-targets is load-bearing: a plain `cargo check` does not build test
|
||||||
# targets, and smart-byte's dev-dependencies drifted independently of its
|
# targets, and smart-byte's dev-dependencies drifted independently of its
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue