From 6ae19ce56e050de34e618058e3641459f6dbe89d Mon Sep 17 00:00:00 2001 From: Kenta Kubo <601636+kkebo@users.noreply.github.com> Date: Sun, 30 Mar 2025 16:16:56 +0900 Subject: [PATCH 1/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. --- 6.0/amazonlinux/2/Dockerfile | 14 +++++++++++--- 6.0/debian/12/Dockerfile | 14 +++++++++++--- 6.0/fedora/39/Dockerfile | 14 +++++++++++--- 6.0/rhel-ubi/9/Dockerfile | 14 +++++++++++--- 6.0/ubuntu/20.04/Dockerfile | 14 +++++++++++--- 6.0/ubuntu/22.04/Dockerfile | 14 +++++++++++--- 6.0/ubuntu/24.04/Dockerfile | 14 +++++++++++--- nightly-6.1/amazonlinux/2/Dockerfile | 15 ++++++++++++--- nightly-6.1/amazonlinux/2/buildx/Dockerfile | 13 +++++++++++-- nightly-6.1/rhel-ubi/9/Dockerfile | 15 ++++++++++++--- nightly-6.1/rhel-ubi/9/buildx/Dockerfile | 13 +++++++++++-- nightly-6.1/ubuntu/20.04/Dockerfile | 15 ++++++++++++--- nightly-6.1/ubuntu/20.04/buildx/Dockerfile | 13 +++++++++++-- nightly-6.1/ubuntu/22.04/Dockerfile | 15 ++++++++++++--- nightly-6.1/ubuntu/22.04/buildx/Dockerfile | 13 +++++++++++-- nightly-6.1/ubuntu/24.04/Dockerfile | 15 ++++++++++++--- nightly-6.1/ubuntu/24.04/buildx/Dockerfile | 13 +++++++++++-- nightly-main/amazonlinux/2/Dockerfile | 15 ++++++++++++--- nightly-main/amazonlinux/2/buildx/Dockerfile | 13 +++++++++++-- nightly-main/rhel-ubi/9/Dockerfile | 15 ++++++++++++--- nightly-main/rhel-ubi/9/buildx/Dockerfile | 13 +++++++++++-- nightly-main/ubuntu/20.04/Dockerfile | 15 ++++++++++++--- nightly-main/ubuntu/20.04/buildx/Dockerfile | 13 +++++++++++-- nightly-main/ubuntu/22.04/Dockerfile | 15 ++++++++++++--- nightly-main/ubuntu/22.04/buildx/Dockerfile | 13 +++++++++++-- nightly-main/ubuntu/24.04/Dockerfile | 15 ++++++++++++--- nightly-main/ubuntu/24.04/buildx/Dockerfile | 13 +++++++++++-- 27 files changed, 307 insertions(+), 71 deletions(-) diff --git a/6.0/amazonlinux/2/Dockerfile b/6.0/amazonlinux/2/Dockerfile index c0db3b10..9ddd5da9 100644 --- a/6.0/amazonlinux/2/Dockerfile +++ b/6.0/amazonlinux/2/Dockerfile @@ -32,12 +32,14 @@ ARG SWIFT_PLATFORM=amazonlinux2 ARG SWIFT_BRANCH=swift-6.0.3-release ARG SWIFT_VERSION=swift-6.0.3-RELEASE ARG SWIFT_WEBROOT=https://download.swift.org +ARG SWIFT_PREFIX=/opt/swift/6.0.3 ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ SWIFT_PLATFORM=$SWIFT_PLATFORM \ SWIFT_BRANCH=$SWIFT_BRANCH \ SWIFT_VERSION=$SWIFT_VERSION \ - SWIFT_WEBROOT=$SWIFT_WEBROOT + SWIFT_WEBROOT=$SWIFT_WEBROOT \ + SWIFT_PREFIX=$SWIFT_PREFIX RUN set -e; \ ARCH_NAME="$(rpm --eval '%{_arch}')"; \ @@ -61,9 +63,15 @@ RUN set -e; \ && gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \ && gpg --batch --verify swift.tar.gz.sig swift.tar.gz \ # - Unpack the toolchain, set libs permissions, and clean up. - && tar -xzf swift.tar.gz --directory / --strip-components=1 \ - && chmod -R o+r /usr/lib/swift \ + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf swift.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + # This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`. + && ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \ && rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux" + # Print Installed Swift Version RUN swift --version diff --git a/6.0/debian/12/Dockerfile b/6.0/debian/12/Dockerfile index 794037c1..d676a7bb 100644 --- a/6.0/debian/12/Dockerfile +++ b/6.0/debian/12/Dockerfile @@ -31,12 +31,14 @@ ARG SWIFT_PLATFORM=debian12 ARG SWIFT_BRANCH=swift-6.0.3-release ARG SWIFT_VERSION=swift-6.0.3-RELEASE ARG SWIFT_WEBROOT=https://download.swift.org +ARG SWIFT_PREFIX=/opt/swift/6.0.3 ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ SWIFT_PLATFORM=$SWIFT_PLATFORM \ SWIFT_BRANCH=$SWIFT_BRANCH \ SWIFT_VERSION=$SWIFT_VERSION \ - SWIFT_WEBROOT=$SWIFT_WEBROOT + SWIFT_WEBROOT=$SWIFT_WEBROOT \ + SWIFT_PREFIX=$SWIFT_PREFIX RUN set -e; \ ARCH_NAME="$(dpkg --print-architecture)"; \ @@ -62,10 +64,16 @@ RUN set -e; \ && gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \ && gpg --batch --verify swift.tar.gz.sig swift.tar.gz \ # - Unpack the toolchain, set libs permissions, and clean up. - && tar -xzf swift.tar.gz --directory / --strip-components=1 \ - && chmod -R o+r /usr/lib/swift \ + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf swift.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + # This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`. + && ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \ && rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz \ && apt-get purge --auto-remove -y curl gpg +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux" + # Print Installed Swift Version RUN swift --version diff --git a/6.0/fedora/39/Dockerfile b/6.0/fedora/39/Dockerfile index 5006ea5b..6af8c5df 100644 --- a/6.0/fedora/39/Dockerfile +++ b/6.0/fedora/39/Dockerfile @@ -28,12 +28,14 @@ ARG SWIFT_PLATFORM=fedora39 ARG SWIFT_BRANCH=swift-6.0.3-release ARG SWIFT_VERSION=swift-6.0.3-RELEASE ARG SWIFT_WEBROOT=https://download.swift.org +ARG SWIFT_PREFIX=/opt/swift/6.0.3 ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ SWIFT_PLATFORM=$SWIFT_PLATFORM \ SWIFT_BRANCH=$SWIFT_BRANCH \ SWIFT_VERSION=$SWIFT_VERSION \ - SWIFT_WEBROOT=$SWIFT_WEBROOT + SWIFT_WEBROOT=$SWIFT_WEBROOT \ + SWIFT_PREFIX=$SWIFT_PREFIX RUN set -e; \ ARCH_NAME="$(rpm --eval '%{_arch}')"; \ @@ -57,9 +59,15 @@ RUN set -e; \ && gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \ && gpg --batch --verify swift.tar.gz.sig swift.tar.gz \ # - Unpack the toolchain, set libs permissions, and clean up. - && tar -xzf swift.tar.gz --directory / --strip-components=1 \ - && chmod -R o+r /usr/lib/swift \ + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf swift.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + # This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`. + && ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \ && rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux" + # Print Installed Swift Version RUN swift --version diff --git a/6.0/rhel-ubi/9/Dockerfile b/6.0/rhel-ubi/9/Dockerfile index cb2ba558..b672f9f8 100644 --- a/6.0/rhel-ubi/9/Dockerfile +++ b/6.0/rhel-ubi/9/Dockerfile @@ -26,12 +26,14 @@ ARG SWIFT_PLATFORM=ubi9 ARG SWIFT_BRANCH=swift-6.0.3-release ARG SWIFT_VERSION=swift-6.0.3-RELEASE ARG SWIFT_WEBROOT=https://download.swift.org +ARG SWIFT_PREFIX=/opt/swift/6.0.3 ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ SWIFT_PLATFORM=$SWIFT_PLATFORM \ SWIFT_BRANCH=$SWIFT_BRANCH \ SWIFT_VERSION=$SWIFT_VERSION \ - SWIFT_WEBROOT=$SWIFT_WEBROOT + SWIFT_WEBROOT=$SWIFT_WEBROOT \ + SWIFT_PREFIX=$SWIFT_PREFIX RUN set -e; \ ARCH_NAME="$(rpm --eval '%{_arch}')"; \ @@ -55,9 +57,15 @@ RUN set -e; \ && gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \ && gpg --batch --verify swift.tar.gz.sig swift.tar.gz \ # - Unpack the toolchain, set libs permissions, and clean up. - && tar -xzf swift.tar.gz --directory / --strip-components=1 \ - && chmod -R o+r /usr/lib/swift \ + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf swift.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + # This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`. + && ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \ && rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux" + # Print Installed Swift Version RUN swift --version diff --git a/6.0/ubuntu/20.04/Dockerfile b/6.0/ubuntu/20.04/Dockerfile index 978907a6..508a6d08 100644 --- a/6.0/ubuntu/20.04/Dockerfile +++ b/6.0/ubuntu/20.04/Dockerfile @@ -32,12 +32,14 @@ ARG SWIFT_PLATFORM=ubuntu20.04 ARG SWIFT_BRANCH=swift-6.0.3-release ARG SWIFT_VERSION=swift-6.0.3-RELEASE ARG SWIFT_WEBROOT=https://download.swift.org +ARG SWIFT_PREFIX=/opt/swift/6.0.3 ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ SWIFT_PLATFORM=$SWIFT_PLATFORM \ SWIFT_BRANCH=$SWIFT_BRANCH \ SWIFT_VERSION=$SWIFT_VERSION \ - SWIFT_WEBROOT=$SWIFT_WEBROOT + SWIFT_WEBROOT=$SWIFT_WEBROOT \ + SWIFT_PREFIX=$SWIFT_PREFIX RUN set -e; \ ARCH_NAME="$(dpkg --print-architecture)"; \ @@ -63,10 +65,16 @@ RUN set -e; \ && gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \ && gpg --batch --verify swift.tar.gz.sig swift.tar.gz \ # - Unpack the toolchain, set libs permissions, and clean up. - && tar -xzf swift.tar.gz --directory / --strip-components=1 \ - && chmod -R o+r /usr/lib/swift \ + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf swift.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + # This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`. + && ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \ && rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz \ && apt-get purge --auto-remove -y curl +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux" + # Print Installed Swift Version RUN swift --version diff --git a/6.0/ubuntu/22.04/Dockerfile b/6.0/ubuntu/22.04/Dockerfile index 6f246953..c48949ed 100644 --- a/6.0/ubuntu/22.04/Dockerfile +++ b/6.0/ubuntu/22.04/Dockerfile @@ -33,12 +33,14 @@ ARG SWIFT_PLATFORM=ubuntu22.04 ARG SWIFT_BRANCH=swift-6.0.3-release ARG SWIFT_VERSION=swift-6.0.3-RELEASE ARG SWIFT_WEBROOT=https://download.swift.org +ARG SWIFT_PREFIX=/opt/swift/6.0.3 ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ SWIFT_PLATFORM=$SWIFT_PLATFORM \ SWIFT_BRANCH=$SWIFT_BRANCH \ SWIFT_VERSION=$SWIFT_VERSION \ - SWIFT_WEBROOT=$SWIFT_WEBROOT + SWIFT_WEBROOT=$SWIFT_WEBROOT \ + SWIFT_PREFIX=$SWIFT_PREFIX RUN set -e; \ ARCH_NAME="$(dpkg --print-architecture)"; \ @@ -64,10 +66,16 @@ RUN set -e; \ && gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \ && gpg --batch --verify swift.tar.gz.sig swift.tar.gz \ # - Unpack the toolchain, set libs permissions, and clean up. - && tar -xzf swift.tar.gz --directory / --strip-components=1 \ - && chmod -R o+r /usr/lib/swift \ + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf swift.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + # This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`. + && ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \ && rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz \ && apt-get purge --auto-remove -y curl +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux" + # Print Installed Swift Version RUN swift --version diff --git a/6.0/ubuntu/24.04/Dockerfile b/6.0/ubuntu/24.04/Dockerfile index 487f46aa..7468f4df 100644 --- a/6.0/ubuntu/24.04/Dockerfile +++ b/6.0/ubuntu/24.04/Dockerfile @@ -33,12 +33,14 @@ ARG SWIFT_PLATFORM=ubuntu24.04 ARG SWIFT_BRANCH=swift-6.0.3-release ARG SWIFT_VERSION=swift-6.0.3-RELEASE ARG SWIFT_WEBROOT=https://download.swift.org +ARG SWIFT_PREFIX=/opt/swift/6.0.3 ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ SWIFT_PLATFORM=$SWIFT_PLATFORM \ SWIFT_BRANCH=$SWIFT_BRANCH \ SWIFT_VERSION=$SWIFT_VERSION \ - SWIFT_WEBROOT=$SWIFT_WEBROOT + SWIFT_WEBROOT=$SWIFT_WEBROOT \ + SWIFT_PREFIX=$SWIFT_PREFIX RUN set -e; \ ARCH_NAME="$(dpkg --print-architecture)"; \ @@ -64,10 +66,16 @@ RUN set -e; \ && gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \ && gpg --batch --verify swift.tar.gz.sig swift.tar.gz \ # - Unpack the toolchain, set libs permissions, and clean up. - && tar -xzf swift.tar.gz --directory / --strip-components=1 \ - && chmod -R o+r /usr/lib/swift \ + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf swift.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + # This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`. + && ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \ && rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz \ && apt-get purge --auto-remove -y curl +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux" + # Print Installed Swift Version RUN swift --version diff --git a/nightly-6.1/amazonlinux/2/Dockerfile b/nightly-6.1/amazonlinux/2/Dockerfile index 7e12833a..962299f8 100644 --- a/nightly-6.1/amazonlinux/2/Dockerfile +++ b/nightly-6.1/amazonlinux/2/Dockerfile @@ -33,13 +33,16 @@ RUN yum -y install \ ARG SWIFT_SIGNING_KEY=E813C892820A6FA13755B268F167DF1ACF9CE069 ARG SWIFT_PLATFORM=amazonlinux ARG OS_MAJOR_VER=2 +ARG SWIFT_VERSION=6.1 ARG SWIFT_WEBROOT=https://download.swift.org/swift-6.1-branch +ARG SWIFT_PREFIX=/opt/swift/${SWIFT_VERSION} ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ SWIFT_PLATFORM=$SWIFT_PLATFORM \ OS_MAJOR_VER=$OS_MAJOR_VER \ OS_VER=$SWIFT_PLATFORM$OS_MAJOR_VER \ - SWIFT_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER" + SWIFT_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER" \ + SWIFT_PREFIX=$SWIFT_PREFIX RUN echo "${SWIFT_WEBROOT}/latest-build.yml" @@ -56,10 +59,16 @@ RUN set -e; \ && curl -fSsL --compressed https://swift.org/keys/all-keys.asc | gpg --import - \ && gpg --batch --verify latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ # - Unpack the toolchain, set libs permissions, and clean up. - && tar -xzf latest_toolchain.tar.gz --directory / --strip-components=1 \ - && chmod -R o+r /usr/lib/swift \ + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf latest_toolchain.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + # This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`. + && ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \ && rm -rf "$GNUPGHOME" latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux" + # Print Installed Swift Version RUN swift --version diff --git a/nightly-6.1/amazonlinux/2/buildx/Dockerfile b/nightly-6.1/amazonlinux/2/buildx/Dockerfile index 5aa8ff07..a0e8f335 100644 --- a/nightly-6.1/amazonlinux/2/buildx/Dockerfile +++ b/nightly-6.1/amazonlinux/2/buildx/Dockerfile @@ -32,7 +32,9 @@ RUN yum -y install \ ARG SWIFT_SIGNING_KEY=E813C892820A6FA13755B268F167DF1ACF9CE069 ARG SWIFT_PLATFORM=amazonlinux ARG OS_MAJOR_VER=2 +ARG SWIFT_VERSION=6.1 ARG SWIFT_WEBROOT=https://download.swift.org/swift-6.1-branch +ARG SWIFT_PREFIX=/opt/swift/${SWIFT_VERSION} # This is a small trick to enable if/else for arm64 and amd64. # Because of https://bugs.swift.org/browse/SR-14872 we need adjust tar options. @@ -46,6 +48,7 @@ FROM base-$TARGETARCH AS final ARG OS_VER=$SWIFT_PLATFORM$OS_MAJOR_VER$OS_ARCH_SUFFIX ARG PLATFORM_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_ARCH_SUFFIX" +ENV SWIFT_PREFIX=$SWIFT_PREFIX RUN echo "${PLATFORM_WEBROOT}/latest-build.yml" @@ -62,10 +65,16 @@ RUN set -e; \ && curl -fSsL --compressed https://swift.org/keys/all-keys.asc | gpg --import - \ && gpg --batch --verify latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ # - Unpack the toolchain, set libs permissions, and clean up. - && tar -xzf latest_toolchain.tar.gz --directory / --strip-components=1 \ - && chmod -R o+r /usr/lib/swift \ + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf latest_toolchain.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + # This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`. + && ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \ && rm -rf "$GNUPGHOME" latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux" + # Print Installed Swift Version RUN swift --version diff --git a/nightly-6.1/rhel-ubi/9/Dockerfile b/nightly-6.1/rhel-ubi/9/Dockerfile index 85889f16..bbf0daf5 100644 --- a/nightly-6.1/rhel-ubi/9/Dockerfile +++ b/nightly-6.1/rhel-ubi/9/Dockerfile @@ -26,13 +26,16 @@ RUN yum install -y \ ARG SWIFT_SIGNING_KEY=E813C892820A6FA13755B268F167DF1ACF9CE069 ARG SWIFT_PLATFORM=ubi ARG OS_MAJOR_VER=9 +ARG SWIFT_VERSION=6.1 ARG SWIFT_WEBROOT=https://download.swift.org/swift-6.1-branch +ARG SWIFT_PREFIX=/opt/swift/${SWIFT_VERSION} ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ SWIFT_PLATFORM=$SWIFT_PLATFORM \ OS_MAJOR_VER=$OS_MAJOR_VER \ OS_VER=$SWIFT_PLATFORM$OS_MAJOR_VER \ - SWIFT_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER" + SWIFT_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER" \ + SWIFT_PREFIX=$SWIFT_PREFIX RUN echo "${SWIFT_WEBROOT}/latest-build.yml" @@ -49,10 +52,16 @@ RUN set -e; \ && curl -fL --compressed https://swift.org/keys/all-keys.asc | gpg --import - \ && gpg --batch --verify latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ # - Unpack the toolchain, set libs permissions, and clean up. - && tar -xzf latest_toolchain.tar.gz --directory / --strip-components=1 \ - && chmod -R o+r /usr/lib/swift \ + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf latest_toolchain.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + # This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`. + && ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \ && rm -rf "$GNUPGHOME" latest_toolchain.tar.gz.sig latest_toolchain.tar.gz +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux" + # Print Installed Swift Version RUN swift --version diff --git a/nightly-6.1/rhel-ubi/9/buildx/Dockerfile b/nightly-6.1/rhel-ubi/9/buildx/Dockerfile index b8d9df30..613230c3 100644 --- a/nightly-6.1/rhel-ubi/9/buildx/Dockerfile +++ b/nightly-6.1/rhel-ubi/9/buildx/Dockerfile @@ -25,7 +25,9 @@ RUN yum install -y \ ARG SWIFT_SIGNING_KEY=E813C892820A6FA13755B268F167DF1ACF9CE069 ARG SWIFT_PLATFORM=ubi ARG OS_MAJOR_VER=9 +ARG SWIFT_VERSION=6.1 ARG SWIFT_WEBROOT=https://download.swift.org/swift-6.1-branch +ARG SWIFT_PREFIX=/opt/swift/${SWIFT_VERSION} # This is a small trick to enable if/else for arm64 and amd64. # Because of https://bugs.swift.org/browse/SR-14872 we need adjust tar options. @@ -39,6 +41,7 @@ FROM base-$TARGETARCH AS final ARG OS_VER=$SWIFT_PLATFORM$OS_MAJOR_VER$OS_ARCH_SUFFIX ARG PLATFORM_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_ARCH_SUFFIX" +ENV SWIFT_PREFIX=$SWIFT_PREFIX RUN echo "${PLATFORM_WEBROOT}/latest-build.yml" @@ -55,10 +58,16 @@ RUN set -e; \ && curl -fSsL --compressed https://swift.org/keys/all-keys.asc | gpg --import - \ && gpg --batch --verify latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ # - Unpack the toolchain, set libs permissions, and clean up. - && tar -xzf latest_toolchain.tar.gz --directory / --strip-components=1 \ - && chmod -R o+r /usr/lib/swift \ + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf latest_toolchain.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + # This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`. + && ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \ && rm -rf "$GNUPGHOME" latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux" + # Print Installed Swift Version RUN swift --version diff --git a/nightly-6.1/ubuntu/20.04/Dockerfile b/nightly-6.1/ubuntu/20.04/Dockerfile index c597ff17..e82ac2ec 100644 --- a/nightly-6.1/ubuntu/20.04/Dockerfile +++ b/nightly-6.1/ubuntu/20.04/Dockerfile @@ -32,14 +32,17 @@ ARG SWIFT_SIGNING_KEY=E813C892820A6FA13755B268F167DF1ACF9CE069 ARG SWIFT_PLATFORM=ubuntu ARG OS_MAJOR_VER=20 ARG OS_MIN_VER=04 +ARG SWIFT_VERSION=6.1 ARG SWIFT_WEBROOT=https://download.swift.org/swift-6.1-branch +ARG SWIFT_PREFIX=/opt/swift/${SWIFT_VERSION} ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ SWIFT_PLATFORM=$SWIFT_PLATFORM \ OS_MAJOR_VER=$OS_MAJOR_VER \ OS_MIN_VER=$OS_MIN_VER \ OS_VER=$SWIFT_PLATFORM$OS_MAJOR_VER.$OS_MIN_VER \ - SWIFT_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_MIN_VER" + SWIFT_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_MIN_VER" \ + SWIFT_PREFIX=$SWIFT_PREFIX RUN echo "${SWIFT_WEBROOT}/latest-build.yml" @@ -59,11 +62,17 @@ RUN set -e; \ && curl -fSsL --compressed https://swift.org/keys/all-keys.asc | gpg --import - \ && gpg --batch --verify latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ # - Unpack the toolchain, set libs permissions, and clean up. - && tar -xzf latest_toolchain.tar.gz --directory / --strip-components=1 \ - && chmod -R o+r /usr/lib/swift \ + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf latest_toolchain.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + # This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`. + && ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \ && rm -rf "$GNUPGHOME" latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ && apt-get purge --auto-remove -y curl +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux" + # Print Installed Swift Version RUN swift --version diff --git a/nightly-6.1/ubuntu/20.04/buildx/Dockerfile b/nightly-6.1/ubuntu/20.04/buildx/Dockerfile index 9ec56662..939058a0 100644 --- a/nightly-6.1/ubuntu/20.04/buildx/Dockerfile +++ b/nightly-6.1/ubuntu/20.04/buildx/Dockerfile @@ -32,7 +32,9 @@ ARG SWIFT_SIGNING_KEY=E813C892820A6FA13755B268F167DF1ACF9CE069 ARG SWIFT_PLATFORM=ubuntu ARG OS_MAJOR_VER=20 ARG OS_MIN_VER=04 +ARG SWIFT_VERSION=6.1 ARG SWIFT_WEBROOT=https://download.swift.org/swift-6.1-branch +ARG SWIFT_PREFIX=/opt/swift/${SWIFT_VERSION} # This is a small trick to enable if/else for arm64 and amd64. # Because of https://bugs.swift.org/browse/SR-14872 we need adjust tar options. @@ -46,6 +48,7 @@ FROM base-$TARGETARCH AS final ARG OS_VER=$SWIFT_PLATFORM$OS_MAJOR_VER.$OS_MIN_VER$OS_ARCH_SUFFIX ARG PLATFORM_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_MIN_VER$OS_ARCH_SUFFIX" +ENV SWIFT_PREFIX=$SWIFT_PREFIX RUN echo "${PLATFORM_WEBROOT}/latest-build.yml" @@ -65,11 +68,17 @@ RUN set -e; \ && curl -fSsL --compressed https://swift.org/keys/all-keys.asc | gpg --import - \ && gpg --batch --verify latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ # - Unpack the toolchain, set libs permissions, and clean up. - && tar -xzf latest_toolchain.tar.gz --directory / --strip-components=1 \ - && chmod -R o+r /usr/lib/swift \ + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf latest_toolchain.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + # This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`. + && ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \ && rm -rf "$GNUPGHOME" latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ && apt-get purge --auto-remove -y curl +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux" + # Print Installed Swift Version RUN swift --version diff --git a/nightly-6.1/ubuntu/22.04/Dockerfile b/nightly-6.1/ubuntu/22.04/Dockerfile index f08c736e..ac4b1b40 100644 --- a/nightly-6.1/ubuntu/22.04/Dockerfile +++ b/nightly-6.1/ubuntu/22.04/Dockerfile @@ -32,14 +32,17 @@ ARG SWIFT_SIGNING_KEY=E813C892820A6FA13755B268F167DF1ACF9CE069 ARG SWIFT_PLATFORM=ubuntu ARG OS_MAJOR_VER=22 ARG OS_MIN_VER=04 +ARG SWIFT_VERSION=6.1 ARG SWIFT_WEBROOT=https://download.swift.org/swift-6.1-branch +ARG SWIFT_PREFIX=/opt/swift/${SWIFT_VERSION} ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ SWIFT_PLATFORM=$SWIFT_PLATFORM \ OS_MAJOR_VER=$OS_MAJOR_VER \ OS_MIN_VER=$OS_MIN_VER \ OS_VER=$SWIFT_PLATFORM$OS_MAJOR_VER.$OS_MIN_VER \ - SWIFT_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_MIN_VER" + SWIFT_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_MIN_VER" \ + SWIFT_PREFIX=$SWIFT_PREFIX RUN echo "${SWIFT_WEBROOT}/latest-build.yml" @@ -59,11 +62,17 @@ RUN set -e; \ && curl -fSsL --compressed https://swift.org/keys/all-keys.asc | gpg --import - \ && gpg --batch --verify latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ # - Unpack the toolchain, set libs permissions, and clean up. - && tar -xzf latest_toolchain.tar.gz --directory / --strip-components=1 \ - && chmod -R o+r /usr/lib/swift \ + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf latest_toolchain.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + # This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`. + && ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \ && rm -rf "$GNUPGHOME" latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ && apt-get purge --auto-remove -y curl +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux" + # Print Installed Swift Version RUN swift --version diff --git a/nightly-6.1/ubuntu/22.04/buildx/Dockerfile b/nightly-6.1/ubuntu/22.04/buildx/Dockerfile index a3205144..8d013cc9 100644 --- a/nightly-6.1/ubuntu/22.04/buildx/Dockerfile +++ b/nightly-6.1/ubuntu/22.04/buildx/Dockerfile @@ -32,7 +32,9 @@ ARG SWIFT_SIGNING_KEY=E813C892820A6FA13755B268F167DF1ACF9CE069 ARG SWIFT_PLATFORM=ubuntu ARG OS_MAJOR_VER=22 ARG OS_MIN_VER=04 +ARG SWIFT_VERSION=6.1 ARG SWIFT_WEBROOT=https://download.swift.org/swift-6.1-branch +ARG SWIFT_PREFIX=/opt/swift/${SWIFT_VERSION} # This is a small trick to enable if/else for arm64 and amd64. # Because of https://bugs.swift.org/browse/SR-14872 we need adjust tar options. @@ -46,6 +48,7 @@ FROM base-$TARGETARCH AS final ARG OS_VER=$SWIFT_PLATFORM$OS_MAJOR_VER.$OS_MIN_VER$OS_ARCH_SUFFIX ARG PLATFORM_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_MIN_VER$OS_ARCH_SUFFIX" +ENV SWIFT_PREFIX=$SWIFT_PREFIX RUN echo "${PLATFORM_WEBROOT}/latest-build.yml" @@ -65,11 +68,17 @@ RUN set -e; \ && curl -fSsL --compressed https://swift.org/keys/all-keys.asc | gpg --import - \ && gpg --batch --verify latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ # - Unpack the toolchain, set libs permissions, and clean up. - && tar -xzf latest_toolchain.tar.gz --directory / --strip-components=1 \ - && chmod -R o+r /usr/lib/swift \ + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf latest_toolchain.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + # This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`. + && ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \ && rm -rf "$GNUPGHOME" latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ && apt-get purge --auto-remove -y curl +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux" + # Print Installed Swift Version RUN swift --version diff --git a/nightly-6.1/ubuntu/24.04/Dockerfile b/nightly-6.1/ubuntu/24.04/Dockerfile index c81cfa18..f320b90e 100644 --- a/nightly-6.1/ubuntu/24.04/Dockerfile +++ b/nightly-6.1/ubuntu/24.04/Dockerfile @@ -33,14 +33,17 @@ ARG SWIFT_SIGNING_KEY=E813C892820A6FA13755B268F167DF1ACF9CE069 ARG SWIFT_PLATFORM=ubuntu ARG OS_MAJOR_VER=24 ARG OS_MIN_VER=04 +ARG SWIFT_VERSION=6.1 ARG SWIFT_WEBROOT=https://download.swift.org/swift-6.1-branch +ARG SWIFT_PREFIX=/opt/swift/${SWIFT_VERSION} ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ SWIFT_PLATFORM=$SWIFT_PLATFORM \ OS_MAJOR_VER=$OS_MAJOR_VER \ OS_MIN_VER=$OS_MIN_VER \ OS_VER=$SWIFT_PLATFORM$OS_MAJOR_VER.$OS_MIN_VER \ - SWIFT_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_MIN_VER" + SWIFT_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_MIN_VER" \ + SWIFT_PREFIX=$SWIFT_PREFIX RUN echo "${SWIFT_WEBROOT}/latest-build.yml" @@ -56,11 +59,17 @@ RUN set -e; \ && curl -fSsL --compressed https://swift.org/keys/all-keys.asc | gpg --import - \ && gpg --batch --verify latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ # - Unpack the toolchain, set libs permissions, and clean up. - && tar -xzf latest_toolchain.tar.gz --directory / --strip-components=1 \ - && chmod -R o+r /usr/lib/swift \ + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf latest_toolchain.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + # This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`. + && ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \ && rm -rf "$GNUPGHOME" latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ && apt-get purge --auto-remove -y curl +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux" + # Print Installed Swift Version RUN swift --version diff --git a/nightly-6.1/ubuntu/24.04/buildx/Dockerfile b/nightly-6.1/ubuntu/24.04/buildx/Dockerfile index f874ef90..4f252fdb 100644 --- a/nightly-6.1/ubuntu/24.04/buildx/Dockerfile +++ b/nightly-6.1/ubuntu/24.04/buildx/Dockerfile @@ -33,7 +33,9 @@ ARG SWIFT_SIGNING_KEY=E813C892820A6FA13755B268F167DF1ACF9CE069 ARG SWIFT_PLATFORM=ubuntu ARG OS_MAJOR_VER=24 ARG OS_MIN_VER=04 +ARG SWIFT_VERSION=6.1 ARG SWIFT_WEBROOT=https://download.swift.org/swift-6.1-branch +ARG SWIFT_PREFIX=/opt/swift/${SWIFT_VERSION} # This is a small trick to enable if/else for arm64 and amd64. # Because of https://bugs.swift.org/browse/SR-14872 we need adjust tar options. @@ -47,6 +49,7 @@ FROM base-$TARGETARCH AS final ARG OS_VER=$SWIFT_PLATFORM$OS_MAJOR_VER.$OS_MIN_VER$OS_ARCH_SUFFIX ARG PLATFORM_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_MIN_VER$OS_ARCH_SUFFIX" +ENV SWIFT_PREFIX=$SWIFT_PREFIX RUN echo "${PLATFORM_WEBROOT}/latest-build.yml" @@ -62,11 +65,17 @@ RUN set -e; \ && curl -fSsL --compressed https://swift.org/keys/all-keys.asc | gpg --import - \ && gpg --batch --verify latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ # - Unpack the toolchain, set libs permissions, and clean up. - && tar -xzf latest_toolchain.tar.gz --directory / --strip-components=1 \ - && chmod -R o+r /usr/lib/swift \ + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf latest_toolchain.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + # This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`. + && ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \ && rm -rf "$GNUPGHOME" latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ && apt-get purge --auto-remove -y curl +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux" + # Print Installed Swift Version RUN swift --version diff --git a/nightly-main/amazonlinux/2/Dockerfile b/nightly-main/amazonlinux/2/Dockerfile index ec331451..4030d8ff 100644 --- a/nightly-main/amazonlinux/2/Dockerfile +++ b/nightly-main/amazonlinux/2/Dockerfile @@ -32,13 +32,16 @@ RUN yum -y install \ ARG SWIFT_SIGNING_KEY=8A7495662C3CD4AE18D95637FAF6989E1BC16FEA ARG SWIFT_PLATFORM=amazonlinux ARG OS_MAJOR_VER=2 +ARG SWIFT_VERSION=6.2 ARG SWIFT_WEBROOT=https://download.swift.org/development +ARG SWIFT_PREFIX=/opt/swift/${SWIFT_VERSION} ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ SWIFT_PLATFORM=$SWIFT_PLATFORM \ OS_MAJOR_VER=$OS_MAJOR_VER \ OS_VER=$SWIFT_PLATFORM$OS_MAJOR_VER \ - SWIFT_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER" + SWIFT_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER" \ + SWIFT_PREFIX=$SWIFT_PREFIX RUN echo "${SWIFT_WEBROOT}/latest-build.yml" @@ -55,10 +58,16 @@ RUN set -e; \ && curl -fSsL https://swift.org/keys/all-keys.asc | gpg --import - \ && gpg --batch --verify latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ # - Unpack the toolchain, set libs permissions, and clean up. - && tar -xzf latest_toolchain.tar.gz --directory / --strip-components=1 \ - && chmod -R o+r /usr/lib/swift \ + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf latest_toolchain.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + # This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`. + && ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \ && rm -rf "$GNUPGHOME" latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux" + # Print Installed Swift Version RUN swift --version diff --git a/nightly-main/amazonlinux/2/buildx/Dockerfile b/nightly-main/amazonlinux/2/buildx/Dockerfile index 28ea5917..a99e0017 100644 --- a/nightly-main/amazonlinux/2/buildx/Dockerfile +++ b/nightly-main/amazonlinux/2/buildx/Dockerfile @@ -32,7 +32,9 @@ RUN yum -y install \ ARG SWIFT_SIGNING_KEY=8A7495662C3CD4AE18D95637FAF6989E1BC16FEA ARG SWIFT_PLATFORM=amazonlinux ARG OS_MAJOR_VER=2 +ARG SWIFT_VERSION=6.2 ARG SWIFT_WEBROOT=https://download.swift.org/development +ARG SWIFT_PREFIX=/opt/swift/${SWIFT_VERSION} # This is a small trick to enable if/else for arm64 and amd64. # Because of https://bugs.swift.org/browse/SR-14872 we need adjust tar options. @@ -46,6 +48,7 @@ FROM base-$TARGETARCH AS final ARG OS_VER=$SWIFT_PLATFORM$OS_MAJOR_VER$OS_ARCH_SUFFIX ARG PLATFORM_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_ARCH_SUFFIX" +ENV SWIFT_PREFIX=$SWIFT_PREFIX RUN echo "${PLATFORM_WEBROOT}/latest-build.yml" @@ -62,10 +65,16 @@ RUN set -e; \ && curl -fSsL https://swift.org/keys/all-keys.asc | gpg --import - \ && gpg --batch --verify latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ # - Unpack the toolchain, set libs permissions, and clean up. - && tar -xzf latest_toolchain.tar.gz --directory / --strip-components=1 \ - && chmod -R o+r /usr/lib/swift \ + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf latest_toolchain.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + # This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`. + && ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \ && rm -rf "$GNUPGHOME" latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux" + # Print Installed Swift Version RUN swift --version diff --git a/nightly-main/rhel-ubi/9/Dockerfile b/nightly-main/rhel-ubi/9/Dockerfile index 200d741a..b86f828e 100644 --- a/nightly-main/rhel-ubi/9/Dockerfile +++ b/nightly-main/rhel-ubi/9/Dockerfile @@ -26,13 +26,16 @@ RUN yum install -y \ ARG SWIFT_SIGNING_KEY=8A7495662C3CD4AE18D95637FAF6989E1BC16FEA ARG SWIFT_PLATFORM=ubi ARG OS_MAJOR_VER=9 +ARG SWIFT_VERSION=6.2 ARG SWIFT_WEBROOT=https://download.swift.org/development +ARG SWIFT_PREFIX=/opt/swift/${SWIFT_VERSION} ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ SWIFT_PLATFORM=$SWIFT_PLATFORM \ OS_MAJOR_VER=$OS_MAJOR_VER \ OS_VER=$SWIFT_PLATFORM$OS_MAJOR_VER \ - SWIFT_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER" + SWIFT_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER" \ + SWIFT_PREFIX=$SWIFT_PREFIX RUN echo "${SWIFT_WEBROOT}/latest-build.yml" @@ -49,10 +52,16 @@ RUN set -e; \ && curl -fL https://swift.org/keys/all-keys.asc | gpg --import - \ && gpg --batch --verify latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ # - Unpack the toolchain, set libs permissions, and clean up. - && tar -xzf latest_toolchain.tar.gz --directory / --strip-components=1 \ - && chmod -R o+r /usr/lib/swift \ + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf latest_toolchain.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + # This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`. + && ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \ && rm -rf "$GNUPGHOME" latest_toolchain.tar.gz.sig latest_toolchain.tar.gz +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux" + # Print Installed Swift Version RUN swift --version diff --git a/nightly-main/rhel-ubi/9/buildx/Dockerfile b/nightly-main/rhel-ubi/9/buildx/Dockerfile index 26907807..b8b2dd56 100644 --- a/nightly-main/rhel-ubi/9/buildx/Dockerfile +++ b/nightly-main/rhel-ubi/9/buildx/Dockerfile @@ -25,7 +25,9 @@ RUN yum install -y \ ARG SWIFT_SIGNING_KEY=8A7495662C3CD4AE18D95637FAF6989E1BC16FEA ARG SWIFT_PLATFORM=ubi ARG OS_MAJOR_VER=9 +ARG SWIFT_VERSION=6.2 ARG SWIFT_WEBROOT=https://download.swift.org/development +ARG SWIFT_PREFIX=/opt/swift/${SWIFT_VERSION} # This is a small trick to enable if/else for arm64 and amd64. # Because of https://bugs.swift.org/browse/SR-14872 we need adjust tar options. @@ -39,6 +41,7 @@ FROM base-$TARGETARCH AS final ARG OS_VER=$SWIFT_PLATFORM$OS_MAJOR_VER$OS_ARCH_SUFFIX ARG PLATFORM_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_ARCH_SUFFIX" +ENV SWIFT_PREFIX=$SWIFT_PREFIX RUN echo "${PLATFORM_WEBROOT}/latest-build.yml" @@ -55,10 +58,16 @@ RUN set -e; \ && curl -fSsL https://swift.org/keys/all-keys.asc | gpg --import - \ && gpg --batch --verify latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ # - Unpack the toolchain, set libs permissions, and clean up. - && tar -xzf latest_toolchain.tar.gz --directory / --strip-components=1 \ - && chmod -R o+r /usr/lib/swift \ + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf latest_toolchain.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + # This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`. + && ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \ && rm -rf "$GNUPGHOME" latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux" + # Print Installed Swift Version RUN swift --version diff --git a/nightly-main/ubuntu/20.04/Dockerfile b/nightly-main/ubuntu/20.04/Dockerfile index 3c0b30f3..b5b95697 100644 --- a/nightly-main/ubuntu/20.04/Dockerfile +++ b/nightly-main/ubuntu/20.04/Dockerfile @@ -32,14 +32,17 @@ ARG SWIFT_SIGNING_KEY=8A7495662C3CD4AE18D95637FAF6989E1BC16FEA ARG SWIFT_PLATFORM=ubuntu ARG OS_MAJOR_VER=20 ARG OS_MIN_VER=04 +ARG SWIFT_VERSION=6.2 ARG SWIFT_WEBROOT=https://download.swift.org/development +ARG SWIFT_PREFIX=/opt/swift/${SWIFT_VERSION} ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ SWIFT_PLATFORM=$SWIFT_PLATFORM \ OS_MAJOR_VER=$OS_MAJOR_VER \ OS_MIN_VER=$OS_MIN_VER \ OS_VER=$SWIFT_PLATFORM$OS_MAJOR_VER.$OS_MIN_VER \ - SWIFT_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_MIN_VER" + SWIFT_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_MIN_VER" \ + SWIFT_PREFIX=$SWIFT_PREFIX RUN echo "${SWIFT_WEBROOT}/latest-build.yml" @@ -59,11 +62,17 @@ RUN set -e; \ && curl -fSsL https://swift.org/keys/all-keys.asc | gpg --import - \ && gpg --batch --verify latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ # - Unpack the toolchain, set libs permissions, and clean up. - && tar -xzf latest_toolchain.tar.gz --directory / --strip-components=1 \ - && chmod -R o+r /usr/lib/swift \ + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf latest_toolchain.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + # This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`. + && ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \ && rm -rf "$GNUPGHOME" latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ && apt-get purge --auto-remove -y curl +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux" + # Print Installed Swift Version RUN swift --version diff --git a/nightly-main/ubuntu/20.04/buildx/Dockerfile b/nightly-main/ubuntu/20.04/buildx/Dockerfile index fc682835..8d2e98a3 100644 --- a/nightly-main/ubuntu/20.04/buildx/Dockerfile +++ b/nightly-main/ubuntu/20.04/buildx/Dockerfile @@ -32,7 +32,9 @@ ARG SWIFT_SIGNING_KEY=8A7495662C3CD4AE18D95637FAF6989E1BC16FEA ARG SWIFT_PLATFORM=ubuntu ARG OS_MAJOR_VER=20 ARG OS_MIN_VER=04 +ARG SWIFT_VERSION=6.2 ARG SWIFT_WEBROOT=https://download.swift.org/development +ARG SWIFT_PREFIX=/opt/swift/${SWIFT_VERSION} # This is a small trick to enable if/else for arm64 and amd64. # Because of https://bugs.swift.org/browse/SR-14872 we need adjust tar options. @@ -46,6 +48,7 @@ FROM base-$TARGETARCH AS final ARG OS_VER=$SWIFT_PLATFORM$OS_MAJOR_VER.$OS_MIN_VER$OS_ARCH_SUFFIX ARG PLATFORM_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_MIN_VER$OS_ARCH_SUFFIX" +ENV SWIFT_PREFIX=$SWIFT_PREFIX RUN echo "${PLATFORM_WEBROOT}/latest-build.yml" @@ -65,11 +68,17 @@ RUN set -e; \ && curl -fSsL https://swift.org/keys/all-keys.asc | gpg --import - \ && gpg --batch --verify latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ # - Unpack the toolchain, set libs permissions, and clean up. - && tar -xzf latest_toolchain.tar.gz --directory / --strip-components=1 \ - && chmod -R o+r /usr/lib/swift \ + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf latest_toolchain.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + # This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`. + && ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \ && rm -rf "$GNUPGHOME" latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ && apt-get purge --auto-remove -y curl +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux" + # Print Installed Swift Version RUN swift --version diff --git a/nightly-main/ubuntu/22.04/Dockerfile b/nightly-main/ubuntu/22.04/Dockerfile index 31496b54..26f0efab 100644 --- a/nightly-main/ubuntu/22.04/Dockerfile +++ b/nightly-main/ubuntu/22.04/Dockerfile @@ -32,14 +32,17 @@ ARG SWIFT_SIGNING_KEY=8A7495662C3CD4AE18D95637FAF6989E1BC16FEA ARG SWIFT_PLATFORM=ubuntu ARG OS_MAJOR_VER=22 ARG OS_MIN_VER=04 +ARG SWIFT_VERSION=6.2 ARG SWIFT_WEBROOT=https://download.swift.org/development +ARG SWIFT_PREFIX=/opt/swift/${SWIFT_VERSION} ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ SWIFT_PLATFORM=$SWIFT_PLATFORM \ OS_MAJOR_VER=$OS_MAJOR_VER \ OS_MIN_VER=$OS_MIN_VER \ OS_VER=$SWIFT_PLATFORM$OS_MAJOR_VER.$OS_MIN_VER \ - SWIFT_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_MIN_VER" + SWIFT_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_MIN_VER" \ + SWIFT_PREFIX=$SWIFT_PREFIX RUN echo "${SWIFT_WEBROOT}/latest-build.yml" @@ -59,11 +62,17 @@ RUN set -e; \ && curl -fSsL https://swift.org/keys/all-keys.asc | gpg --import - \ && gpg --batch --verify latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ # - Unpack the toolchain, set libs permissions, and clean up. - && tar -xzf latest_toolchain.tar.gz --directory / --strip-components=1 \ - && chmod -R o+r /usr/lib/swift \ + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf latest_toolchain.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + # This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`. + && ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \ && rm -rf "$GNUPGHOME" latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ && apt-get purge --auto-remove -y curl +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux" + # Print Installed Swift Version RUN swift --version diff --git a/nightly-main/ubuntu/22.04/buildx/Dockerfile b/nightly-main/ubuntu/22.04/buildx/Dockerfile index bdaaea95..8da06cc4 100644 --- a/nightly-main/ubuntu/22.04/buildx/Dockerfile +++ b/nightly-main/ubuntu/22.04/buildx/Dockerfile @@ -32,7 +32,9 @@ ARG SWIFT_SIGNING_KEY=8A7495662C3CD4AE18D95637FAF6989E1BC16FEA ARG SWIFT_PLATFORM=ubuntu ARG OS_MAJOR_VER=22 ARG OS_MIN_VER=04 +ARG SWIFT_VERSION=6.2 ARG SWIFT_WEBROOT=https://download.swift.org/development +ARG SWIFT_PREFIX=/opt/swift/${SWIFT_VERSION} # This is a small trick to enable if/else for arm64 and amd64. # Because of https://bugs.swift.org/browse/SR-14872 we need adjust tar options. @@ -46,6 +48,7 @@ FROM base-$TARGETARCH AS final ARG OS_VER=$SWIFT_PLATFORM$OS_MAJOR_VER.$OS_MIN_VER$OS_ARCH_SUFFIX ARG PLATFORM_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_MIN_VER$OS_ARCH_SUFFIX" +ENV SWIFT_PREFIX=$SWIFT_PREFIX RUN echo "${PLATFORM_WEBROOT}/latest-build.yml" @@ -65,11 +68,17 @@ RUN set -e; \ && curl -fSsL https://swift.org/keys/all-keys.asc | gpg --import - \ && gpg --batch --verify latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ # - Unpack the toolchain, set libs permissions, and clean up. - && tar -xzf latest_toolchain.tar.gz --directory / --strip-components=1 \ - && chmod -R o+r /usr/lib/swift \ + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf latest_toolchain.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + # This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`. + && ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \ && rm -rf "$GNUPGHOME" latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ && apt-get purge --auto-remove -y curl +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux" + # Print Installed Swift Version RUN swift --version diff --git a/nightly-main/ubuntu/24.04/Dockerfile b/nightly-main/ubuntu/24.04/Dockerfile index 0fc3783b..6fcbe8bf 100644 --- a/nightly-main/ubuntu/24.04/Dockerfile +++ b/nightly-main/ubuntu/24.04/Dockerfile @@ -34,14 +34,17 @@ ARG SWIFT_SIGNING_KEY=E813C892820A6FA13755B268F167DF1ACF9CE069 ARG SWIFT_PLATFORM=ubuntu ARG OS_MAJOR_VER=24 ARG OS_MIN_VER=04 +ARG SWIFT_VERSION=6.2 ARG SWIFT_WEBROOT=https://download.swift.org/development +ARG SWIFT_PREFIX=/opt/swift/${SWIFT_VERSION} ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ SWIFT_PLATFORM=$SWIFT_PLATFORM \ OS_MAJOR_VER=$OS_MAJOR_VER \ OS_MIN_VER=$OS_MIN_VER \ OS_VER=$SWIFT_PLATFORM$OS_MAJOR_VER.$OS_MIN_VER \ - SWIFT_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_MIN_VER" + SWIFT_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_MIN_VER" \ + SWIFT_PREFIX=$SWIFT_PREFIX RUN echo "${SWIFT_WEBROOT}/latest-build.yml" @@ -57,11 +60,17 @@ RUN set -e; \ && curl -fSsL https://swift.org/keys/all-keys.asc | gpg --import - \ && gpg --batch --verify latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ # - Unpack the toolchain, set libs permissions, and clean up. - && tar -xzf latest_toolchain.tar.gz --directory / --strip-components=1 \ - && chmod -R o+r /usr/lib/swift \ + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf latest_toolchain.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + # This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`. + && ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \ && rm -rf "$GNUPGHOME" latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ && apt-get purge --auto-remove -y curl +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux" + # Print Installed Swift Version RUN swift --version diff --git a/nightly-main/ubuntu/24.04/buildx/Dockerfile b/nightly-main/ubuntu/24.04/buildx/Dockerfile index 5846944a..5c0972bf 100644 --- a/nightly-main/ubuntu/24.04/buildx/Dockerfile +++ b/nightly-main/ubuntu/24.04/buildx/Dockerfile @@ -32,7 +32,9 @@ ARG SWIFT_SIGNING_KEY=8A7495662C3CD4AE18D95637FAF6989E1BC16FEA ARG SWIFT_PLATFORM=ubuntu ARG OS_MAJOR_VER=24 ARG OS_MIN_VER=04 +ARG SWIFT_VERSION=6.2 ARG SWIFT_WEBROOT=https://download.swift.org/development +ARG SWIFT_PREFIX=/opt/swift/${SWIFT_VERSION} # This is a small trick to enable if/else for arm64 and amd64. # Because of https://bugs.swift.org/browse/SR-14872 we need adjust tar options. @@ -46,6 +48,7 @@ FROM base-$TARGETARCH AS final ARG OS_VER=$SWIFT_PLATFORM$OS_MAJOR_VER.$OS_MIN_VER$OS_ARCH_SUFFIX ARG PLATFORM_WEBROOT="$SWIFT_WEBROOT/$SWIFT_PLATFORM$OS_MAJOR_VER$OS_MIN_VER$OS_ARCH_SUFFIX" +ENV SWIFT_PREFIX=$SWIFT_PREFIX RUN echo "${PLATFORM_WEBROOT}/latest-build.yml" @@ -61,11 +64,17 @@ RUN set -e; \ && curl -fSsL https://swift.org/keys/all-keys.asc | gpg --import - \ && gpg --batch --verify latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ # - Unpack the toolchain, set libs permissions, and clean up. - && tar -xzf latest_toolchain.tar.gz --directory / --strip-components=1 \ - && chmod -R o+r /usr/lib/swift \ + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf latest_toolchain.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + # This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`. + && ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \ && rm -rf "$GNUPGHOME" latest_toolchain.tar.gz.sig latest_toolchain.tar.gz \ && apt-get purge --auto-remove -y curl +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux" + # Print Installed Swift Version RUN swift --version From 0225a99a1375afb7aff542feb1089a09b0ea7d89 Mon Sep 17 00:00:00 2001 From: Kenta Kubo <601636+kkebo@users.noreply.github.com> Date: Tue, 1 Apr 2025 23:18:11 +0900 Subject: [PATCH 2/2] [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. --- 6.1/amazonlinux/2/Dockerfile | 14 +++++++++++--- 6.1/debian/12/Dockerfile | 14 +++++++++++--- 6.1/fedora/39/Dockerfile | 14 +++++++++++--- 6.1/rhel-ubi/9/Dockerfile | 14 +++++++++++--- 6.1/ubuntu/20.04/Dockerfile | 14 +++++++++++--- 6.1/ubuntu/22.04/Dockerfile | 14 +++++++++++--- 6.1/ubuntu/24.04/Dockerfile | 14 +++++++++++--- 7 files changed, 77 insertions(+), 21 deletions(-) diff --git a/6.1/amazonlinux/2/Dockerfile b/6.1/amazonlinux/2/Dockerfile index e5ccc59b..bcefb88d 100644 --- a/6.1/amazonlinux/2/Dockerfile +++ b/6.1/amazonlinux/2/Dockerfile @@ -32,12 +32,14 @@ ARG SWIFT_PLATFORM=amazonlinux2 ARG SWIFT_BRANCH=swift-6.1-release ARG SWIFT_VERSION=swift-6.1-RELEASE ARG SWIFT_WEBROOT=https://download.swift.org +ARG SWIFT_PREFIX=/opt/swift/6.1 ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ SWIFT_PLATFORM=$SWIFT_PLATFORM \ SWIFT_BRANCH=$SWIFT_BRANCH \ SWIFT_VERSION=$SWIFT_VERSION \ - SWIFT_WEBROOT=$SWIFT_WEBROOT + SWIFT_WEBROOT=$SWIFT_WEBROOT \ + SWIFT_PREFIX=$SWIFT_PREFIX RUN set -e; \ ARCH_NAME="$(rpm --eval '%{_arch}')"; \ @@ -61,9 +63,15 @@ RUN set -e; \ && gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \ && gpg --batch --verify swift.tar.gz.sig swift.tar.gz \ # - Unpack the toolchain, set libs permissions, and clean up. - && tar -xzf swift.tar.gz --directory / --strip-components=1 \ - && chmod -R o+r /usr/lib/swift \ + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf swift.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + # This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`. + && ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \ && rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux" + # Print Installed Swift Version RUN swift --version diff --git a/6.1/debian/12/Dockerfile b/6.1/debian/12/Dockerfile index 083e4199..326f6c85 100644 --- a/6.1/debian/12/Dockerfile +++ b/6.1/debian/12/Dockerfile @@ -31,12 +31,14 @@ ARG SWIFT_PLATFORM=debian12 ARG SWIFT_BRANCH=swift-6.1-release ARG SWIFT_VERSION=swift-6.1-RELEASE ARG SWIFT_WEBROOT=https://download.swift.org +ARG SWIFT_PREFIX=/opt/swift/6.1 ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ SWIFT_PLATFORM=$SWIFT_PLATFORM \ SWIFT_BRANCH=$SWIFT_BRANCH \ SWIFT_VERSION=$SWIFT_VERSION \ - SWIFT_WEBROOT=$SWIFT_WEBROOT + SWIFT_WEBROOT=$SWIFT_WEBROOT \ + SWIFT_PREFIX=$SWIFT_PREFIX RUN set -e; \ ARCH_NAME="$(dpkg --print-architecture)"; \ @@ -62,10 +64,16 @@ RUN set -e; \ && gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \ && gpg --batch --verify swift.tar.gz.sig swift.tar.gz \ # - Unpack the toolchain, set libs permissions, and clean up. - && tar -xzf swift.tar.gz --directory / --strip-components=1 \ - && chmod -R o+r /usr/lib/swift \ + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf swift.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + # This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`. + && ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \ && rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz \ && apt-get purge --auto-remove -y curl gpg +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux" + # Print Installed Swift Version RUN swift --version diff --git a/6.1/fedora/39/Dockerfile b/6.1/fedora/39/Dockerfile index 4d1cc247..2fbbb8a0 100644 --- a/6.1/fedora/39/Dockerfile +++ b/6.1/fedora/39/Dockerfile @@ -28,12 +28,14 @@ ARG SWIFT_PLATFORM=fedora39 ARG SWIFT_BRANCH=swift-6.1-release ARG SWIFT_VERSION=swift-6.1-RELEASE ARG SWIFT_WEBROOT=https://download.swift.org +ARG SWIFT_PREFIX=/opt/swift/6.1 ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ SWIFT_PLATFORM=$SWIFT_PLATFORM \ SWIFT_BRANCH=$SWIFT_BRANCH \ SWIFT_VERSION=$SWIFT_VERSION \ - SWIFT_WEBROOT=$SWIFT_WEBROOT + SWIFT_WEBROOT=$SWIFT_WEBROOT \ + SWIFT_PREFIX=$SWIFT_PREFIX RUN set -e; \ ARCH_NAME="$(rpm --eval '%{_arch}')"; \ @@ -57,9 +59,15 @@ RUN set -e; \ && gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \ && gpg --batch --verify swift.tar.gz.sig swift.tar.gz \ # - Unpack the toolchain, set libs permissions, and clean up. - && tar -xzf swift.tar.gz --directory / --strip-components=1 \ - && chmod -R o+r /usr/lib/swift \ + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf swift.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + # This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`. + && ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \ && rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux" + # Print Installed Swift Version RUN swift --version diff --git a/6.1/rhel-ubi/9/Dockerfile b/6.1/rhel-ubi/9/Dockerfile index e511f4d3..2e9bd320 100644 --- a/6.1/rhel-ubi/9/Dockerfile +++ b/6.1/rhel-ubi/9/Dockerfile @@ -26,12 +26,14 @@ ARG SWIFT_PLATFORM=ubi9 ARG SWIFT_BRANCH=swift-6.1-release ARG SWIFT_VERSION=swift-6.1-RELEASE ARG SWIFT_WEBROOT=https://download.swift.org +ARG SWIFT_PREFIX=/opt/swift/6.1 ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ SWIFT_PLATFORM=$SWIFT_PLATFORM \ SWIFT_BRANCH=$SWIFT_BRANCH \ SWIFT_VERSION=$SWIFT_VERSION \ - SWIFT_WEBROOT=$SWIFT_WEBROOT + SWIFT_WEBROOT=$SWIFT_WEBROOT \ + SWIFT_PREFIX=$SWIFT_PREFIX RUN set -e; \ ARCH_NAME="$(rpm --eval '%{_arch}')"; \ @@ -55,9 +57,15 @@ RUN set -e; \ && gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \ && gpg --batch --verify swift.tar.gz.sig swift.tar.gz \ # - Unpack the toolchain, set libs permissions, and clean up. - && tar -xzf swift.tar.gz --directory / --strip-components=1 \ - && chmod -R o+r /usr/lib/swift \ + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf swift.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + # This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`. + && ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \ && rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux" + # Print Installed Swift Version RUN swift --version diff --git a/6.1/ubuntu/20.04/Dockerfile b/6.1/ubuntu/20.04/Dockerfile index 0bf992f7..1d9a7d2c 100644 --- a/6.1/ubuntu/20.04/Dockerfile +++ b/6.1/ubuntu/20.04/Dockerfile @@ -32,12 +32,14 @@ ARG SWIFT_PLATFORM=ubuntu20.04 ARG SWIFT_BRANCH=swift-6.1-release ARG SWIFT_VERSION=swift-6.1-RELEASE ARG SWIFT_WEBROOT=https://download.swift.org +ARG SWIFT_PREFIX=/opt/swift/6.1 ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ SWIFT_PLATFORM=$SWIFT_PLATFORM \ SWIFT_BRANCH=$SWIFT_BRANCH \ SWIFT_VERSION=$SWIFT_VERSION \ - SWIFT_WEBROOT=$SWIFT_WEBROOT + SWIFT_WEBROOT=$SWIFT_WEBROOT \ + SWIFT_PREFIX=$SWIFT_PREFIX RUN set -e; \ ARCH_NAME="$(dpkg --print-architecture)"; \ @@ -63,10 +65,16 @@ RUN set -e; \ && gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \ && gpg --batch --verify swift.tar.gz.sig swift.tar.gz \ # - Unpack the toolchain, set libs permissions, and clean up. - && tar -xzf swift.tar.gz --directory / --strip-components=1 \ - && chmod -R o+r /usr/lib/swift \ + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf swift.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + # This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`. + && ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \ && rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz \ && apt-get purge --auto-remove -y curl +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux" + # Print Installed Swift Version RUN swift --version diff --git a/6.1/ubuntu/22.04/Dockerfile b/6.1/ubuntu/22.04/Dockerfile index d3be1e41..47d4752f 100644 --- a/6.1/ubuntu/22.04/Dockerfile +++ b/6.1/ubuntu/22.04/Dockerfile @@ -33,12 +33,14 @@ ARG SWIFT_PLATFORM=ubuntu22.04 ARG SWIFT_BRANCH=swift-6.1-release ARG SWIFT_VERSION=swift-6.1-RELEASE ARG SWIFT_WEBROOT=https://download.swift.org +ARG SWIFT_PREFIX=/opt/swift/6.1 ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ SWIFT_PLATFORM=$SWIFT_PLATFORM \ SWIFT_BRANCH=$SWIFT_BRANCH \ SWIFT_VERSION=$SWIFT_VERSION \ - SWIFT_WEBROOT=$SWIFT_WEBROOT + SWIFT_WEBROOT=$SWIFT_WEBROOT \ + SWIFT_PREFIX=$SWIFT_PREFIX RUN set -e; \ ARCH_NAME="$(dpkg --print-architecture)"; \ @@ -64,10 +66,16 @@ RUN set -e; \ && gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \ && gpg --batch --verify swift.tar.gz.sig swift.tar.gz \ # - Unpack the toolchain, set libs permissions, and clean up. - && tar -xzf swift.tar.gz --directory / --strip-components=1 \ - && chmod -R o+r /usr/lib/swift \ + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf swift.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + # This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`. + && ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \ && rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz \ && apt-get purge --auto-remove -y curl +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux" + # Print Installed Swift Version RUN swift --version diff --git a/6.1/ubuntu/24.04/Dockerfile b/6.1/ubuntu/24.04/Dockerfile index 41f35ef0..d11a1afa 100644 --- a/6.1/ubuntu/24.04/Dockerfile +++ b/6.1/ubuntu/24.04/Dockerfile @@ -33,12 +33,14 @@ ARG SWIFT_PLATFORM=ubuntu24.04 ARG SWIFT_BRANCH=swift-6.1-release ARG SWIFT_VERSION=swift-6.1-RELEASE ARG SWIFT_WEBROOT=https://download.swift.org +ARG SWIFT_PREFIX=/opt/swift/6.1 ENV SWIFT_SIGNING_KEY=$SWIFT_SIGNING_KEY \ SWIFT_PLATFORM=$SWIFT_PLATFORM \ SWIFT_BRANCH=$SWIFT_BRANCH \ SWIFT_VERSION=$SWIFT_VERSION \ - SWIFT_WEBROOT=$SWIFT_WEBROOT + SWIFT_WEBROOT=$SWIFT_WEBROOT \ + SWIFT_PREFIX=$SWIFT_PREFIX RUN set -e; \ ARCH_NAME="$(dpkg --print-architecture)"; \ @@ -64,10 +66,16 @@ RUN set -e; \ && gpg --batch --quiet --keyserver keyserver.ubuntu.com --recv-keys "$SWIFT_SIGNING_KEY" \ && gpg --batch --verify swift.tar.gz.sig swift.tar.gz \ # - Unpack the toolchain, set libs permissions, and clean up. - && tar -xzf swift.tar.gz --directory / --strip-components=1 \ - && chmod -R o+r /usr/lib/swift \ + && mkdir -p $SWIFT_PREFIX \ + && tar -xzf swift.tar.gz --directory $SWIFT_PREFIX --strip-components=1 \ + && chmod -R o+r $SWIFT_PREFIX/usr/lib/swift \ + # This is a compatibility workaround for those who expect `swift` to be in `/usr/bin/`. + && ln -sf $SWIFT_PREFIX/usr/bin/* /usr/bin/ \ && rm -rf "$GNUPGHOME" swift.tar.gz.sig swift.tar.gz \ && apt-get purge --auto-remove -y curl +ENV PATH="${SWIFT_PREFIX}/usr/bin:${PATH}" +ENV LD_LIBRARY_PATH="${SWIFT_PREFIX}/usr/lib/swift/linux" + # Print Installed Swift Version RUN swift --version