Users were running into issues with glibc mismatches on arm64 linux. In the past, we did not provide a musl build for arm64 Linux because we had trouble getting the openssl dependency to build correctly. Though today I just tried the same trick in `Cargo.toml` that we were doing for `x86_64-unknown-linux-musl` (using `openssl-sys` with `features = ["vendored"]`), so I'm not sure what problem we had in the past the builds "just worked" today! Though one tweak that did have to be made is that the integration tests for Seccomp/Landlock empirically require longer timeouts on arm64 linux, or at least on the `ubuntu-24.04-arm` GitHub Runner. As such, we change the timeouts for arm64 in `codex-rs/linux-sandbox/tests/landlock.rs`. Though in solving this problem, I decided I needed a turnkey solution for testing the Linux build(s) from my Mac laptop, so this PR introduces `.devcontainer/Dockerfile` and `.devcontainer/devcontainer.json` to facilitate this. Detailed instructions are in `.devcontainer/README.md`. We will update `dotslash-config.json` and other release-related scripts in a follow-up PR.
30 lines
813 B
Docker
30 lines
813 B
Docker
FROM ubuntu:22.04
|
|
|
|
ARG DEBIAN_FRONTEND=noninteractive
|
|
# enable 'universe' because musl-tools & clang live there
|
|
RUN apt-get update && \
|
|
apt-get install -y --no-install-recommends \
|
|
software-properties-common && \
|
|
add-apt-repository --yes universe
|
|
|
|
# now install build deps
|
|
RUN apt-get update && \
|
|
apt-get install -y --no-install-recommends \
|
|
build-essential curl git ca-certificates \
|
|
pkg-config clang musl-tools libssl-dev && \
|
|
rm -rf /var/lib/apt/lists/*
|
|
|
|
# non-root dev user
|
|
ARG USER=dev
|
|
ARG UID=1000
|
|
RUN useradd -m -u $UID $USER
|
|
USER $USER
|
|
|
|
# install Rust + musl target as dev user
|
|
RUN curl -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal && \
|
|
~/.cargo/bin/rustup target add aarch64-unknown-linux-musl
|
|
|
|
ENV PATH="/home/${USER}/.cargo/bin:${PATH}"
|
|
|
|
WORKDIR /workspace
|