From c8659adc110a873b6c3239cbba01ac4c7a84b0a2 Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Mon, 4 Aug 2025 11:57:52 +0100 Subject: [PATCH 01/13] Add Embedded Swift for Wasm in `swift_package_test.yml` Also cleaned up incorrect "SDK" naming: we're using Swift SDKs and not plain Clang or Xcode SDKs in these workflows. --- .github/workflows/swift_package_test.yml | 69 +++++++++++++++++++----- 1 file changed, 57 insertions(+), 12 deletions(-) diff --git a/.github/workflows/swift_package_test.yml b/.github/workflows/swift_package_test.yml index 670a095..0ef8e2b 100644 --- a/.github/workflows/swift_package_test.yml +++ b/.github/workflows/swift_package_test.yml @@ -33,12 +33,12 @@ on: default: "[\"jammy\"]" linux_static_sdk_versions: type: string - description: "Linux Swift static SDK version list (JSON)" + description: "Static Linux Swift SDK version list (JSON)" default: "[\"nightly-6.2\"]" wasm_sdk_versions: type: string - description: "Swift Wasm SDK version list (JSON)" - default: "[\"nightly-6.2\"]" + description: "Wasm Swift SDK version list (JSON)" + default: "[\"nightly\", \"nightly-6.2\"]" windows_swift_versions: type: string description: "Include Windows Swift version list (JSON)" @@ -61,11 +61,15 @@ on: default: "" linux_static_sdk_pre_build_command: type: string - description: "Linux command to execute before building the Swift package with the static SDK" + description: "Linux command to execute before building the Swift package with the static Linux Swift SDK" default: "" wasm_sdk_pre_build_command: type: string - description: "Linux command to execute before building the Swift package with the Wasm SDK" + description: "Linux command to execute before building the Swift package with the Embedded Swift SDK for Wasm" + default: "" + embedded_wasm_sdk_pre_build_command: + type: string + description: "Linux command to execute before building the Swift package with the Embedded Swift SDK for Wasm" default: "" macos_pre_build_command: type: string @@ -105,11 +109,15 @@ on: default: true enable_linux_static_sdk_build: type: boolean - description: "Boolean to enable building with the Linux static SDK. Defaults to false" + description: "Boolean to enable building with the Static Linux Swift SDK. Defaults to false" default: false enable_wasm_sdk_build: type: boolean - description: "Boolean to enable building with the Wasm SDK. Defaults to false" + description: "Boolean to enable building with the Swift SDK for Wasm. Defaults to false" + default: false + enable_embedded_wasm_sdk_build: + type: boolean + description: "Boolean to enable building with the Embedded Swift SDK for Wasm. Defaults to false" default: false enable_macos_checks: type: boolean @@ -200,7 +208,7 @@ jobs: run: ${{ inputs.linux_build_command }} ${{ (contains(matrix.swift_version, 'nightly') && inputs.swift_nightly_flags) || inputs.swift_flags }} linux-static-sdk-build: - name: Linux Static SDK Build (${{ matrix.swift_version }} - ${{ matrix.os_version }}) + name: Static Linux Swift SDK Build (${{ matrix.swift_version }} - ${{ matrix.os_version }}) if: ${{ inputs.enable_linux_static_sdk_build }} runs-on: ubuntu-latest strategy: @@ -228,7 +236,7 @@ jobs: done - name: Pre-build run: ${{ inputs.linux_pre_build_command }} - - name: Install static SDK and build + - name: Install Static Linux Swift SDK and build env: BUILD_FLAGS: ${{ (contains(matrix.swift_version, 'nightly') && inputs.swift_nightly_flags) || inputs.swift_flags }} run: | @@ -238,7 +246,7 @@ jobs: bash -s -- --static --flags="$BUILD_FLAGS" ${{ matrix.swift_version }} wasm-sdk-build: - name: Wasm SDK Build (${{ matrix.swift_version }} - ${{ matrix.os_version }}) + name: Swift SDK for Wasm Build (${{ matrix.swift_version }} - ${{ matrix.os_version }}) if: ${{ inputs.enable_wasm_sdk_build }} runs-on: ubuntu-latest strategy: @@ -266,14 +274,51 @@ jobs: done - name: Pre-build run: ${{ inputs.linux_pre_build_command }} - - name: Install Wasm SDK and build + - name: Install Swift SDK for Wasm and build + env: + BUILD_FLAGS: ${{ (contains(matrix.swift_version, 'nightly') && inputs.swift_nightly_flags) || inputs.swift_flags }} + run: | + ${{ inputs.wasm_sdk_pre_build_command }} + which curl || (apt -q update && apt -yq install curl) + curl -s --retry 3 https://raw.githubusercontent.com/swiftlang/github-workflows/refs/heads/main/.github/workflows/scripts/install-and-build-with-sdk.sh | \ + bash -s -- --wasm --flags="$BUILD_FLAGS" ${{ matrix.swift_version }} wasm-sdk-build: + + name: Embedded Swift SDK for Wasm Build (${{ matrix.swift_version }} - ${{ matrix.os_version }}) + if: ${{ inputs.enable_embedded_wasm_sdk_build }} + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + swift_version: ${{ fromJson(inputs.wasm_sdk_versions) }} + os_version: ${{ fromJson(inputs.linux_os_versions) }} + container: + image: ${{ (contains(matrix.swift_version, 'nightly') && 'swiftlang/swift') || 'swift' }}:${{ matrix.swift_version }}-${{ matrix.os_version }} + steps: + - name: Swift version + run: swift --version + - name: Checkout repository + uses: actions/checkout@v4 + - name: Provide token + if: ${{ inputs.needs_token }} + run: | + echo "GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }}" >> $GITHUB_ENV + - name: Set environment variables + if: ${{ inputs.linux_env_vars }} + run: | + for i in "${{ inputs.linux_env_vars }}" + do + printf "%s\n" $i >> $GITHUB_ENV + done + - name: Pre-build + run: ${{ inputs.linux_pre_build_command }} + - name: Install Swift SDK for Wasm and build env: BUILD_FLAGS: ${{ (contains(matrix.swift_version, 'nightly') && inputs.swift_nightly_flags) || inputs.swift_flags }} run: | ${{ inputs.wasm_sdk_pre_build_command }} which curl || (apt -q update && apt -yq install curl) curl -s --retry 3 https://raw.githubusercontent.com/swiftlang/github-workflows/refs/heads/main/.github/workflows/scripts/install-and-build-with-sdk.sh | \ - bash -s -- --wasm --flags="$BUILD_FLAGS" ${{ matrix.swift_version }} + bash -s -- --embedded-wasm --flags="$BUILD_FLAGS" ${{ matrix.swift_version }} windows-build: name: Windows (${{ matrix.swift_version }} - windows-2022) From 028e9a79999afd1b683faa4a60795ba0cdd02316 Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Mon, 4 Aug 2025 12:20:07 +0100 Subject: [PATCH 02/13] Update swift_package_test.yml --- .github/workflows/swift_package_test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/swift_package_test.yml b/.github/workflows/swift_package_test.yml index 0ef8e2b..8b73dd8 100644 --- a/.github/workflows/swift_package_test.yml +++ b/.github/workflows/swift_package_test.yml @@ -283,6 +283,7 @@ jobs: curl -s --retry 3 https://raw.githubusercontent.com/swiftlang/github-workflows/refs/heads/main/.github/workflows/scripts/install-and-build-with-sdk.sh | \ bash -s -- --wasm --flags="$BUILD_FLAGS" ${{ matrix.swift_version }} wasm-sdk-build: + embedded-wasm-sdk-build: name: Embedded Swift SDK for Wasm Build (${{ matrix.swift_version }} - ${{ matrix.os_version }}) if: ${{ inputs.enable_embedded_wasm_sdk_build }} runs-on: ubuntu-latest From f9e2a7b779d21ebfc09a387d00a0b0d4dd4ecfd4 Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Mon, 4 Aug 2025 12:28:47 +0100 Subject: [PATCH 03/13] Update swift_package_test.yml --- .github/workflows/swift_package_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/swift_package_test.yml b/.github/workflows/swift_package_test.yml index 8b73dd8..f32a086 100644 --- a/.github/workflows/swift_package_test.yml +++ b/.github/workflows/swift_package_test.yml @@ -318,7 +318,7 @@ jobs: run: | ${{ inputs.wasm_sdk_pre_build_command }} which curl || (apt -q update && apt -yq install curl) - curl -s --retry 3 https://raw.githubusercontent.com/swiftlang/github-workflows/refs/heads/main/.github/workflows/scripts/install-and-build-with-sdk.sh | \ + curl -s --retry 3 https://raw.githubusercontent.com/MaxDesiatov/github-workflows/refs/heads/patch-1/.github/workflows/scripts/install-and-build-with-sdk.sh | \ bash -s -- --embedded-wasm --flags="$BUILD_FLAGS" ${{ matrix.swift_version }} windows-build: From c64496daed946f62a90277833c0d2f86f539b354 Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Mon, 4 Aug 2025 12:31:38 +0100 Subject: [PATCH 04/13] Update swift_package_test.yml --- .github/workflows/swift_package_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/swift_package_test.yml b/.github/workflows/swift_package_test.yml index f32a086..d810509 100644 --- a/.github/workflows/swift_package_test.yml +++ b/.github/workflows/swift_package_test.yml @@ -38,7 +38,7 @@ on: wasm_sdk_versions: type: string description: "Wasm Swift SDK version list (JSON)" - default: "[\"nightly\", \"nightly-6.2\"]" + default: "[\"nightly-main\", \"nightly-6.2\"]" windows_swift_versions: type: string description: "Include Windows Swift version list (JSON)" From 5adce90ed3fc96d952587565759d506ed27bffc2 Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Mon, 4 Aug 2025 12:51:36 +0100 Subject: [PATCH 05/13] Update swift_package_test.yml --- .github/workflows/swift_package_test.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/swift_package_test.yml b/.github/workflows/swift_package_test.yml index d810509..d34f63f 100644 --- a/.github/workflows/swift_package_test.yml +++ b/.github/workflows/swift_package_test.yml @@ -39,6 +39,10 @@ on: type: string description: "Wasm Swift SDK version list (JSON)" default: "[\"nightly-main\", \"nightly-6.2\"]" + wasm_exclude_swift_versions: + type: string + description: "Exclude Wasm Swift SDK version list (JSON)" + default: "[{\"swift_version\": \"\"}]" windows_swift_versions: type: string description: "Include Windows Swift version list (JSON)" @@ -67,10 +71,6 @@ on: type: string description: "Linux command to execute before building the Swift package with the Embedded Swift SDK for Wasm" default: "" - embedded_wasm_sdk_pre_build_command: - type: string - description: "Linux command to execute before building the Swift package with the Embedded Swift SDK for Wasm" - default: "" macos_pre_build_command: type: string description: "macOS command to execute before building the Swift package" @@ -254,6 +254,8 @@ jobs: matrix: swift_version: ${{ fromJson(inputs.wasm_sdk_versions) }} os_version: ${{ fromJson(inputs.linux_os_versions) }} + exclude: + - ${{ fromJson(inputs.wasm_exclude_swift_versions) }} container: image: ${{ (contains(matrix.swift_version, 'nightly') && 'swiftlang/swift') || 'swift' }}:${{ matrix.swift_version }}-${{ matrix.os_version }} steps: @@ -292,6 +294,8 @@ jobs: matrix: swift_version: ${{ fromJson(inputs.wasm_sdk_versions) }} os_version: ${{ fromJson(inputs.linux_os_versions) }} + exclude: + - ${{ fromJson(inputs.wasm_exclude_swift_versions) }} container: image: ${{ (contains(matrix.swift_version, 'nightly') && 'swiftlang/swift') || 'swift' }}:${{ matrix.swift_version }}-${{ matrix.os_version }} steps: From fc3e24d87bdc48b73a20336a9647d55d81b1caaf Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Tue, 5 Aug 2025 12:04:21 +0100 Subject: [PATCH 06/13] Fix capitalization --- .github/workflows/swift_package_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/swift_package_test.yml b/.github/workflows/swift_package_test.yml index d34f63f..4840b93 100644 --- a/.github/workflows/swift_package_test.yml +++ b/.github/workflows/swift_package_test.yml @@ -65,7 +65,7 @@ on: default: "" linux_static_sdk_pre_build_command: type: string - description: "Linux command to execute before building the Swift package with the static Linux Swift SDK" + description: "Linux command to execute before building the Swift package with the Static Linux Swift SDK" default: "" wasm_sdk_pre_build_command: type: string From 05c50c27a07b19f4803958ea6b74cb93f1d1a57b Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Tue, 5 Aug 2025 12:07:27 +0100 Subject: [PATCH 07/13] Use `main` branch script in `swift_package_test.yml` --- .github/workflows/swift_package_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/swift_package_test.yml b/.github/workflows/swift_package_test.yml index 4840b93..70344a3 100644 --- a/.github/workflows/swift_package_test.yml +++ b/.github/workflows/swift_package_test.yml @@ -322,7 +322,7 @@ jobs: run: | ${{ inputs.wasm_sdk_pre_build_command }} which curl || (apt -q update && apt -yq install curl) - curl -s --retry 3 https://raw.githubusercontent.com/MaxDesiatov/github-workflows/refs/heads/patch-1/.github/workflows/scripts/install-and-build-with-sdk.sh | \ + curl -s --retry 3 https://raw.githubusercontent.com/swiftlang/github-workflows/refs/heads/main/.github/workflows/scripts/install-and-build-with-sdk.sh | \ bash -s -- --embedded-wasm --flags="$BUILD_FLAGS" ${{ matrix.swift_version }} windows-build: From cbbea2ba9f7c3319463e0d8fdda129cb9cee6c99 Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Tue, 5 Aug 2025 12:12:13 +0100 Subject: [PATCH 08/13] Fix typo in `swift_package_test.yml` --- .github/workflows/swift_package_test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/swift_package_test.yml b/.github/workflows/swift_package_test.yml index 70344a3..32d2666 100644 --- a/.github/workflows/swift_package_test.yml +++ b/.github/workflows/swift_package_test.yml @@ -283,7 +283,7 @@ jobs: ${{ inputs.wasm_sdk_pre_build_command }} which curl || (apt -q update && apt -yq install curl) curl -s --retry 3 https://raw.githubusercontent.com/swiftlang/github-workflows/refs/heads/main/.github/workflows/scripts/install-and-build-with-sdk.sh | \ - bash -s -- --wasm --flags="$BUILD_FLAGS" ${{ matrix.swift_version }} wasm-sdk-build: + bash -s -- --wasm --flags="$BUILD_FLAGS" ${{ matrix.swift_version }} embedded-wasm-sdk-build: name: Embedded Swift SDK for Wasm Build (${{ matrix.swift_version }} - ${{ matrix.os_version }}) From 217f45cc72bf4595f2751b03958794944cdc1a4e Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Tue, 5 Aug 2025 16:08:05 +0100 Subject: [PATCH 09/13] Update pull_request.yml --- .github/workflows/pull_request.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index df500f9..a5e501c 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -5,6 +5,17 @@ on: types: [opened, reopened, synchronize] jobs: + tests_with_docker_embedded_swift: + name: Test Embedded Swift SDKs + uses: ./.github/workflows/swift_package_test.yml + with: + # Wasm + wasm_sdk_pre_build_command: | + mkdir MyPackage + cd MyPackage + swift package init --type executable + enable_embedded_wasm_sdk_build: true + tests_with_docker: name: Test with Docker uses: ./.github/workflows/swift_package_test.yml From ca1d1838b8ca838d75ba0368399aa7cc18ff092d Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Tue, 5 Aug 2025 16:16:13 +0100 Subject: [PATCH 10/13] Update pull_request.yml --- .github/workflows/pull_request.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index a5e501c..aeac739 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -13,7 +13,7 @@ jobs: wasm_sdk_pre_build_command: | mkdir MyPackage cd MyPackage - swift package init --type executable + swift package init --type library enable_embedded_wasm_sdk_build: true tests_with_docker: From 734bf063374b613c21cb7fff2acc87fc2e033f71 Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Tue, 5 Aug 2025 16:18:31 +0100 Subject: [PATCH 11/13] Update pull_request.yml --- .github/workflows/pull_request.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index aeac739..3519dc8 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -9,6 +9,8 @@ jobs: name: Test Embedded Swift SDKs uses: ./.github/workflows/swift_package_test.yml with: + enable_windows_docker: false + enable_linux_checks: false # Wasm wasm_sdk_pre_build_command: | mkdir MyPackage From 1b57761d8ef2eeb984c98f6733cfd5d7725cbd6f Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Tue, 5 Aug 2025 16:20:05 +0100 Subject: [PATCH 12/13] Update pull_request.yml --- .github/workflows/pull_request.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 3519dc8..3334e89 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -9,8 +9,9 @@ jobs: name: Test Embedded Swift SDKs uses: ./.github/workflows/swift_package_test.yml with: - enable_windows_docker: false enable_linux_checks: false + enable_macos_checks: false + enable_windows_checks: false # Wasm wasm_sdk_pre_build_command: | mkdir MyPackage From e136d616c508457bfad95e6b7c21557ff323062f Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Tue, 5 Aug 2025 16:22:56 +0100 Subject: [PATCH 13/13] Update pull_request.yml --- .github/workflows/pull_request.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 3334e89..44915cb 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -9,10 +9,10 @@ jobs: name: Test Embedded Swift SDKs uses: ./.github/workflows/swift_package_test.yml with: + # Wasm enable_linux_checks: false enable_macos_checks: false enable_windows_checks: false - # Wasm wasm_sdk_pre_build_command: | mkdir MyPackage cd MyPackage