11FROM ubuntu:24.04
22
3+ ARG TARGETOS
4+ ARG TARGETARCH
5+
36ENV LANG="C.UTF-8"
47ENV HOME=/root
58ENV DEBIAN_FRONTEND=noninteractive
@@ -54,8 +57,6 @@ RUN apt-get update \
5457 openssh-client=1:9.6p1-* \
5558 pkg-config=1.8.* \
5659 protobuf-compiler=3.21.* \
57- python3=3.12.* \
58- python3-pip=24.* \
5960 ripgrep=14.1.* \
6061 rsync=3.2.* \
6162 software-properties-common=0.99.* \
@@ -76,11 +77,9 @@ RUN apt-get update \
7677# ## MISE ###
7778
7879RUN install -dm 0755 /etc/apt/keyrings \
79- && curl -fsSL https://mise.jdx.dev/gpg-key.pub \
80- | gpg --batch --yes --dearmor -o /etc/apt/keyrings/mise-archive-keyring.gpg \
80+ && curl -fsSL https://mise.jdx.dev/gpg-key.pub | gpg --batch --yes --dearmor -o /etc/apt/keyrings/mise-archive-keyring.gpg \
8181 && chmod 0644 /etc/apt/keyrings/mise-archive-keyring.gpg \
82- && echo "deb [signed-by=/etc/apt/keyrings/mise-archive-keyring.gpg] https://mise.jdx.dev/deb stable main" \
83- > /etc/apt/sources.list.d/mise.list \
82+ && echo "deb [signed-by=/etc/apt/keyrings/mise-archive-keyring.gpg] https://mise.jdx.dev/deb stable main" > /etc/apt/sources.list.d/mise.list \
8483 && apt-get update \
8584 && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends mise/stable \
8685 && rm -rf /var/lib/apt/lists/* \
@@ -93,16 +92,16 @@ ENV PATH=$HOME/.local/share/mise/shims:$PATH
9392
9493# ## LLVM ###
9594
96- RUN install -dm 0755 /etc/ apt/keyrings \
97- && curl -fsSL https://apt.llvm.org/llvm-snapshot.gpg.key \
98- | gpg --batch --yes --dearmor -o /etc/apt/keyrings/llvm.gpg \
99- && chmod 0644 /etc/apt/keyrings/llvm.gpg \
100- && . /etc/os-release \
101- && echo "deb [signed-by=/etc/apt/keyrings/llvm.gpg] https://apt.llvm.org/${VERSION_CODENAME}/ llvm-toolchain-${VERSION_CODENAME}-20 main" \
102- > /etc/apt/sources.list.d/llvm.list \
103- && apt-get update \
104- && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends clang-20 lld-20 lldb-20 llvm-20 \
105- && rm -rf /var/lib/ apt/lists/*
95+ RUN apt-get update && apt-get install -y --no-install-recommends \
96+ cmake=3.28.* \
97+ ccache=4.9.* \
98+ ninja-build=1.11.* \
99+ nasm=2.16.* \
100+ yasm=1.3.* \
101+ gawk=1:5.2.* \
102+ lsb-release=12.0-* \
103+ && rm -rf /var/lib/apt/lists/* \
104+ && bash -c "$(curl -fsSL https:// apt.llvm.org/llvm.sh)"
106105
107106# ## PYTHON ###
108107
@@ -121,7 +120,7 @@ RUN git -c advice.detachedHead=0 clone --branch "$PYENV_VERSION" --depth 1 https
121120 && pyenv install $PYTHON_VERSIONS \
122121 && pyenv global "$PYTHON_VERSION"
123122
124- # Install pipx for common global package managers (e.g. poetry)
123+ # Install pipx for common global package managers (e.g. poetry)
125124ENV PIPX_BIN_DIR=/root/.local/bin
126125ENV PATH=$PIPX_BIN_DIR:$PATH
127126RUN apt-get update && apt-get install -y --no-install-recommends pipx=1.4.* \
@@ -167,24 +166,29 @@ RUN mise use --global "bun@${BUN_VERSION}"
167166
168167ARG GRADLE_VERSION=8.14
169168ARG MAVEN_VERSION=3.9.10
170-
171169# OpenJDK 11 is not available for arm64. Codex Web only uses amd64 which
172170# does support 11.
173- RUN if [ "$TARGETARCH" = "arm64" ]; then \
174- JAVA_VERSIONS="21 17" ; \
175- else \
176- JAVA_VERSIONS="21 17 11" ; \
177- fi; \
178- for v in $JAVA_VERSIONS; do mise install "java@${v}" ; done && \
179- mise use --global "java@${JAVA_VERSIONS%% *}" && \
180- mise use --global "gradle@${GRADLE_VERSION}" && \
181- mise use --global "maven@${MAVEN_VERSION}"
171+ ARG AMD_JAVA_VERSIONS="21 17 11"
172+ ARG ARM_JAVA_VERSIONS="21 17"
173+
174+ RUN JAVA_VERSIONS="$( [ " $TARGETARCH" = " arm64" ] && echo " $ARM_JAVA_VERSIONS" || echo " $AMD_JAVA_VERSIONS" )" \
175+ && for v in $JAVA_VERSIONS; do mise install "java@${v}" ; done \
176+ && mise use --global "java@${JAVA_VERSIONS%% *}" \
177+ && mise use --global "gradle@${GRADLE_VERSION}" \
178+ && mise use --global "maven@${MAVEN_VERSION}"
182179
183180# ## SWIFT ###
184181
185182ARG SWIFT_VERSIONS="6.1 5.10.1"
186- RUN for v in $SWIFT_VERSIONS; do mise install "swift@${v}" ; done \
187- && mise use --global "swift@${SWIFT_VERSIONS%% *}"
183+ # mise currently broken for swift on ARM
184+ RUN if [ "$TARGETARCH" = "amd64" ]; then \
185+ for v in $SWIFT_VERSIONS; do \
186+ mise install "swift@${v}" ; \
187+ done && \
188+ mise use --global "swift@${SWIFT_VERSIONS%% *}" ; \
189+ else \
190+ echo "Skipping Swift install on $TARGETARCH" ; \
191+ fi
188192
189193# ## RUST ###
190194
@@ -212,8 +216,6 @@ RUN pipx install cpplint==2.0.* clang-tidy==20.1.* clang-format==20.1.* cmakelan
212216
213217# ## BAZEL ###
214218
215- ARG TARGETOS
216- ARG TARGETARCH
217219ARG BAZELISK_VERSION=v1.26.0
218220
219221RUN curl -L --fail https://github.com/bazelbuild/bazelisk/releases/download/${BAZELISK_VERSION}/bazelisk-${TARGETOS}-${TARGETARCH} -o /usr/local/bin/bazelisk \
@@ -267,7 +269,7 @@ RUN chmod +x /opt/codex/setup_universal.sh
267269# ## VERIFICATION SCRIPT ###
268270
269271COPY verify.sh /opt/verify.sh
270- RUN chmod +x /opt/verify.sh && bash -lc /opt/verify.sh
272+ RUN chmod +x /opt/verify.sh && bash -lc "TARGETARCH=$TARGETARCH /opt/verify.sh"
271273
272274# ## ENTRYPOINT ###
273275
0 commit comments