Skip to content

Commit 0628abe

Browse files
committed
[6.1] 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 fd82e29 commit 0628abe

File tree

7 files changed

+77
-21
lines changed

7 files changed

+77
-21
lines changed

6.1/amazonlinux/2/Dockerfile

+11-3
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,14 @@ ARG SWIFT_PLATFORM=amazonlinux2
3232
ARG SWIFT_BRANCH=swift-6.1-release
3333
ARG SWIFT_VERSION=swift-6.1-RELEASE
3434
ARG SWIFT_WEBROOT=https://download.swift.org
35+
ARG SWIFT_PREFIX=/opt/swift/6.1
3536

3637
ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \
3738
SWIFT_PLATFORM=$SWIFT_PLATFORM \
3839
SWIFT_BRANCH=$SWIFT_BRANCH \
3940
SWIFT_VERSION=$SWIFT_VERSION \
40-
SWIFT_WEBROOT=$SWIFT_WEBROOT
41+
SWIFT_WEBROOT=$SWIFT_WEBROOT \
42+
SWIFT_PREFIX=$SWIFT_PREFIX
4143

4244
RUN set -e; \
4345
ARCH_NAME="$(rpm --eval '%{_arch}')"; \
@@ -61,9 +63,15 @@ RUN set -e; \
6163
&& gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \
6264
&& gpg --batch --verify swift.tar.gz.sig swift.tar.gz \
6365
# - Unpack the toolchain, set libs permissions, and clean up.
64-
&& tar -xzf swift.tar.gz --directory / --strip-components=1 \
65-
&& chmod -R o+r /usr/lib/swift \
66+
&& mkdir -p $SWIFT_PREFIX \
67+
&& tar -xzf swift.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \
68+
&& chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \
69+
# This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`.
70+
&& ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \
6671
&& rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz
6772

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

6.1/debian/12/Dockerfile

+11-3
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,14 @@ ARG SWIFT_PLATFORM=debian12
3131
ARG SWIFT_BRANCH=swift-6.1-release
3232
ARG SWIFT_VERSION=swift-6.1-RELEASE
3333
ARG SWIFT_WEBROOT=https://download.swift.org
34+
ARG SWIFT_PREFIX=/opt/swift/6.1
3435

3536
ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \
3637
SWIFT_PLATFORM=$SWIFT_PLATFORM \
3738
SWIFT_BRANCH=$SWIFT_BRANCH \
3839
SWIFT_VERSION=$SWIFT_VERSION \
39-
SWIFT_WEBROOT=$SWIFT_WEBROOT
40+
SWIFT_WEBROOT=$SWIFT_WEBROOT \
41+
SWIFT_PREFIX=$SWIFT_PREFIX
4042

4143
RUN set -e; \
4244
ARCH_NAME="$(dpkg --print-architecture)"; \
@@ -62,10 +64,16 @@ RUN set -e; \
6264
&& gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \
6365
&& gpg --batch --verify swift.tar.gz.sig swift.tar.gz \
6466
# - Unpack the toolchain, set libs permissions, and clean up.
65-
&& tar -xzf swift.tar.gz --directory / --strip-components=1 \
66-
&& chmod -R o+r /usr/lib/swift \
67+
&& mkdir -p $SWIFT_PREFIX \
68+
&& tar -xzf swift.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \
69+
&& chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \
70+
# This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`.
71+
&& ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \
6772
&& rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz \
6873
&& apt-get purge --auto-remove -y curl gpg
6974

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

6.1/fedora/39/Dockerfile

+11-3
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,14 @@ ARG SWIFT_PLATFORM=fedora39
2828
ARG SWIFT_BRANCH=swift-6.1-release
2929
ARG SWIFT_VERSION=swift-6.1-RELEASE
3030
ARG SWIFT_WEBROOT=https://download.swift.org
31+
ARG SWIFT_PREFIX=/opt/swift/6.1
3132

3233
ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \
3334
SWIFT_PLATFORM=$SWIFT_PLATFORM \
3435
SWIFT_BRANCH=$SWIFT_BRANCH \
3536
SWIFT_VERSION=$SWIFT_VERSION \
36-
SWIFT_WEBROOT=$SWIFT_WEBROOT
37+
SWIFT_WEBROOT=$SWIFT_WEBROOT \
38+
SWIFT_PREFIX=$SWIFT_PREFIX
3739

3840
RUN set -e; \
3941
ARCH_NAME="$(rpm --eval '%{_arch}')"; \
@@ -57,9 +59,15 @@ RUN set -e; \
5759
&& gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \
5860
&& gpg --batch --verify swift.tar.gz.sig swift.tar.gz \
5961
# - Unpack the toolchain, set libs permissions, and clean up.
60-
&& tar -xzf swift.tar.gz --directory / --strip-components=1 \
61-
&& chmod -R o+r /usr/lib/swift \
62+
&& mkdir -p $SWIFT_PREFIX \
63+
&& tar -xzf swift.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/ \
6267
&& rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz
6368

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

6.1/rhel-ubi/9/Dockerfile

+11-3
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,14 @@ ARG SWIFT_PLATFORM=ubi9
2626
ARG SWIFT_BRANCH=swift-6.1-release
2727
ARG SWIFT_VERSION=swift-6.1-RELEASE
2828
ARG SWIFT_WEBROOT=https://download.swift.org
29+
ARG SWIFT_PREFIX=/opt/swift/6.1
2930

3031
ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \
3132
SWIFT_PLATFORM=$SWIFT_PLATFORM \
3233
SWIFT_BRANCH=$SWIFT_BRANCH \
3334
SWIFT_VERSION=$SWIFT_VERSION \
34-
SWIFT_WEBROOT=$SWIFT_WEBROOT
35+
SWIFT_WEBROOT=$SWIFT_WEBROOT \
36+
SWIFT_PREFIX=$SWIFT_PREFIX
3537

3638
RUN set -e; \
3739
ARCH_NAME="$(rpm --eval '%{_arch}')"; \
@@ -55,9 +57,15 @@ RUN set -e; \
5557
&& gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \
5658
&& gpg --batch --verify swift.tar.gz.sig swift.tar.gz \
5759
# - Unpack the toolchain, set libs permissions, and clean up.
58-
&& tar -xzf swift.tar.gz --directory / --strip-components=1 \
59-
&& chmod -R o+r /usr/lib/swift \
60+
&& mkdir -p $SWIFT_PREFIX \
61+
&& tar -xzf swift.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \
62+
&& chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \
63+
# This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`.
64+
&& ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \
6065
&& rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz
6166

67+
ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}"
68+
ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux"
69+
6270
# Print Installed Swift Version
6371
RUN swift --version

6.1/ubuntu/20.04/Dockerfile

+11-3
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,14 @@ ARG SWIFT_PLATFORM=ubuntu20.04
3232
ARG SWIFT_BRANCH=swift-6.1-release
3333
ARG SWIFT_VERSION=swift-6.1-RELEASE
3434
ARG SWIFT_WEBROOT=https://download.swift.org
35+
ARG SWIFT_PREFIX=/opt/swift/6.1
3536

3637
ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \
3738
SWIFT_PLATFORM=$SWIFT_PLATFORM \
3839
SWIFT_BRANCH=$SWIFT_BRANCH \
3940
SWIFT_VERSION=$SWIFT_VERSION \
40-
SWIFT_WEBROOT=$SWIFT_WEBROOT
41+
SWIFT_WEBROOT=$SWIFT_WEBROOT \
42+
SWIFT_PREFIX=$SWIFT_PREFIX
4143

4244
RUN set -e; \
4345
ARCH_NAME="$(dpkg --print-architecture)"; \
@@ -63,10 +65,16 @@ RUN set -e; \
6365
&& gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \
6466
&& gpg --batch --verify swift.tar.gz.sig swift.tar.gz \
6567
# - Unpack the toolchain, set libs permissions, and clean up.
66-
&& tar -xzf swift.tar.gz --directory / --strip-components=1 \
67-
&& chmod -R o+r /usr/lib/swift \
68+
&& mkdir -p $SWIFT_PREFIX \
69+
&& tar -xzf swift.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/ \
6873
&& rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz \
6974
&& apt-get purge --auto-remove -y curl
7075

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

6.1/ubuntu/22.04/Dockerfile

+11-3
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,14 @@ ARG SWIFT_PLATFORM=ubuntu22.04
3333
ARG SWIFT_BRANCH=swift-6.1-release
3434
ARG SWIFT_VERSION=swift-6.1-RELEASE
3535
ARG SWIFT_WEBROOT=https://download.swift.org
36+
ARG SWIFT_PREFIX=/opt/swift/6.1
3637

3738
ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \
3839
SWIFT_PLATFORM=$SWIFT_PLATFORM \
3940
SWIFT_BRANCH=$SWIFT_BRANCH \
4041
SWIFT_VERSION=$SWIFT_VERSION \
41-
SWIFT_WEBROOT=$SWIFT_WEBROOT
42+
SWIFT_WEBROOT=$SWIFT_WEBROOT \
43+
SWIFT_PREFIX=$SWIFT_PREFIX
4244

4345
RUN set -e; \
4446
ARCH_NAME="$(dpkg --print-architecture)"; \
@@ -64,10 +66,16 @@ RUN set -e; \
6466
&& gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \
6567
&& gpg --batch --verify swift.tar.gz.sig swift.tar.gz \
6668
# - Unpack the toolchain, set libs permissions, and clean up.
67-
&& tar -xzf swift.tar.gz --directory / --strip-components=1 \
68-
&& chmod -R o+r /usr/lib/swift \
69+
&& mkdir -p $SWIFT_PREFIX \
70+
&& tar -xzf swift.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \
71+
&& chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \
72+
# This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`.
73+
&& ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \
6974
&& rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz \
7075
&& apt-get purge --auto-remove -y curl
7176

77+
ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}"
78+
ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux"
79+
7280
# Print Installed Swift Version
7381
RUN swift --version

6.1/ubuntu/24.04/Dockerfile

+11-3
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,14 @@ ARG SWIFT_PLATFORM=ubuntu24.04
3333
ARG SWIFT_BRANCH=swift-6.1-release
3434
ARG SWIFT_VERSION=swift-6.1-RELEASE
3535
ARG SWIFT_WEBROOT=https://download.swift.org
36+
ARG SWIFT_PREFIX=/opt/swift/6.1
3637

3738
ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \
3839
SWIFT_PLATFORM=$SWIFT_PLATFORM \
3940
SWIFT_BRANCH=$SWIFT_BRANCH \
4041
SWIFT_VERSION=$SWIFT_VERSION \
41-
SWIFT_WEBROOT=$SWIFT_WEBROOT
42+
SWIFT_WEBROOT=$SWIFT_WEBROOT \
43+
SWIFT_PREFIX=$SWIFT_PREFIX
4244

4345
RUN set -e; \
4446
ARCH_NAME="$(dpkg --print-architecture)"; \
@@ -64,10 +66,16 @@ RUN set -e; \
6466
&& gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \
6567
&& gpg --batch --verify swift.tar.gz.sig swift.tar.gz \
6668
# - Unpack the toolchain, set libs permissions, and clean up.
67-
&& tar -xzf swift.tar.gz --directory / --strip-components=1 \
68-
&& chmod -R o+r /usr/lib/swift \
69+
&& mkdir -p $SWIFT_PREFIX \
70+
&& tar -xzf swift.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \
71+
&& chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \
72+
# This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`.
73+
&& ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \
6974
&& rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz \
7075
&& apt-get purge --auto-remove -y curl
7176

77+
ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}"
78+
ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux"
79+
7280
# Print Installed Swift Version
7381
RUN swift --version

0 commit comments

Comments
 (0)