Skip to content

Commit 1eba53f

Browse files
committed
[6.2] Install binaries under $SWIFT_PREFIX/usr/bin instead of /usr/bin
This prevents some binaries from being unintentionally overwritten by the system package manager. Symbolic links are also placed in the old directory (`/usr/bin`) for compatibility.
1 parent 1f752ac commit 1eba53f

File tree

10 files changed

+115
-25
lines changed

10 files changed

+115
-25
lines changed

nightly-6.2/amazonlinux/2/Dockerfile

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,16 @@ RUN yum -y install \
3333
ARG SWIFT_SIGNING_KEY=E813C892820A6FA13755B268F167DF1ACF9CE069
3434
ARG SWIFT_PLATFORM=amazonlinux
3535
ARG OS_MAJOR_VER=2
36+
ARG SWIFT_VERSION=6.2
3637
ARG SWIFT_WEBROOT=https://download.swift.org/swift-6.2-branch
38+
ARG SWIFT_PREFIX=/opt/swift/${SWIFT_VERSION}
3739

3840
ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \
3941
SWIFT_PLATFORM=$SWIFT_PLATFORM \
4042
OS_MAJOR_VER=$OS_MAJOR_VER \
4143
OS_VER=$SWIFT_PLATFORM$OS_MAJOR_VER \
42-
SWIFT_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER"
44+
SWIFT_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER" \
45+
SWIFT_PREFIX=$SWIFT_PREFIX
4346

4447
RUN echo "${SWIFT_WEBROOT}/latest-build.yml"
4548

@@ -56,10 +59,16 @@ RUN set -e; \
5659
&& curl -fSsL https://swift.org/keys/all-keys.asc | gpg --import - \
5760
&& gpg --batch --verify latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \
5861
# - Unpack the toolchain, set libs permissions, and clean up.
59-
&& tar -xzf latest_toolchain.tar.gz --directory / --strip-components=1 \
60-
&& chmod -R o+r /usr/lib/swift \
62+
&& mkdir -p $SWIFT_PREFIX \
63+
&& tar -xzf latest_toolchain.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \
64+
&& chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \
65+
# This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`.
66+
&& ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \
6167
&& rm -rf "$GNUPGHOME" latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \
6268

69+
ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}"
70+
ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux"
71+
6372
# Print Installed Swift Version
6473
RUN swift --version
6574

nightly-6.2/amazonlinux/2/buildx/Dockerfile

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@ RUN yum -y install \
3232
ARG SWIFT_SIGNING_KEY=E813C892820A6FA13755B268F167DF1ACF9CE069
3333
ARG SWIFT_PLATFORM=amazonlinux
3434
ARG OS_MAJOR_VER=2
35+
ARG SWIFT_VERSION=6.2
3536
ARG SWIFT_WEBROOT=https://download.swift.org/swift-6.2-branch
37+
ARG SWIFT_PREFIX=/opt/swift/${SWIFT_VERSION}
3638

3739
# This is a small trick to enable if/else for arm64 and amd64.
3840
# Because of https://bugs.swift.org/browse/SR-14872 we need adjust tar options.
@@ -46,6 +48,7 @@ FROM base-$TARGETARCH AS final
4648

4749
ARG OS_VER=$SWIFT_PLATFORM$OS_MAJOR_VER$OS_ARCH_SUFFIX
4850
ARG PLATFORM_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_ARCH_SUFFIX"
51+
ENV SWIFT_PREFIX=$SWIFT_PREFIX
4952

5053
RUN echo "${PLATFORM_WEBROOT}/latest-build.yml"
5154

@@ -62,10 +65,16 @@ RUN set -e; \
6265
&& curl -fSsL https://swift.org/keys/all-keys.asc | gpg --import - \
6366
&& gpg --batch --verify latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \
6467
# - Unpack the toolchain, set libs permissions, and clean up.
65-
&& tar -xzf latest_toolchain.tar.gz --directory / --strip-components=1 \
66-
&& chmod -R o+r /usr/lib/swift \
68+
&& mkdir -p $SWIFT_PREFIX \
69+
&& tar -xzf latest_toolchain.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \
70+
&& chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \
71+
# This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`.
72+
&& ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \
6773
&& rm -rf "$GNUPGHOME" latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \
6874

75+
ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}"
76+
ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux"
77+
6978
# Print Installed Swift Version
7079
RUN swift --version
7180

nightly-6.2/rhel-ubi/9/Dockerfile

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,16 @@ RUN yum install -y \
2626
ARG SWIFT_SIGNING_KEY=E813C892820A6FA13755B268F167DF1ACF9CE069
2727
ARG SWIFT_PLATFORM=ubi
2828
ARG OS_MAJOR_VER=9
29+
ARG SWIFT_VERSION=6.2
2930
ARG SWIFT_WEBROOT=https://download.swift.org/swift-6.2-branch
31+
ARG SWIFT_PREFIX=/opt/swift/${SWIFT_VERSION}
3032

3133
ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \
3234
SWIFT_PLATFORM=$SWIFT_PLATFORM \
3335
OS_MAJOR_VER=$OS_MAJOR_VER \
3436
OS_VER=$SWIFT_PLATFORM$OS_MAJOR_VER \
35-
SWIFT_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER"
37+
SWIFT_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER" \
38+
SWIFT_PREFIX=$SWIFT_PREFIX
3639

3740
RUN echo "${SWIFT_WEBROOT}/latest-build.yml"
3841

@@ -49,10 +52,16 @@ RUN set -e; \
4952
&& curl -fL https://swift.org/keys/all-keys.asc | gpg --import - \
5053
&& gpg --batch --verify latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \
5154
# - Unpack the toolchain, set libs permissions, and clean up.
52-
&& tar -xzf latest_toolchain.tar.gz --directory / --strip-components=1 \
53-
&& chmod -R o+r /usr/lib/swift \
55+
&& mkdir -p $SWIFT_PREFIX \
56+
&& tar -xzf latest_toolchain.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \
57+
&& chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \
58+
# This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`.
59+
&& ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \
5460
&& rm -rf "$GNUPGHOME" latest_toolchain.tar.gz.sig latest_toolchain.tar.gz
5561

62+
ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}"
63+
ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux"
64+
5665
# Print Installed Swift Version
5766
RUN swift --version
5867

nightly-6.2/rhel-ubi/9/buildx/Dockerfile

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ RUN yum install -y \
2525
ARG SWIFT_SIGNING_KEY=E813C892820A6FA13755B268F167DF1ACF9CE069
2626
ARG SWIFT_PLATFORM=ubi
2727
ARG OS_MAJOR_VER=9
28+
ARG SWIFT_VERSION=6.2
2829
ARG SWIFT_WEBROOT=https://download.swift.org/swift-6.2-branch
30+
ARG SWIFT_PREFIX=/opt/swift/${SWIFT_VERSION}
2931

3032
# This is a small trick to enable if/else for arm64 and amd64.
3133
# Because of https://bugs.swift.org/browse/SR-14872 we need adjust tar options.
@@ -39,6 +41,7 @@ FROM base-$TARGETARCH AS final
3941

4042
ARG OS_VER=$SWIFT_PLATFORM$OS_MAJOR_VER$OS_ARCH_SUFFIX
4143
ARG PLATFORM_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_ARCH_SUFFIX"
44+
ENV SWIFT_PREFIX=$SWIFT_PREFIX
4245

4346
RUN echo "${PLATFORM_WEBROOT}/latest-build.yml"
4447

@@ -55,10 +58,16 @@ RUN set -e; \
5558
&& curl -fSsL https://swift.org/keys/all-keys.asc | gpg --import - \
5659
&& gpg --batch --verify latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \
5760
# - Unpack the toolchain, set libs permissions, and clean up.
58-
&& tar -xzf latest_toolchain.tar.gz --directory / --strip-components=1 \
59-
&& chmod -R o+r /usr/lib/swift \
61+
&& mkdir -p $SWIFT_PREFIX \
62+
&& tar -xzf latest_toolchain.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \
63+
&& chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \
64+
# This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`.
65+
&& ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \
6066
&& rm -rf "$GNUPGHOME" latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \
6167

68+
ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}"
69+
ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux"
70+
6271
# Print Installed Swift Version
6372
RUN swift --version
6473

nightly-6.2/ubuntu/20.04/Dockerfile

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,17 @@ ARG SWIFT_SIGNING_KEY=E813C892820A6FA13755B268F167DF1ACF9CE069
3232
ARG SWIFT_PLATFORM=ubuntu
3333
ARG OS_MAJOR_VER=20
3434
ARG OS_MIN_VER=04
35+
ARG SWIFT_VERSION=6.2
3536
ARG SWIFT_WEBROOT=https://download.swift.org/swift-6.2-branch
37+
ARG SWIFT_PREFIX=/opt/swift/${SWIFT_VERSION}
3638

3739
ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \
3840
SWIFT_PLATFORM=$SWIFT_PLATFORM \
3941
OS_MAJOR_VER=$OS_MAJOR_VER \
4042
OS_MIN_VER=$OS_MIN_VER \
4143
OS_VER=$SWIFT_PLATFORM$OS_MAJOR_VER.$OS_MIN_VER \
42-
SWIFT_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_MIN_VER"
44+
SWIFT_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_MIN_VER" \
45+
SWIFT_PREFIX=$SWIFT_PREFIX
4346

4447
RUN echo "${SWIFT_WEBROOT}/latest-build.yml"
4548

@@ -59,11 +62,17 @@ RUN set -e; \
5962
&& curl -fSsL https://swift.org/keys/all-keys.asc | gpg --import - \
6063
&& gpg --batch --verify latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \
6164
# - Unpack the toolchain, set libs permissions, and clean up.
62-
&& tar -xzf latest_toolchain.tar.gz --directory / --strip-components=1 \
63-
&& chmod -R o+r /usr/lib/swift \
65+
&& mkdir -p $SWIFT_PREFIX \
66+
&& tar -xzf latest_toolchain.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \
67+
&& chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \
68+
# This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`.
69+
&& ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \
6470
&& rm -rf "$GNUPGHOME" latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \
6571
&& apt-get purge --auto-remove -y curl
6672

73+
ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}"
74+
ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux"
75+
6776
# Print Installed Swift Version
6877
RUN swift --version
6978

nightly-6.2/ubuntu/20.04/buildx/Dockerfile

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@ ARG SWIFT_SIGNING_KEY=E813C892820A6FA13755B268F167DF1ACF9CE069
3232
ARG SWIFT_PLATFORM=ubuntu
3333
ARG OS_MAJOR_VER=20
3434
ARG OS_MIN_VER=04
35+
ARG SWIFT_VERSION=6.2
3536
ARG SWIFT_WEBROOT=https://download.swift.org/swift-6.2-branch
37+
ARG SWIFT_PREFIX=/opt/swift/${SWIFT_VERSION}
3638

3739
# This is a small trick to enable if/else for arm64 and amd64.
3840
# Because of https://bugs.swift.org/browse/SR-14872 we need adjust tar options.
@@ -46,6 +48,7 @@ FROM base-$TARGETARCH AS final
4648

4749
ARG OS_VER=$SWIFT_PLATFORM$OS_MAJOR_VER.$OS_MIN_VER$OS_ARCH_SUFFIX
4850
ARG PLATFORM_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_MIN_VER$OS_ARCH_SUFFIX"
51+
ENV SWIFT_PREFIX=$SWIFT_PREFIX
4952

5053
RUN echo "${PLATFORM_WEBROOT}/latest-build.yml"
5154

@@ -65,11 +68,17 @@ RUN set -e; \
6568
&& curl -fSsL https://swift.org/keys/all-keys.asc | gpg --import - \
6669
&& gpg --batch --verify latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \
6770
# - Unpack the toolchain, set libs permissions, and clean up.
68-
&& tar -xzf latest_toolchain.tar.gz --directory / --strip-components=1 \
69-
&& chmod -R o+r /usr/lib/swift \
71+
&& mkdir -p $SWIFT_PREFIX \
72+
&& tar -xzf latest_toolchain.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \
73+
&& chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \
74+
# This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`.
75+
&& ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \
7076
&& rm -rf "$GNUPGHOME" latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \
7177
&& apt-get purge --auto-remove -y curl
7278

79+
ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}"
80+
ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux"
81+
7382
# Print Installed Swift Version
7483
RUN swift --version
7584

nightly-6.2/ubuntu/22.04/Dockerfile

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,17 @@ ARG SWIFT_SIGNING_KEY=E813C892820A6FA13755B268F167DF1ACF9CE069
3232
ARG SWIFT_PLATFORM=ubuntu
3333
ARG OS_MAJOR_VER=22
3434
ARG OS_MIN_VER=04
35+
ARG SWIFT_VERSION=6.2
3536
ARG SWIFT_WEBROOT=https://download.swift.org/swift-6.2-branch
37+
ARG SWIFT_PREFIX=/opt/swift/${SWIFT_VERSION}
3638

3739
ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \
3840
SWIFT_PLATFORM=$SWIFT_PLATFORM \
3941
OS_MAJOR_VER=$OS_MAJOR_VER \
4042
OS_MIN_VER=$OS_MIN_VER \
4143
OS_VER=$SWIFT_PLATFORM$OS_MAJOR_VER.$OS_MIN_VER \
42-
SWIFT_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_MIN_VER"
44+
SWIFT_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_MIN_VER" \
45+
SWIFT_PREFIX=$SWIFT_PREFIX
4346

4447
RUN echo "${SWIFT_WEBROOT}/latest-build.yml"
4548

@@ -59,11 +62,17 @@ RUN set -e; \
5962
&& curl -fSsL https://swift.org/keys/all-keys.asc | gpg --import - \
6063
&& gpg --batch --verify latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \
6164
# - Unpack the toolchain, set libs permissions, and clean up.
62-
&& tar -xzf latest_toolchain.tar.gz --directory / --strip-components=1 \
63-
&& chmod -R o+r /usr/lib/swift \
65+
&& mkdir -p $SWIFT_PREFIX \
66+
&& tar -xzf latest_toolchain.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \
67+
&& chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \
68+
# This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`.
69+
&& ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \
6470
&& rm -rf "$GNUPGHOME" latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \
6571
&& apt-get purge --auto-remove -y curl
6672

73+
ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}"
74+
ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux"
75+
6776
# Print Installed Swift Version
6877
RUN swift --version
6978

nightly-6.2/ubuntu/22.04/buildx/Dockerfile

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@ ARG SWIFT_SIGNING_KEY=E813C892820A6FA13755B268F167DF1ACF9CE069
3232
ARG SWIFT_PLATFORM=ubuntu
3333
ARG OS_MAJOR_VER=22
3434
ARG OS_MIN_VER=04
35+
ARG SWIFT_VERSION=6.2
3536
ARG SWIFT_WEBROOT=https://download.swift.org/swift-6.2-branch
37+
ARG SWIFT_PREFIX=/opt/swift/${SWIFT_VERSION}
3638

3739
# This is a small trick to enable if/else for arm64 and amd64.
3840
# Because of https://bugs.swift.org/browse/SR-14872 we need adjust tar options.
@@ -46,6 +48,7 @@ FROM base-$TARGETARCH AS final
4648

4749
ARG OS_VER=$SWIFT_PLATFORM$OS_MAJOR_VER.$OS_MIN_VER$OS_ARCH_SUFFIX
4850
ARG PLATFORM_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_MIN_VER$OS_ARCH_SUFFIX"
51+
ENV SWIFT_PREFIX=$SWIFT_PREFIX
4952

5053
RUN echo "${PLATFORM_WEBROOT}/latest-build.yml"
5154

@@ -65,11 +68,17 @@ RUN set -e; \
6568
&& curl -fSsL https://swift.org/keys/all-keys.asc | gpg --import - \
6669
&& gpg --batch --verify latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \
6770
# - Unpack the toolchain, set libs permissions, and clean up.
68-
&& tar -xzf latest_toolchain.tar.gz --directory / --strip-components=1 \
69-
&& chmod -R o+r /usr/lib/swift \
71+
&& mkdir -p $SWIFT_PREFIX \
72+
&& tar -xzf latest_toolchain.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \
73+
&& chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \
74+
# This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`.
75+
&& ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \
7076
&& rm -rf "$GNUPGHOME" latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \
7177
&& apt-get purge --auto-remove -y curl
7278

79+
ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}"
80+
ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux"
81+
7382
# Print Installed Swift Version
7483
RUN swift --version
7584

nightly-6.2/ubuntu/24.04/Dockerfile

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,17 @@ ARG SWIFT_SIGNING_KEY=E813C892820A6FA13755B268F167DF1ACF9CE069
3333
ARG SWIFT_PLATFORM=ubuntu
3434
ARG OS_MAJOR_VER=24
3535
ARG OS_MIN_VER=04
36+
ARG SWIFT_VERSION=6.2
3637
ARG SWIFT_WEBROOT=https://download.swift.org/swift-6.2-branch
38+
ARG SWIFT_PREFIX=/opt/swift/${SWIFT_VERSION}
3739

3840
ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \
3941
SWIFT_PLATFORM=$SWIFT_PLATFORM \
4042
OS_MAJOR_VER=$OS_MAJOR_VER \
4143
OS_MIN_VER=$OS_MIN_VER \
4244
OS_VER=$SWIFT_PLATFORM$OS_MAJOR_VER.$OS_MIN_VER \
43-
SWIFT_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_MIN_VER"
45+
SWIFT_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_MIN_VER" \
46+
SWIFT_PREFIX=$SWIFT_PREFIX
4447

4548
RUN echo "${SWIFT_WEBROOT}/latest-build.yml"
4649

@@ -56,11 +59,17 @@ RUN set -e; \
5659
&& curl -fSsL https://swift.org/keys/all-keys.asc | gpg --import - \
5760
&& gpg --batch --verify latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \
5861
# - Unpack the toolchain, set libs permissions, and clean up.
59-
&& tar -xzf latest_toolchain.tar.gz --directory / --strip-components=1 \
60-
&& chmod -R o+r /usr/lib/swift \
62+
&& mkdir -p $SWIFT_PREFIX \
63+
&& tar -xzf latest_toolchain.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \
64+
&& chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \
65+
# This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`.
66+
&& ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \
6167
&& rm -rf "$GNUPGHOME" latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \
6268
&& apt-get purge --auto-remove -y curl
6369

70+
ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}"
71+
ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux"
72+
6473
# Print Installed Swift Version
6574
RUN swift --version
6675

nightly-6.2/ubuntu/24.04/buildx/Dockerfile

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ ARG SWIFT_SIGNING_KEY=E813C892820A6FA13755B268F167DF1ACF9CE069
3333
ARG SWIFT_PLATFORM=ubuntu
3434
ARG OS_MAJOR_VER=24
3535
ARG OS_MIN_VER=04
36+
ARG SWIFT_VERSION=6.2
3637
ARG SWIFT_WEBROOT=https://download.swift.org/swift-6.2-branch
38+
ARG SWIFT_PREFIX=/opt/swift/${SWIFT_VERSION}
3739

3840
# This is a small trick to enable if/else for arm64 and amd64.
3941
# Because of https://bugs.swift.org/browse/SR-14872 we need adjust tar options.
@@ -47,6 +49,7 @@ FROM base-$TARGETARCH AS final
4749

4850
ARG OS_VER=$SWIFT_PLATFORM$OS_MAJOR_VER.$OS_MIN_VER$OS_ARCH_SUFFIX
4951
ARG PLATFORM_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_MIN_VER$OS_ARCH_SUFFIX"
52+
ENV SWIFT_PREFIX=$SWIFT_PREFIX
5053

5154
RUN echo "${PLATFORM_WEBROOT}/latest-build.yml"
5255

@@ -62,11 +65,17 @@ RUN set -e; \
6265
&& curl -fSsL https://swift.org/keys/all-keys.asc | gpg --import - \
6366
&& gpg --batch --verify latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \
6467
# - Unpack the toolchain, set libs permissions, and clean up.
65-
&& tar -xzf latest_toolchain.tar.gz --directory / --strip-components=1 \
66-
&& chmod -R o+r /usr/lib/swift \
68+
&& mkdir -p $SWIFT_PREFIX \
69+
&& tar -xzf latest_toolchain.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \
70+
&& chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \
71+
# This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`.
72+
&& ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \
6773
&& rm -rf "$GNUPGHOME" latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \
6874
&& apt-get purge --auto-remove -y curl
6975

76+
ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}"
77+
ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux"
78+
7079
# Print Installed Swift Version
7180
RUN swift --version
7281

0 commit comments

Comments
 (0)