From dcf1ecaa0bfb1bf88ea7b3e6e2a96009a721a81b Mon Sep 17 00:00:00 2001 From: Fabrice de Gans Date: Wed, 2 Apr 2025 17:40:28 +0200 Subject: [PATCH 1/3] Parameterize the vfs-overlay paths `vfs-overlay.yaml` refers to paths from the `swift` source directory, which may not be available in subsequent jobs, causing build issues. These changes make the path in `vfs-overlay.yaml` easily changeable for subsequent jobs, fixing the issue. --- .github/workflows/swift-toolchain.yml | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/.github/workflows/swift-toolchain.yml b/.github/workflows/swift-toolchain.yml index c1abcb10a..74ef1de8e 100644 --- a/.github/workflows/swift-toolchain.yml +++ b/.github/workflows/swift-toolchain.yml @@ -1882,6 +1882,13 @@ jobs: Remove-Item env:\SDKROOT } cmake --build ${{ github.workspace }}/BinaryCache/swift --target install + - name: Parameterize vfs-overlay + if: matrix.os == 'Windows' + run: | + $VfsOverlay = "${{ github.workspace }}/BinaryCache/swift/stdlib/windows-vfs-overlay.yaml" + $ModuleMapDir = cygpath -m ${{ github.workspace }}/SourceCache/swift/stdlib + $ModuleMapDir += "\\public\\Platform\\" + (Get-Content $VfsOverlay).Replace("${ModuleMapDir}", "/") | Set-Content $VfsOverlay - uses: thebrowsercompany/gha-upload-tar-artifact@e18c33b1cd416d0d96a91dc6dce06219f98e4e27 # main if: matrix.os != 'Android' || inputs.build_android @@ -1980,12 +1987,16 @@ jobs: $RTLPath = cygpath -w ${{ github.workspace }}/BinaryCache/Library/Developer/Platforms/Windows.platform/Developer/SDKs/Windows.sdk/usr/bin echo ${RTLPath} | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - - name: extract swift-syntax + - name: Extract swift-syntax and vfs-overlay run: | $module = "${{ github.workspace }}/BinaryCache/swift-syntax/cmake/modules/SwiftSyntaxConfig.cmake" $bindir = cygpath -m ${{ github.workspace }}/BinaryCache/swift-syntax (Get-Content $module).Replace('', "${bindir}") | Set-Content $module + $VfsOverlay = "${{ github.workspace }}/BinaryCache/swift/stdlib/windows-vfs-overlay.yaml" + $ModuleMapDir = cygpath -m ${{ github.workspace }}/BinaryCache/Library/Developer/Platforms/Windows.platform/Developer/SDKs/Windows.sdk/usr/share + (Get-Content $VfsOverlay).Replace("", "${ModuleMapDir}") | Set-Content $VfsOverlay + - name: Configure Foundation Macros run: | $WINDOWS_VFS_OVERLAY = cygpath -m ${{ github.workspace }}/BinaryCache/swift/stdlib/windows-vfs-overlay.yaml @@ -2309,6 +2320,13 @@ jobs: with: ndk-version: ${{ inputs.ANDROID_NDK_VERSION }} + - name: Extract vfs-overlay + if: matrix.os == 'Windows' + run: | + $VfsOverlay = "${{ github.workspace }}/BinaryCache/swift/stdlib/windows-vfs-overlay.yaml" + $ModuleMapDir = cygpath -m ${{ github.workspace }}/BinaryCache/Library/Developer/Platforms/Windows.platform/Developer/SDKs/Windows.sdk/usr/share + (Get-Content $VfsOverlay).Replace("", "${ModuleMapDir}") | Set-Content $VfsOverlay + - name: Configure libdispatch if: matrix.os != 'Android' || inputs.build_android run: | From 3a0e02be51be323f891aca7d5708cda18d4fde26 Mon Sep 17 00:00:00 2001 From: Fabrice de Gans Date: Wed, 2 Apr 2025 21:32:41 +0200 Subject: [PATCH 2/3] Create vfs-overlay.yaml --- .github/workflows/swift-toolchain.yml | 109 ++++++++++++++++++++------ 1 file changed, 83 insertions(+), 26 deletions(-) diff --git a/.github/workflows/swift-toolchain.yml b/.github/workflows/swift-toolchain.yml index 74ef1de8e..903f6deba 100644 --- a/.github/workflows/swift-toolchain.yml +++ b/.github/workflows/swift-toolchain.yml @@ -1882,13 +1882,6 @@ jobs: Remove-Item env:\SDKROOT } cmake --build ${{ github.workspace }}/BinaryCache/swift --target install - - name: Parameterize vfs-overlay - if: matrix.os == 'Windows' - run: | - $VfsOverlay = "${{ github.workspace }}/BinaryCache/swift/stdlib/windows-vfs-overlay.yaml" - $ModuleMapDir = cygpath -m ${{ github.workspace }}/SourceCache/swift/stdlib - $ModuleMapDir += "\\public\\Platform\\" - (Get-Content $VfsOverlay).Replace("${ModuleMapDir}", "/") | Set-Content $VfsOverlay - uses: thebrowsercompany/gha-upload-tar-artifact@e18c33b1cd416d0d96a91dc6dce06219f98e4e27 # main if: matrix.os != 'Android' || inputs.build_android @@ -1896,12 +1889,6 @@ jobs: name: ${{ matrix.os }}-${{ matrix.arch }}-stdlib path: ${{ github.workspace }}/BuildRoot/Library - - uses: actions/upload-artifact@v4 - if: matrix.os == 'Windows' - with: - name: ${{ matrix.os }}-${{ matrix.arch }}-vfs-overlay - path: ${{ github.workspace }}/BinaryCache/swift/stdlib/windows-vfs-overlay.yaml - - name: Upload PDBs to Azure uses: microsoft/action-publish-symbols@v2.1.6 if: ${{ inputs.debug_info && matrix.os == 'Windows' }} @@ -1952,10 +1939,6 @@ jobs: with: name: Windows-${{ inputs.build_arch }}-stdlib path: ${{ github.workspace }}/BinaryCache/Library - - uses: actions/download-artifact@v4 - with: - name: Windows-${{ matrix.arch }}-vfs-overlay - path: ${{ github.workspace }}/BinaryCache/swift/stdlib - uses: actions/checkout@v4.2.2 with: repository: swiftlang/swift @@ -1987,15 +1970,55 @@ jobs: $RTLPath = cygpath -w ${{ github.workspace }}/BinaryCache/Library/Developer/Platforms/Windows.platform/Developer/SDKs/Windows.sdk/usr/bin echo ${RTLPath} | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - - name: Extract swift-syntax and vfs-overlay + - name: Extract swift-syntax run: | $module = "${{ github.workspace }}/BinaryCache/swift-syntax/cmake/modules/SwiftSyntaxConfig.cmake" $bindir = cygpath -m ${{ github.workspace }}/BinaryCache/swift-syntax (Get-Content $module).Replace('', "${bindir}") | Set-Content $module + - name: Create vfs-overlay + run: | $VfsOverlay = "${{ github.workspace }}/BinaryCache/swift/stdlib/windows-vfs-overlay.yaml" $ModuleMapDir = cygpath -m ${{ github.workspace }}/BinaryCache/Library/Developer/Platforms/Windows.platform/Developer/SDKs/Windows.sdk/usr/share - (Get-Content $VfsOverlay).Replace("", "${ModuleMapDir}") | Set-Content $VfsOverlay + $Win10SdkRoot = Get-ItemPropertyValue ` + -Path "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Kits\Installed Roots" ` + -Name "KitsRoot10" + $Win10SdkRoot = cygpath -m ${Win10SdkRoot} + $InstallerLocation = Join-Path "${env:ProgramFiles(x86)}" "Microsoft Visual Studio" "Installer" + $VsWhere = Join-Path "${InstallerLocation}" "vswhere.exe" + $VsInstallPath = (& "$VsWhere" -latest -products * -format json | ConvertFrom-Json).installationPath + $VsInstallPath = cygpath -m ${VsInstallPath} + + $ModuleMap = @" + version: 0 + use-external-names: false + case-sensitive: false + roots: + - name: "${Win10SdkRoot}/Include/${env:WORKAROUND_WINDOWS_SDK_VERSION}/um" + type: directory + contents: + - name: module.modulemap + type: file + external-contents: "${ModuleMapDir}/winsdk.modulemap" + - name: "${Win10SdkRoot}/Include/${env:WORKAROUND_WINDOWS_SDK_VERSION}/ucrt" + type: directory + contents: + - name: module.modulemap + type: file + external-contents: "${ModuleMapDir}/ucrt.modulemap" + - name: "${VsInstallPath}/VC/Tools/MSVC/${env:WORKAROUND_WINDOWS_COMPILER_VERSION}/include" + type: directory + contents: + - name: module.modulemap + type: file + external-contents: "${ModuleMapDir}/vcruntime.modulemap" + - name: vcruntime.apinotes + type: file + external-contents: "${ModuleMapDir}/vcruntime.apinotes" + "@ + $VfsOverlayDir = Split-Path -parent $VfsOverlay + New-Item -ItemType Directory -Path $VfsOverlayDir + Write-Output $ModuleMap | Out-File -FilePath $VfsOverlay -Encoding utf8 - name: Configure Foundation Macros run: | @@ -2201,11 +2224,6 @@ jobs: with: name: Windows-${{ inputs.build_arch }}-stdlib path: ${{ github.workspace }}/BinaryCache/Library - - uses: actions/download-artifact@v4 - if: matrix.os == 'Windows' - with: - name: Windows-${{ matrix.arch }}-vfs-overlay - path: ${{ github.workspace }}/BinaryCache/swift/stdlib - uses: actions/download-artifact@v4 if: matrix.os != 'Android' || inputs.build_android with: @@ -2320,12 +2338,51 @@ jobs: with: ndk-version: ${{ inputs.ANDROID_NDK_VERSION }} - - name: Extract vfs-overlay + - name: Create vfs-overlay if: matrix.os == 'Windows' run: | $VfsOverlay = "${{ github.workspace }}/BinaryCache/swift/stdlib/windows-vfs-overlay.yaml" $ModuleMapDir = cygpath -m ${{ github.workspace }}/BinaryCache/Library/Developer/Platforms/Windows.platform/Developer/SDKs/Windows.sdk/usr/share - (Get-Content $VfsOverlay).Replace("", "${ModuleMapDir}") | Set-Content $VfsOverlay + $Win10SdkRoot = Get-ItemPropertyValue ` + -Path "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Kits\Installed Roots" ` + -Name "KitsRoot10" + $Win10SdkRoot = cygpath -m ${Win10SdkRoot} + $InstallerLocation = Join-Path "${env:ProgramFiles(x86)}" "Microsoft Visual Studio" "Installer" + $VsWhere = Join-Path "${InstallerLocation}" "vswhere.exe" + $VsInstallPath = (& "$VsWhere" -latest -products * -format json | ConvertFrom-Json).installationPath + $VsInstallPath = cygpath -m ${VsInstallPath} + + $ModuleMap = @" + version: 0 + use-external-names: false + case-sensitive: false + roots: + - name: "${Win10SdkRoot}/Include/${env:WORKAROUND_WINDOWS_SDK_VERSION}/um" + type: directory + contents: + - name: module.modulemap + type: file + external-contents: "${ModuleMapDir}/winsdk.modulemap" + - name: "${Win10SdkRoot}/Include/${env:WORKAROUND_WINDOWS_SDK_VERSION}/ucrt" + type: directory + contents: + - name: module.modulemap + type: file + external-contents: "${ModuleMapDir}/ucrt.modulemap" + - name: "${VsInstallPath}/VC/Tools/MSVC/${env:WORKAROUND_WINDOWS_COMPILER_VERSION}/include" + type: directory + contents: + - name: module.modulemap + type: file + external-contents: "${ModuleMapDir}/vcruntime.modulemap" + - name: vcruntime.apinotes + type: file + external-contents: "${ModuleMapDir}/vcruntime.apinotes" + "@ + + $VfsOverlayDir = Split-Path -parent $VfsOverlay + New-Item -ItemType Directory -Path $VfsOverlayDir + Write-Output $ModuleMap | Out-File -FilePath $VfsOverlay -Encoding utf8 - name: Configure libdispatch if: matrix.os != 'Android' || inputs.build_android From 6ad9abfdf2480c7dd3ab10931c69f656087579b7 Mon Sep 17 00:00:00 2001 From: Fabrice de Gans Date: Thu, 3 Apr 2025 19:25:37 +0200 Subject: [PATCH 3/3] Use uppercase parameter --- .github/workflows/swift-toolchain.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/swift-toolchain.yml b/.github/workflows/swift-toolchain.yml index 903f6deba..95abab177 100644 --- a/.github/workflows/swift-toolchain.yml +++ b/.github/workflows/swift-toolchain.yml @@ -2016,7 +2016,7 @@ jobs: type: file external-contents: "${ModuleMapDir}/vcruntime.apinotes" "@ - $VfsOverlayDir = Split-Path -parent $VfsOverlay + $VfsOverlayDir = Split-Path -Parent $VfsOverlay New-Item -ItemType Directory -Path $VfsOverlayDir Write-Output $ModuleMap | Out-File -FilePath $VfsOverlay -Encoding utf8 @@ -2380,7 +2380,7 @@ jobs: external-contents: "${ModuleMapDir}/vcruntime.apinotes" "@ - $VfsOverlayDir = Split-Path -parent $VfsOverlay + $VfsOverlayDir = Split-Path -Parent $VfsOverlay New-Item -ItemType Directory -Path $VfsOverlayDir Write-Output $ModuleMap | Out-File -FilePath $VfsOverlay -Encoding utf8