Repository navigation
chore(deps): pin cargo-lambda 1.9.2 and zig in pyproject.toml - #9198
Merged
Merged
Conversation
roger-zhangg
force-pushed
the
bump-cargo-lambda-1.9.2
branch
from
August 24, 2026 18:16
6364a25 to
d53fa5b
Compare
roger-zhangg
force-pushed
the
bump-cargo-lambda-1.9.2
branch
3 times, most recently
from
August 24, 2026 18:31
8388044 to
094a57a
Compare
Member
Author
|
https://github.com/aws/aws-sam-cli/actions/runs/32763066938 |
roger-zhangg
force-pushed
the
bump-cargo-lambda-1.9.2
branch
from
August 24, 2026 18:58
094a57a to
16fdae4
Compare
Rust 1.98.0 (released 2026-08-18) adds the -Wl,--fix-cortex-a53-843419 linker argument for AArch64 Linux targets. Zig 0.16 rejects it, so every arm64 Rust build fails: error: unsupported linker arg: --fix-cortex-a53-843419 install-rust.sh tracks the moving `stable` channel, so CI upgraded the runner image's 1.97.1 to 1.98.0 in place and broke build-arm64, tier1-finch and tier1-windows-build-2 on both nightly runs (2026-08-21 and since). x86 is unaffected -- the flag is an ARM erratum workaround. cargo-zigbuild 0.23.0 filters the argument before invoking zig, and cargo-lambda v1.9.2 picks it up (cargo-lambda/cargo-lambda#937). 1.9.1 was not enough: it still embeds cargo-zigbuild 0.20.1, which predates the fix, so it fails identically. Rather than bump the version string in each workflow, the pins move to a rust-tests extra in pyproject.toml. Dependabot's pip ecosystem already edits that file and already bumps packages inside extras (ruff lives in pre-dev), so these stay current instead of drifting -- 0.17.1 was 20 releases behind by the time Rust broke it. That also pins zig, previously unpinned and able to cause the same class of failure on any release. A separate extra keeps the large cargo-lambda wheel out of `dev`, so only Rust jobs download it. install-rust.sh reads the pins out of the extra instead of taking a version argument, so it installs exactly what it installed before, and CARGO_LAMBDA_VERSION disappears from both workflows. The Windows branch installs zig from chocolatey rather than the wheel, so the choco version is derived from the same declaration, and the fallback is gated on the reported zig version rather than mere presence -- otherwise a zig already resolvable on PATH could win over the pin, which is the floating-version failure this PR exists to remove. The reproducible requirements are unaffected: `uv pip compile pyproject.toml` passes no --extra, which is why pytest is absent from them today. The appveyor-*.yml files pin this version separately but are deprecated, so they are left alone; each already defines and consumes its own variable. Verified locally against rustc 1.98.0 and zig 0.16.0, same host and fixtures, only cargo-lambda differing: 0.17.1 x86 OK arm64 FAIL (unsupported linker arg) 1.9.1 x86 OK arm64 FAIL (embeds cargo-zigbuild 0.20.1) 1.9.2 x86 OK arm64 OK Confirmed on CI by dispatching this branch (run 32763066938): build-arm64 and tier1-windows-build-2 both passed. The Windows log shows the extra resolving as intended -- "+ cargo-lambda==1.9.2", "+ ziglang==0.16.0" -- and choco installing the pinned "zig v0.16.0".
roger-zhangg
force-pushed
the
bump-cargo-lambda-1.9.2
branch
from
August 24, 2026 19:11
16fdae4 to
df97741
Compare
seshubaws
approved these changes
Aug 24, 2026
roger-zhangg
enabled auto-merge
August 24, 2026 21:42
vicheey
approved these changes
Aug 24, 2026
roger-zhangg
added this pull request to the merge queue
Aug 24, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Which issue(s) does this change fix?
N/A
Why is this change necessary?
Rust 1.98.0 (2026-08-18) adds the
-Wl,--fix-cortex-a53-843419linker argument for AArch64 Linux targets. Zig 0.16 rejects it, so every arm64 Rust build fails:install-rust.shtracks the movingstablechannel, so CI upgraded the runner image's 1.97.1 to 1.98.0 in place and brokebuild-arm64,tier1-finchandtier1-windows-build-2on both nightly runs since (2026-08-21). x86 is unaffected β the flag is an ARM erratum workaround. The surfaced assertion is misleading ('template.yaml' not found in []) because the build produces nothing.How does it address the issue?
cargo-zigbuild0.23.0 filters the argument before invoking zig, and cargo-lambda v1.9.2 picks it up (cargo-lambda#937). v1.9.1 is not sufficient β it still embeds cargo-zigbuild 0.20.1, which predates the fix.The pins move into a
rust-testsextra inpyproject.tomlrather than a version string per workflow. Dependabot's pip ecosystem already edits that file and already bumps packages inside extras (rufflives inpre-dev), so these stay current instead of drifting β 0.17.1 was 20 releases behind by the time Rust broke it. This also pinsziglang, previously unpinned and able to cause the same class of failure on any zig release.What side effects does this change have?
install-rust.shreads the pins from the extra instead of taking a version argument, so it installs exactly what it did before β no project install, no dependency-resolution change β andCARGO_LAMBDA_VERSIONdisappears from both workflows. A separate extra (notdev) keeps the large cargo-lambda wheel out of non-Rust jobs.The Windows branch installs zig from chocolatey rather than the wheel, so the choco version is derived from the same declaration, and the wheel fallback is gated on the reported zig version rather than mere presence β otherwise a zig already resolvable on
PATHcould win over the pin. Without this the pin would have governed Linux only, leaving Windows with a floating zig β the very failure mode being fixed.Reproducible requirements are unaffected:
uv pip compile pyproject.tomlpasses no--extra, which is whypytestis absent from them today.The
appveyor-*.ymlfiles pin this version separately but are deprecated, so they are left alone; each already defines and consumes its own variable.It leaves the Rust channel itself unpinned. A
rust-toolchain.tomlplus arust_toolchainDependabot entry is the matching follow-up.Testing
Verified locally against rustc 1.98.0 and zig 0.16.0 β same host and fixtures, only cargo-lambda differing:
Dispatched this branch on CI (run 32763066938):
build-arm64andtier1-windows-build-2both passed. The Windows log shows the extra resolving as intended β+ cargo-lambda==1.9.2,+ ziglang==0.16.0β and choco installing the pinnedzig v0.16.0.Ran the rewritten install step end to end under bash against a clean interpreter: it resolves
cargo-lambda==1.9.2 ziglang==0.16.0from the extra, installs both, and the resulting toolchain builds the arm64 fixture. All four invocationsaws_lambda_buildersemits succeed β plain,--arm64, and theprovided.al2glibc-pinnedaarch64/x86_64targets β as do thecargo_workspaceandmulti-binariesfixtures (2 binaries each).Mandatory Checklist
PRs will only be reviewed after checklist is complete
make prpassesmake update-reproducible-reqsif dependencies were changedBy submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.