Skip to content

fix(ci): add libxml2 and pkg-config to e2e Docker image#8917

Merged
jdx merged 1 commit intomainfrom
fix/e2e-docker-build-deps
Apr 4, 2026
Merged

fix(ci): add libxml2 and pkg-config to e2e Docker image#8917
jdx merged 1 commit intomainfrom
fix/e2e-docker-build-deps

Conversation

@jdx
Copy link
Copy Markdown
Owner

@jdx jdx commented Apr 4, 2026

Summary

  • Add pkg-config for cargo crates that link system libraries (openssl-sys)
  • Add libxml2 for Swift SPM support (swift-package links against libxml2.so.2)

Test plan

🤖 Generated with Claude Code


Note

Low Risk
Low risk: only adjusts the e2e test Docker image dependencies; main impact is slightly larger image/build time and potential package availability differences.

Overview
Updates the e2e test Docker image (packaging/e2e/Dockerfile) to install libxml2, ensuring the container has the shared library needed by tooling that links against libxml2.so.2 (e.g., Swift SPM builds).

Reviewed by Cursor Bugbot for commit 2ec769c. Bugbot is set up for automated code reviews on this repo. Configure here.

swift-package links against libxml2.so.2 which is not installed
by default in Ubuntu 26.04 minimal image.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@jdx jdx merged commit aa35c44 into main Apr 4, 2026
28 of 30 checks passed
@jdx jdx deleted the fix/e2e-docker-build-deps branch April 4, 2026 23:15
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Apr 4, 2026

Greptile Summary

This PR adds libxml2 and pkg-config to the mise e2e Docker image (packaging/e2e/Dockerfile) to fix two specific CI test failures.

  • Adds pkg-config so cargo crates that link system libraries (specifically openssl-sys) can locate them during compilation
  • Adds libxml2 (runtime package) so the Swift Package Manager test can load libxml2.so.2 as a shared library at runtime
  • Both packages are inserted in alphabetical order, consistent with the existing list style
  • A CI run has already been triggered and validated to confirm the fix works

Confidence Score: 5/5

Safe to merge — minimal Docker image addition targeting specific CI test failures

The change is surgical: two well-known packages added in their correct alphabetical position. Both additions directly address documented test failures (openssl-sys build error and swift libxml2.so.2 missing), and a CI run has been verified. No logic changes, no risk of regression.

No files require special attention

Important Files Changed

Filename Overview
packaging/e2e/Dockerfile Adds libxml2 and pkg-config to the Ubuntu apt-get install block in correct alphabetical order, fixing openssl-sys cargo builds and Swift SPM runtime linking

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Ubuntu 26.04 base image] --> B[apt-get install packages]
    B --> C[pkg-config added]
    B --> D[libxml2 added]
    C --> E[openssl-sys crate locates libssl at build time]
    D --> F[Swift SPM loads libxml2.so.2 at runtime]
    E --> G[cargo backend e2e tests pass]
    F --> H[test_swift_slow passes]
Loading

Reviews (1): Last reviewed commit: "fix(ci): add libxml2 to e2e Docker image..." | Re-trigger Greptile

jdx added a commit that referenced this pull request Apr 4, 2026
## Summary
- Add `pkg-config` for cargo crates that link system libraries
(openssl-sys)
- Add `libxml2` for Swift SPM support (swift-package links against
libxml2.so.2)

## Test plan
- [x] pkg-config: fixes `openssl-sys` build failure in cargo backend
tests
- [x] libxml2: fixes `swift-package: error while loading shared
libraries: libxml2.so.2` in test_swift_slow
- [x] Docker image build triggered:
https://github.com/jdx/mise/actions/runs/23989620731

🤖 Generated with [Claude Code](https://claude.com/claude-code)

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk: only adjusts the e2e test Docker image dependencies; main
impact is slightly larger image/build time and potential package
availability differences.
>
> **Overview**
> Updates the e2e test Docker image (`packaging/e2e/Dockerfile`) to
install `libxml2`, ensuring the container has the shared library needed
by tooling that links against `libxml2.so.2` (e.g., Swift SPM builds).
>
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
2ec769c. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the Dockerfile to include libxml2. The review suggests changing this to libxml2-dev to ensure that both runtime shared objects and development headers are available, maintaining consistency with other development libraries in the environment.

Comment thread packaging/e2e/Dockerfile
libncurses-dev \
libreadline-dev \
libssl-dev \
libxml2 \
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

For consistency with other development libraries in this list (e.g., libssl-dev, libffi-dev, libicu-dev), it is recommended to use libxml2-dev instead of libxml2. This ensures that both the runtime shared objects and the development headers are available, which is standard for a development and e2e testing environment.

    libxml2-dev \

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Apr 4, 2026

Hyperfine Performance

mise x -- echo

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.4.3 x -- echo 23.1 ± 0.5 21.9 28.2 1.00
mise x -- echo 23.9 ± 0.7 22.4 29.4 1.03 ± 0.04

mise env

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.4.3 env 22.4 ± 0.4 21.4 24.2 1.00
mise env 23.1 ± 0.4 21.8 24.3 1.03 ± 0.03

mise hook-env

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.4.3 hook-env 23.4 ± 0.5 22.2 28.7 1.00
mise hook-env 23.8 ± 0.4 22.5 25.2 1.02 ± 0.03

mise ls

Command Mean [ms] Min [ms] Max [ms] Relative
mise-2026.4.3 ls 20.6 ± 0.5 19.6 26.3 1.00
mise ls 21.2 ± 0.5 20.0 25.7 1.03 ± 0.03

xtasks/test/perf

Command mise-2026.4.3 mise Variance
install (cached) 152ms 151ms +0%
ls (cached) 79ms 79ms +0%
bin-paths (cached) 84ms 83ms +1%
task-ls (cached) 858ms 812ms +5%

jdx pushed a commit that referenced this pull request Apr 5, 2026
### 🚀 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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant