From 20db81ead81f6ea8b190f44c46540806e27f36ee Mon Sep 17 00:00:00 2001 From: Konrad `ktoso` Malawski Date: Thu, 10 Oct 2024 08:47:26 +0900 Subject: [PATCH 1/6] ci: try out untested nightly swift to unblock nm removal --- .github/workflows/pull_request.yml | 10 ++++--- docker/Dockerfile | 6 +++- docker/install_untested_nightly_swift.sh | 38 ++++++++++++++++++++++++ 3 files changed, 49 insertions(+), 5 deletions(-) create mode 100644 docker/install_untested_nightly_swift.sh diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 8aad2c67..53fbf576 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -31,8 +31,8 @@ jobs: JAVA_HOME: "/usr/lib/jvm/default-jdk" steps: - uses: actions/checkout@v4 - - name: Install Make - run: apt-get -qq update && apt-get -qq install -y make + - name: Install System Dependencies + run: apt-get -qq update && apt-get -qq install -y make curl wget - name: Install JDK run: "bash -xc 'JDK_VENDOR=${{ matrix.jdk_vendor }} ./docker/install_jdk.sh'" # TODO: not using setup-java since incompatible with the swiftlang/swift base image @@ -41,6 +41,8 @@ jobs: # distribution: 'zulu' # java-version: '22' # cache: 'gradle' + - name: Install Nightly Swift + run: "bash -xc './docker/install_nightly_untested_swift.sh'" - name: Gradle build run: ./gradlew build --info --no-daemon @@ -59,8 +61,8 @@ jobs: JAVA_HOME: "/usr/lib/jvm/default-jdk" steps: - uses: actions/checkout@v4 - - name: Install Make - run: apt-get -qq update && apt-get -qq install -y make + - name: Install System Dependencies + run: apt-get -qq update && apt-get -qq install -y make curl wget - name: Install JDK run: "bash -xc 'JDK_VENDOR=${{ matrix.jdk_vendor }} ./docker/install_jdk.sh'" - name: Generate sources (make) (Temporary) diff --git a/docker/Dockerfile b/docker/Dockerfile index 170619e1..216e3108 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -19,4 +19,8 @@ ENV LANGUAGE=en_US.UTF-8 COPY install_jdk.sh . RUN bash -xc 'JDK_VENDOR=Corretto ./install_jdk.sh' ENV JAVA_HOME="/usr/lib/jvm/default-jdk" -ENV PATH="$PATH:/usr/lib/jvm/default-jdk/bin" \ No newline at end of file +ENV PATH="$PATH:/usr/lib/jvm/default-jdk/bin" + +# Install "untested" nightly 'main' Swift +# TODO: Only do this if the released Swift is older than what we require +RUN bash -xc './install_nightly_untested_swift.sh' diff --git a/docker/install_untested_nightly_swift.sh b/docker/install_untested_nightly_swift.sh new file mode 100644 index 00000000..9e542b41 --- /dev/null +++ b/docker/install_untested_nightly_swift.sh @@ -0,0 +1,38 @@ +#!/bin/bash +##===----------------------------------------------------------------------===## +## +## This source file is part of the Swift.org open source project +## +## Copyright (c) 2024 Apple Inc. and the Swift.org project authors +## Licensed under Apache License v2.0 +## +## See LICENSE.txt for license information +## See CONTRIBUTORS.txt for the list of Swift.org project authors +## +## SPDX-License-Identifier: Apache-2.0 +## +##===----------------------------------------------------------------------===## +set -euo pipefail + +echo "Download [nightly] [untested] Swift toolchain for: $(uname -m)" + +declare -r SWIFT_UNTESTED_TOOLCHAIN_JOB_URL="https://ci.swift.org/job/oss-swift-package-ubuntu-22_04/lastSuccessfulBuild/consoleText" + +if [[ "$(cat /etc/lsb-release | grep "22.04")" = "" ]]; then + echo "This script specifically only supports Ubuntu 20.04 due to nightly toolchain availability" + exit 1 +fi + +declare -r UNTESTED_TOOLCHAIN_URL=$(curl -s $SWIFT_UNTESTED_TOOLCHAIN_JOB_URL | grep 'Toolchain: ' | sed 's/Toolchain: //g') +declare -r UNTESTED_TOOLCHAIN_FILENAME=$(echo "$UNTESTED_TOOLCHAIN_URL" | awk ' + function basename(file) { + sub(".*/", "", file) + return file + } + {print FILENAME, basename(FILENAME)}') + +cd / +curl $UNTESTED_TOOLCHAIN_URL > $UNTESTED_TOOLCHAIN_FILENAME + +tar xzf $UNTESTED_TOOLCHAIN_FILENAME +swift -version \ No newline at end of file From 224e1f972cbf96034ce8705be92fd5420524e569 Mon Sep 17 00:00:00 2001 From: Konrad `ktoso` Malawski Date: Thu, 10 Oct 2024 09:10:50 +0900 Subject: [PATCH 2/6] cache gradle repository --- .github/workflows/pull_request.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 53fbf576..21b2e1fc 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -43,6 +43,16 @@ jobs: # cache: 'gradle' - name: Install Nightly Swift run: "bash -xc './docker/install_nightly_untested_swift.sh'" + # Cache .m2/repository + - name: Cache local Gradle repository + uses: actions/cache@v4 + continue-on-error: true + with: + path: ~/.gradle/caches + key: ${{ runner.os }}-gradle-cache-${{ hashFiles('**/build.gradle') }}-${{ ${{ hashFiles('**/build.gradle.kts') }} }} + restore-keys: | + ${{ runner.os }}-gradle-cache + ${{ runner.os }}-gradle- - name: Gradle build run: ./gradlew build --info --no-daemon From c909781852a726f076d39f9591810b36f8ac4917 Mon Sep 17 00:00:00 2001 From: Konrad `ktoso` Malawski Date: Thu, 10 Oct 2024 09:11:03 +0900 Subject: [PATCH 3/6] fix shell script warnings --- docker/install_untested_nightly_swift.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docker/install_untested_nightly_swift.sh b/docker/install_untested_nightly_swift.sh index 9e542b41..76d01895 100644 --- a/docker/install_untested_nightly_swift.sh +++ b/docker/install_untested_nightly_swift.sh @@ -18,13 +18,13 @@ echo "Download [nightly] [untested] Swift toolchain for: $(uname -m)" declare -r SWIFT_UNTESTED_TOOLCHAIN_JOB_URL="https://ci.swift.org/job/oss-swift-package-ubuntu-22_04/lastSuccessfulBuild/consoleText" -if [[ "$(cat /etc/lsb-release | grep "22.04")" = "" ]]; then +if [[ "$(grep "22.04" /etc/lsb-release)" = "" ]]; then echo "This script specifically only supports Ubuntu 20.04 due to nightly toolchain availability" exit 1 fi -declare -r UNTESTED_TOOLCHAIN_URL=$(curl -s $SWIFT_UNTESTED_TOOLCHAIN_JOB_URL | grep 'Toolchain: ' | sed 's/Toolchain: //g') -declare -r UNTESTED_TOOLCHAIN_FILENAME=$(echo "$UNTESTED_TOOLCHAIN_URL" | awk ' +UNTESTED_TOOLCHAIN_URL=$(curl -s $SWIFT_UNTESTED_TOOLCHAIN_JOB_URL | grep 'Toolchain: ' | sed 's/Toolchain: //g') +UNTESTED_TOOLCHAIN_FILENAME=$(echo "$UNTESTED_TOOLCHAIN_URL" | awk ' function basename(file) { sub(".*/", "", file) return file @@ -32,7 +32,7 @@ declare -r UNTESTED_TOOLCHAIN_FILENAME=$(echo "$UNTESTED_TOOLCHAIN_URL" | awk ' {print FILENAME, basename(FILENAME)}') cd / -curl $UNTESTED_TOOLCHAIN_URL > $UNTESTED_TOOLCHAIN_FILENAME +curl "$UNTESTED_TOOLCHAIN_URL" > "$UNTESTED_TOOLCHAIN_FILENAME" -tar xzf $UNTESTED_TOOLCHAIN_FILENAME +tar xzf "$UNTESTED_TOOLCHAIN_FILENAME" swift -version \ No newline at end of file From f7bd174ba3af463a3b7520eede65e25b02addf6c Mon Sep 17 00:00:00 2001 From: Konrad `ktoso` Malawski Date: Thu, 10 Oct 2024 09:11:12 +0900 Subject: [PATCH 4/6] cleanup --- settings.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings.gradle b/settings.gradle index 7ec81ed0..3a0bd106 100644 --- a/settings.gradle +++ b/settings.gradle @@ -12,7 +12,7 @@ // //===----------------------------------------------------------------------===// -pluginManagement{ +pluginManagement { includeBuild("BuildLogic") } From 4907ec2defdab4c4e97b0623b503dfa0f0abc80b Mon Sep 17 00:00:00 2001 From: Konrad `ktoso` Malawski Date: Thu, 10 Oct 2024 09:12:22 +0900 Subject: [PATCH 5/6] install nightly swift in both CI jobs --- .github/workflows/pull_request.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 21b2e1fc..1b8013f1 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -42,14 +42,14 @@ jobs: # java-version: '22' # cache: 'gradle' - name: Install Nightly Swift - run: "bash -xc './docker/install_nightly_untested_swift.sh'" + run: "bash -xc './docker/install_untested_nightly_swift.sh'" # Cache .m2/repository - name: Cache local Gradle repository uses: actions/cache@v4 continue-on-error: true with: path: ~/.gradle/caches - key: ${{ runner.os }}-gradle-cache-${{ hashFiles('**/build.gradle') }}-${{ ${{ hashFiles('**/build.gradle.kts') }} }} + key: ${{ runner.os }}-gradle-cache-${{ hashFiles('**/build.gradle') }}-${{ hashFiles('**/build.gradle.kts') }} restore-keys: | ${{ runner.os }}-gradle-cache ${{ runner.os }}-gradle- @@ -75,6 +75,8 @@ jobs: run: apt-get -qq update && apt-get -qq install -y make curl wget - name: Install JDK run: "bash -xc 'JDK_VENDOR=${{ matrix.jdk_vendor }} ./docker/install_jdk.sh'" + - name: Install Nightly Swift + run: "bash -xc './docker/install_untested_nightly_swift.sh'" - name: Generate sources (make) (Temporary) # TODO: this should be triggered by the respective builds run: "make jextract-run" From 7becdfbdb4ecf4c734305d2a4d23b80d58b98703 Mon Sep 17 00:00:00 2001 From: Konrad `ktoso` Malawski Date: Thu, 10 Oct 2024 09:15:02 +0900 Subject: [PATCH 6/6] fix permissions of script --- docker/install_untested_nightly_swift.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 docker/install_untested_nightly_swift.sh diff --git a/docker/install_untested_nightly_swift.sh b/docker/install_untested_nightly_swift.sh old mode 100644 new mode 100755