@@ -31,6 +31,52 @@ RUN apt-get -y update && apt-get -y install \
3131 uuid-dev \
3232 zip
3333
34+ ARG SWIFT_PLATFORM=ubuntu24.04
35+ ARG SWIFT_VERSION=5.10.1
36+ ARG SWIFT_BRANCH=swift-${SWIFT_VERSION}-release
37+ ARG SWIFT_TAG=swift-${SWIFT_VERSION}-RELEASE
38+ ARG SWIFT_WEBROOT=https://download.swift.org
39+ ARG SWIFT_PREFIX=/opt/swift/${SWIFT_VERSION}
40+
41+ ENV SWIFT_PLATFORM=$SWIFT_PLATFORM \
42+ SWIFT_VERSION=$SWIFT_VERSION \
43+ SWIFT_BRANCH=$SWIFT_BRANCH \
44+ SWIFT_TAG=$SWIFT_TAG \
45+ SWIFT_WEBROOT=$SWIFT_WEBROOT \
46+ SWIFT_PREFIX=$SWIFT_PREFIX
47+
48+ RUN set -e; \
49+ ARCH_NAME="$(dpkg --print-architecture)" ; \
50+ url=; \
51+ case "${ARCH_NAME##*-}" in \
52+ 'amd64' ) \
53+ OS_ARCH_SUFFIX='' ; \
54+ ;; \
55+ 'arm64' ) \
56+ OS_ARCH_SUFFIX='-aarch64' ; \
57+ ;; \
58+ *) echo >&2 "error: unsupported architecture: '$ARCH_NAME'" ; exit 1 ;; \
59+ esac; \
60+ SWIFT_WEBDIR="$SWIFT_WEBROOT/$SWIFT_BRANCH/$(echo $SWIFT_PLATFORM | tr -d .)$OS_ARCH_SUFFIX" \
61+ && SWIFT_BIN_URL="$SWIFT_WEBDIR/$SWIFT_TAG/$SWIFT_TAG-$SWIFT_PLATFORM$OS_ARCH_SUFFIX.tar.gz" \
62+ && SWIFT_SIG_URL="$SWIFT_BIN_URL.sig" \
63+ # - Grab curl here so we cache better up above
64+ && export DEBIAN_FRONTEND=noninteractive \
65+ && apt-get -q update && apt-get -q install -y curl && rm -rf /var/lib/apt/lists/* \
66+ # - Download the GPG keys, Swift toolchain, and toolchain signature, and verify.
67+ && export GNUPGHOME="$(mktemp -d)" \
68+ && curl -fsSL "$SWIFT_BIN_URL" -o swift.tar.gz "$SWIFT_SIG_URL" -o swift.tar.gz.sig \
69+ && curl -fSsL https://swift.org/keys/all-keys.asc | gpg --import - \
70+ && gpg --batch --verify swift.tar.gz.sig swift.tar.gz \
71+ # - Unpack the toolchain, set libs permissions, and clean up.
72+ && mkdir -p $SWIFT_PREFIX \
73+ && tar -xzf swift.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \
74+ && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \
75+ && rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz \
76+ && apt-get purge --auto-remove -y curl
77+
78+ ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}"
79+
3480USER build-user
3581
3682WORKDIR /home/build-user
0 commit comments