|
| 1 | +ARG swift_version=nightly-main |
| 2 | +ARG ubuntu_version=jammy |
| 3 | +ARG base_image=docker.io/swiftlang/swift:$swift_version-$ubuntu_version |
| 4 | +FROM $base_image |
| 5 | +# needed to do again after FROM due to docker limitation |
| 6 | +ARG swift_version |
| 7 | +ARG ubuntu_version |
| 8 | + |
| 9 | +# set as UTF-8 |
| 10 | +RUN apt-get update && apt-get install -y locales locales-all |
| 11 | +ENV LC_ALL=en_US.UTF-8 |
| 12 | +ENV LANG=en_US.UTF-8 |
| 13 | +ENV LANGUAGE=en_US.UTF-8 |
| 14 | + |
| 15 | +# Build dependencies |
| 16 | +RUN apt-get update && apt-get install -y make curl libc6-dev |
| 17 | + |
| 18 | +# JDK dependency (we require JDK22+ which isn't distributed as package in Jammy) |
| 19 | +# We download the latest supported non-LTS version from OpenJDK: https://jdk.java.net |
| 20 | +RUN echo "Download JDK for: $(uname -m)" |
| 21 | +RUN if [ "$(uname -m)" = 'aarch64' ]; then \ |
| 22 | + echo "Download JDK for: ARM64" && \ |
| 23 | + curl https://download.java.net/java/GA/jdk23/3c5b90190c68498b986a97f276efd28a/37/GPL/openjdk-23_linux-aarch64_bin.tar.gz --output jdk.tar.gz && \ |
| 24 | + EXPECT_JDK_SHA=076dcf7078cdf941951587bf92733abacf489a6570f1df97ee35945ffebec5b7; \ |
| 25 | + else \ |
| 26 | + echo "Download JDK for: x86" && \ |
| 27 | + curl https://download.java.net/java/GA/jdk23/3c5b90190c68498b986a97f276efd28a/37/GPL/openjdk-23_linux-x64_bin.tar.gz --output jdk.tar.gz && \ |
| 28 | + EXPECT_JDK_SHA=08fea92724127c6fa0f2e5ea0b07ff4951ccb1e2f22db3c21eebbd7347152a67; \ |
| 29 | + fi |
| 30 | +# Verify the downlaoded JDK checksums |
| 31 | +RUN JDK_SHA=$(sha256sum jdk.tar.gz | cut -d ' ' -f 1) |
| 32 | +RUN if [ "$JDK_SHA" != "$EXPECT_JDK_SHA" ]; then \ |
| 33 | + echo "Downloaded JDK SHA does not match expected!" && \ |
| 34 | + exit 1; \ |
| 35 | + else \ |
| 36 | + echo "JDK SHA is correct."; \ |
| 37 | + fi |
| 38 | +# Extract and verify the JDK installation |
| 39 | +RUN tar xzvf jdk.tar.gz && rm jdk.tar.gz && mv jdk-23 jdk |
| 40 | +RUN /jdk/bin/java -version |
| 41 | +ENV JAVA_HOME="/jdk" |
| 42 | +ENV PATH="$PATH:/jdk/bin" |
0 commit comments