From 544da6ce4156b38ee77d854157991015bc2cbd28 Mon Sep 17 00:00:00 2001 From: Sebastien Stormacq Date: Mon, 2 Mar 2026 09:23:32 +0100 Subject: [PATCH 1/2] create a variable STATIC_LINUX_SDK_NAME --- .github/workflows/scripts/install-and-build-with-sdk.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/scripts/install-and-build-with-sdk.sh b/.github/workflows/scripts/install-and-build-with-sdk.sh index ef6eacba..3b869b0c 100755 --- a/.github/workflows/scripts/install-and-build-with-sdk.sh +++ b/.github/workflows/scripts/install-and-build-with-sdk.sh @@ -627,6 +627,8 @@ ANDROID_SDK_DOWNLOAD_ROOT="${SWIFT_DOWNLOAD_ROOT}/${SWIFT_VERSION_BRANCH}/androi STATIC_LINUX_SDK_DOWNLOAD_ROOT="${SWIFT_DOWNLOAD_ROOT}/${SWIFT_VERSION_BRANCH}/static-sdk" WASM_SDK_DOWNLOAD_ROOT="${SWIFT_DOWNLOAD_ROOT}/${SWIFT_VERSION_BRANCH}/wasm-sdk" +STATIC_LINUX_SDK_NAME="${STATIC_LINUX_SDK_TAG}_static-linux-0.1.0" + install_android_ndk() { local ndk_version="$1" log "Installing Android NDK: $ndk_version" @@ -693,14 +695,14 @@ install_android_sdk() { install_static_linux_sdk() { # Check if the Static Linux Swift SDK is already installed - if "$SWIFT_EXECUTABLE_FOR_STATIC_LINUX_SDK" sdk list 2>/dev/null | grep -q "^${STATIC_LINUX_SDK_TAG}_static-linux-0.0.1"; then + if "$SWIFT_EXECUTABLE_FOR_STATIC_LINUX_SDK" sdk list 2>/dev/null | grep -q "^${STATIC_LINUX_SDK_NAME}"; then log "✅ Static Linux Swift SDK ${STATIC_LINUX_SDK_TAG} is already installed, skipping installation" return 0 fi log "Installing Static Linux Swift SDK: $STATIC_LINUX_SDK_TAG" - local static_linux_sdk_filename="${STATIC_LINUX_SDK_TAG}_static-linux-0.0.1.artifactbundle.tar.gz" + local static_linux_sdk_filename="${STATIC_LINUX_SDK_NAME}.artifactbundle.tar.gz" local sdk_url="${STATIC_LINUX_SDK_DOWNLOAD_ROOT}/${STATIC_LINUX_SDK_TAG}/${static_linux_sdk_filename}" if ! swift_sdk_install_with_retry "$SWIFT_EXECUTABLE_FOR_STATIC_LINUX_SDK" "$sdk_url" "$STATIC_LINUX_SDK_CHECKSUM" "Static Linux Swift"; then @@ -782,7 +784,7 @@ build() { if [[ "$INSTALL_STATIC_LINUX" == true ]]; then log "Running Swift build with Static Linux Swift SDK" - local sdk_name="${STATIC_LINUX_SDK_TAG}_static-linux-0.0.1" + local sdk_name="${STATIC_LINUX_SDK_NAME}" alias swift='$SWIFT_EXECUTABLE_FOR_STATIC_LINUX_SDK' local build_command="$SWIFT_BUILD_COMMAND --swift-sdk $sdk_name" if [[ -n "$SWIFT_BUILD_FLAGS" ]]; then From 0fa16ced7532701a355e0c56b366bfd0ad1a60f2 Mon Sep 17 00:00:00 2001 From: Sebastien Stormacq Date: Mon, 2 Mar 2026 09:43:05 +0100 Subject: [PATCH 2/2] add logic to switch between sttaic 0.0.1 and 0.1.0 --- .../scripts/install-and-build-with-sdk.sh | 40 ++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/.github/workflows/scripts/install-and-build-with-sdk.sh b/.github/workflows/scripts/install-and-build-with-sdk.sh index 3b869b0c..75d9efda 100755 --- a/.github/workflows/scripts/install-and-build-with-sdk.sh +++ b/.github/workflows/scripts/install-and-build-with-sdk.sh @@ -627,7 +627,45 @@ ANDROID_SDK_DOWNLOAD_ROOT="${SWIFT_DOWNLOAD_ROOT}/${SWIFT_VERSION_BRANCH}/androi STATIC_LINUX_SDK_DOWNLOAD_ROOT="${SWIFT_DOWNLOAD_ROOT}/${SWIFT_VERSION_BRANCH}/static-sdk" WASM_SDK_DOWNLOAD_ROOT="${SWIFT_DOWNLOAD_ROOT}/${SWIFT_VERSION_BRANCH}/wasm-sdk" -STATIC_LINUX_SDK_NAME="${STATIC_LINUX_SDK_TAG}_static-linux-0.1.0" +# Determine the Static Linux SDK version suffix based on the Swift version. +# Swift >= 6.2.4 uses 0.1.0, older versions use 0.0.1. +# For nightly snapshots (e.g. swift-6.2-DEVELOPMENT-SNAPSHOT-...), the minor +# branch version is compared: 6.2 nightly is treated as pre-6.2.4 (0.0.1), +# while "main" nightly is treated as >= 6.2.4 (0.1.0). +get_static_linux_sdk_version() { + local tag="$1" + + # Extract the version portion from the tag, e.g.: + # swift-6.1.2-RELEASE -> 6.1.2 + # swift-6.2-DEVELOPMENT-... -> 6.2 + # swift-DEVELOPMENT-SNAPSHOT-... (main) -> "" + local version + version=$(echo "$tag" | sed -n 's/^swift-\([0-9][0-9.]*\).*/\1/p') + + if [[ -z "$version" ]]; then + # main branch snapshot — use the newer version + echo "0.1.0" + return + fi + + # Pad to major.minor.patch for comparison (e.g. "6.2" -> "6.2.0") + local major minor patch + IFS='.' read -r major minor patch <<< "$version" + patch="${patch:-0}" + + # Compare against 6.2.4 + if [[ "$major" -gt 6 ]] || + [[ "$major" -eq 6 && "$minor" -gt 2 ]] || + [[ "$major" -eq 6 && "$minor" -eq 2 && "$patch" -ge 4 ]]; then + echo "0.1.0" + else + echo "0.0.1" + fi +} + +STATIC_LINUX_SDK_VERSION=$(get_static_linux_sdk_version "$STATIC_LINUX_SDK_TAG") +STATIC_LINUX_SDK_NAME="${STATIC_LINUX_SDK_TAG}_static-linux-${STATIC_LINUX_SDK_VERSION}" +log "Static Linux SDK name: $STATIC_LINUX_SDK_NAME" install_android_ndk() { local ndk_version="$1"