fix(ci): add missing build dependencies to e2e Docker image#8912
Conversation
Add autoconf, cargo, libncurses-dev for Erlang and cargo backend tests. All 8 e2e jobs were failing due to missing build tools: - cargo tests: cargo not installed - Erlang tests: missing autoconf and libncurses-dev - Python/Node: already fixed by libssl-dev et al from prior PR Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Code Review
This pull request updates the e2e Dockerfile by adding autoconf, cargo, and libncurses-dev to the package installation list. The review suggests replacing the apt-get installation of cargo with rustup to ensure a more predictable and manageable Rust toolchain version, providing a specific implementation example for this improvement.
| bash \ | ||
| bison \ | ||
| build-essential \ | ||
| cargo \ |
There was a problem hiding this comment.
While adding cargo here fixes the immediate CI failures, installing it via apt-get can result in an older, less predictable version of the Rust toolchain. This could cause future build failures if the code under test starts using newer Rust features.
A more robust approach would be to use rustup, the official Rust toolchain installer. This allows you to pin a specific version or always use the latest stable one.
Consider removing cargo from this list and adding a step to install it via rustup later in the RUN block. You could also symlink the binaries to make them available on the PATH, similar to how Node.js is handled in this Dockerfile.
Example:
# In the RUN block, after apt-get
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
ln -s /root/.cargo/bin/cargo /usr/local/bin/cargo
ln -s /root/.cargo/bin/rustc /usr/local/bin/rustc
# ... and any other rust tools needed
Greptile SummaryThis PR adds three missing build dependencies (
Confidence Score: 4/5Safe to merge — one-file Dockerfile change adding well-understood apt packages with no logic modifications Score of 4 (not 5) only because Ubuntu 26.04 is a brand-new release and the exact rustc/cargo version in its apt repositories has not been independently confirmed in this review, though Ubuntu 25.04 ships 1.80.1 which already exceeds all relevant MSRVs. No other concerns. No files require special attention; packaging/e2e/Dockerfile is the only changed file and its change is straightforward Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
subgraph new ["New apt packages"]
A[autoconf]
B[libncurses-dev]
C[cargo]
end
subgraph erlang ["Erlang 27.2 build"]
A --> E1["./configure passes"]
B --> E2["curses support"]
E1 & E2 --> E3["test_erlang_slow ✅"]
end
subgraph cargotests ["Cargo backend e2e"]
C --> G1["require_cmd cargo"]
G1 --> G2["test_cargo_compile_slow ✅"]
G1 --> G3["test_cargo_binstall_slow ✅"]
G1 --> G4["test_cargo_features_slow ✅"]
G1 --> G5["test_cargo_compile_git_slow ✅"]
end
Reviews (1): Last reviewed commit: "fix(ci): add missing build dependencies ..." | Re-trigger Greptile |
Hyperfine Performance
|
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.4.3 x -- echo |
23.7 ± 0.4 | 22.8 | 27.1 | 1.00 |
mise x -- echo |
24.3 ± 0.6 | 23.5 | 30.8 | 1.03 ± 0.03 |
mise env
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.4.3 env |
23.0 ± 0.5 | 22.1 | 28.0 | 1.00 |
mise env |
23.8 ± 0.4 | 22.6 | 28.2 | 1.03 ± 0.03 |
mise hook-env
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.4.3 hook-env |
23.8 ± 0.3 | 23.0 | 26.9 | 1.00 |
mise hook-env |
24.2 ± 0.3 | 23.4 | 25.8 | 1.01 ± 0.02 |
mise ls
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.4.3 ls |
21.0 ± 0.3 | 20.1 | 22.4 | 1.00 |
mise ls |
21.6 ± 0.3 | 21.0 | 22.9 | 1.03 ± 0.02 |
xtasks/test/perf
| Command | mise-2026.4.3 | mise | Variance |
|---|---|---|---|
| install (cached) | 152ms | 153ms | +0% |
| ls (cached) | 78ms | 79ms | -1% |
| bin-paths (cached) | 83ms | 85ms | -2% |
| task-ls (cached) | 829ms | 815ms | +1% |
### 🚀 Features - **(ci)** auto-convert external PRs to draft mode by @jdx in [#8896](#8896) - **(deps)** add `depends` field for user-specified tool dependencies by @cprecioso in [#8776](#8776) - **(dotnet)** support runtime-only installs by @fragon10 in [#8524](#8524) - **(npm)** apply install_before to transitive dependencies by @risu729 in [#8851](#8851) - **(task)** allow passing arguments to task dependencies via {{usage.*}} templates by @jdx in [#8893](#8893) - add options field to BackendListVersionsCtx by @esteve in [#8875](#8875) ### 🐛 Bug Fixes - **(backend)** filter PEP 440 .dev versions in fuzzy version matching by @richardthe3rd in [#8849](#8849) - **(ci)** update COPR BuildRequires rust version to match MSRV 1.88 by @jdx in [#8911](#8911) - **(ci)** add Ruby build dependencies to e2e Docker image by @jdx in [#8910](#8910) - **(ci)** add missing build dependencies to e2e Docker image by @jdx in [#8912](#8912) - **(ci)** add missing build dependencies to e2e Docker image by @jdx in [#8914](#8914) - **(ci)** use Node 24 LTS for corepack e2e test by @jdx in [#8915](#8915) - **(ci)** add libxml2 and pkg-config to e2e Docker image by @jdx in [#8917](#8917) - **(ci)** add libxml2-dev to e2e image and disable Swift SPM tests by @jdx in [#8918](#8918) - **(docs)** use sans-serif font for badges by @jdx in [#8887](#8887) - **(env)** parse --env=VALUE and -E=VALUE flag forms correctly by @jdx in [#8889](#8889) - **(exec)** use i64::from() for seccomp syscall numbers to survive autofix by @jdx in [#8882](#8882) - **(github)** preserve tool options like filter_bins when version specified via CLI by @jdx in [#8888](#8888) - **(github)** use alias-specific options when tool_alias has its own config by @jdx in [#8892](#8892) - **(install)** add locked_verify_provenance setting and detect github attestations at lock time by @jdx in [#8901](#8901) - **(lock)** prune stale version entries during filtered `mise lock <tool>` runs by @altendky in [#8599](#8599) - **(python)** use lockfile URL for precompiled installs by @hehaoqian in [#8750](#8750) - **(release)** verify all build targets succeed before releasing by @jdx in [#8886](#8886) - **(ruby)** support build revisions for precompiled binaries in mise.lock by @jdx in [#8900](#8900) - **(swift)** fall back to Ubuntu 24.04 for unsupported Ubuntu versions by @jdx in [#8916](#8916) - **(zsh)** avoid duplicate trust warning after cd by @timothysparg in [#8898](#8898) - update flake.lock and add fix for rust-bindgen to default.nix by @esteve in [#8874](#8874) - when direnv diff is empty, do not try to parse it by @yaleman in [#8857](#8857) - skip trust check for plain .tool-versions in task list by @dportalesr in [#8876](#8876) ### 🚜 Refactor - **(go)** rename go_* settings to go.* namespace by @jdbruijn in [#8598](#8598) ### 📚 Documentation - **(tasks)** clarify task_config.includes behavior by @risu729 in [#8905](#8905) ### 🧪 Testing - **(ci)** run e2e tests inside Docker containers by @jdx in [#8899](#8899) ### 📦️ Dependency Updates - bump ubi from 0.8 to 0.9 by @jdx in [#8906](#8906) - bump zip from 3 to 8 by @jdx in [#8908](#8908) - update lockfile deps (hold back rattler) by @jdx in [#8909](#8909) - update bun.lock by @jdx in [#8913](#8913) ### 📦 Registry - add turso ([github:tursodatabase/turso-cli](https://github.com/tursodatabase/turso-cli)) by @kenn in [#8884](#8884) - remove carp test by @jdx in [#8894](#8894) ### Chore - **(ci)** add workflow to warn PRs modifying vendored aqua-registry by @jdx in [#8897](#8897) - **(ci)** use github.token for draft conversion in auto-draft workflow by @jdx in [#8903](#8903) - remove deprecated settings older than 12 months by @jdx in [#8904](#8904) ### New Contributors - @dportalesr made their first contribution in [#8876](#8876) - @timothysparg made their first contribution in [#8898](#8898) - @hehaoqian made their first contribution in [#8750](#8750) - @jdbruijn made their first contribution in [#8598](#8598) - @cprecioso made their first contribution in [#8776](#8776) - @yaleman made their first contribution in [#8857](#8857) - @kenn made their first contribution in [#8884](#8884) - @fragon10 made their first contribution in [#8524](#8524) ## 📦 Aqua Registry Updates #### New Packages (6) - [`ahkohd/oyo`](https://github.com/ahkohd/oyo) - [`bellicose100xp/jiq`](https://github.com/bellicose100xp/jiq) - [`kurama/dealve-tui`](https://github.com/kurama/dealve-tui) - [`micahkepe/jsongrep`](https://github.com/micahkepe/jsongrep) - [`textfuel/lazyjira`](https://github.com/textfuel/lazyjira) - [`ubugeeei/vize`](https://github.com/ubugeeei/vize) #### Updated Packages (1) - [`sigstore/cosign`](https://github.com/sigstore/cosign)
Summary
autoconf,cargo,libncurses-devto e2e Docker imagetest_cargo_compile_slow,test_cargo_binstall_slow,test_cargo_features_slow,test_cargo_compile_git_slow: cargo not installedtest_erlang_slow: missing autoconf and libncurses-devtest_vfox_python_slow,test_node_slow,test_gem_slow: already fixed by fix(ci): add Ruby build dependencies to e2e Docker image #8910Test plan
🤖 Generated with Claude Code
Note
Low Risk
Low risk: only expands the e2e CI Docker image build dependencies; main risk is slightly larger image size or package version conflicts affecting CI builds.
Overview
Updates the e2e test Docker image to install additional build dependencies (
autoconf,cargo,libncurses-dev) so tool/plugin builds that rely on Rust and certain native libraries succeed in CI.Reviewed by Cursor Bugbot for commit ca6d245. Bugbot is set up for automated code reviews on this repo. Configure here.