Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
131 changes: 103 additions & 28 deletions .github/workflows/swift-toolchain.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1186,7 +1186,7 @@ jobs:
${{ matrix.cmake_linker_flags }} `
-D CMAKE_STATIC_LIBRARY_PREFIX_Swift= `
-D CMAKE_FIND_PACKAGE_PREFER_CONFIG=YES `
-D CMAKE_INSTALL_PREFIX=${{ github.workspace }}/BuildRoot/Library/Developer/Toolchains/${{ inputs.swift_version }}+Asserts/usr `
-D CMAKE_INSTALL_PREFIX=${{ github.workspace }}/BuildRoot/Library/Developer/Toolchains/${{ inputs.swift_version }}+${{ matrix.variant }}/usr `
-D CMAKE_SYSTEM_NAME=${{ matrix.os }} `
${{ steps.setup-context.outputs.extra_flags }} `
-G Ninja `
Expand Down Expand Up @@ -1244,9 +1244,9 @@ jobs:
- name: Copy cmark-gfm shared libraries
run: |
if ("${{ matrix.os }}" -eq "Windows") {
Copy-Item -Path "${{ github.workspace }}/BinaryCache/Library/cmark-gfm-${{ inputs.swift_cmark_version }}/usr/bin/*.dll" -Destination "${{ github.workspace }}/BuildRoot/Library/Developer/Toolchains/${{ inputs.swift_version }}+Asserts/usr/bin"
Copy-Item -Path "${{ github.workspace }}/BinaryCache/Library/cmark-gfm-${{ inputs.swift_cmark_version }}/usr/bin/*.dll" -Destination "${{ github.workspace }}/BuildRoot/Library/Developer/Toolchains/${{ inputs.swift_version }}+${{ matrix.variant }}/usr/bin"
} else {
Copy-Item -Path "${{ github.workspace }}/BinaryCache/Library/cmark-gfm-${{ inputs.swift_cmark_version }}/usr/lib/*.dylib" -Destination "${{ github.workspace }}/BuildRoot/Library/Developer/Toolchains/${{ inputs.swift_version }}+Asserts/usr/lib/swift/host/compiler"
Copy-Item -Path "${{ github.workspace }}/BinaryCache/Library/cmark-gfm-${{ inputs.swift_cmark_version }}/usr/lib/*.dylib" -Destination "${{ github.workspace }}/BuildRoot/Library/Developer/Toolchains/${{ inputs.swift_version }}+${{ matrix.variant }}/usr/lib/swift/host/compiler"
}

- uses: actions/setup-python@v5
Expand All @@ -1258,7 +1258,7 @@ jobs:
from datetime import datetime

now = datetime.now()
info_plist = r'${{ github.workspace }}/BuildRoot/Library/Developer/Toolchains/${{ inputs.swift_version }}+Asserts/ToolchainInfo.plist'
info_plist = r'${{ github.workspace }}/BuildRoot/Library/Developer/Toolchains/${{ inputs.swift_version }}+${{ matrix.variant }}/ToolchainInfo.plist'
with open(os.path.normpath(info_plist), 'wb') as plist:
plistlib.dump({ 'Identifier': 'org.compnerd.dt.toolchain.{0}.{1}-asserts'.format(now.strftime('%Y%m%d'), now.timetuple().tm_hour % 6) }, plist)

Expand All @@ -1271,7 +1271,7 @@ jobs:
- name: Extract swift-syntax
run: |
New-Item -Path ${{ github.workspace }}/BinaryCache/swift-syntax/lib/swift/host -ItemType Directory | Out-Null
$ToolchainRoot = "${{ github.workspace }}/BuildRoot/Library/Developer/Toolchains/${{ inputs.swift_version }}+Asserts"
$ToolchainRoot = "${{ github.workspace }}/BuildRoot/Library/Developer/Toolchains/${{ inputs.swift_version }}+${{ matrix.variant }}"
if ("${{ matrix.os }}" -eq "Windows") {
$bindir = cygpath -m "${{ github.workspace }}/BinaryCache/1"
Copy-Item -Path "${ToolchainRoot}/usr/lib/*.lib" -Destination "${{ github.workspace }}/BinaryCache/swift-syntax/lib"
Expand Down Expand Up @@ -3714,12 +3714,18 @@ jobs:
name: Windows-${{ matrix.arch }}-debugging_tools
path: ${{ github.workspace }}/BuildRoot/Library

- name: Download Compilers
- name: Download Compilers (Asserts)
uses: thebrowsercompany/gha-download-tar-artifact@59992d91335d4ecba543c8535f7d07238e42125d # main
with:
name: Windows-${{ matrix.arch }}-Asserts-compilers
path: ${{ github.workspace }}/BuildRoot/Library

- name: Download Compilers (NoAsserts)
uses: thebrowsercompany/gha-download-tar-artifact@59992d91335d4ecba543c8535f7d07238e42125d # main
with:
name: Windows-${{ matrix.arch }}-NoAsserts-compilers
path: ${{ github.workspace }}/BuildRoot/Library

- name: Download Developer Tools
uses: actions/download-artifact@v4
with:
Expand Down Expand Up @@ -3828,11 +3834,12 @@ jobs:
$BuildSuffix = if ("${{ inputs.build_arch }}" -eq "arm64") { "-arm64" } else { "" }
# Reference: https://github.com/microsoft/mimalloc/tree/dev/bin#minject
msbuild ${{ github.workspace }}\SourceCache\mimalloc\ide\vs2022\mimalloc.sln -p:Configuration=Release -p:Platform=$HostMSArch
$ToolchainBin = "${{ github.workspace }}\BuildRoot\Library\Developer\Toolchains\${{ inputs.swift_version }}+Asserts\usr\bin"
$AssertToolchainBin = "${{ github.workspace }}\BuildRoot\Library\Developer\Toolchains\${{ inputs.swift_version }}+Asserts\usr\bin"
$NoAssertToolchainBin = "${{ github.workspace }}\BuildRoot\Library\Developer\Toolchains\${{ inputs.swift_version }}+NoAsserts\usr\bin"
Copy-Item -Path "${{ github.workspace }}\SourceCache\mimalloc\out\msvc-$HostMSArch\Release\mimalloc.dll" `
-Destination "$ToolchainBin"
-Destination "$AssertToolchainBin"
Copy-Item -Path "${{ github.workspace }}\SourceCache\mimalloc\out\msvc-$HostMSArch\Release\mimalloc-redirect$HostSuffix.dll" `
-Destination "$ToolchainBin"
-Destination "$AssertToolchainBin"
$MimallocExecutables = @("swift.exe",
"swiftc.exe",
"swift-driver.exe",
Expand All @@ -3844,14 +3851,19 @@ jobs:
"lld-link.exe",
"ld.lld.exe",
"ld64.lld.exe")
foreach ($Exe in $MimallocExecutables) {
$AssertBinaries = $MimallocExecutables | ForEach-Object {[IO.Path]::Combine($AssertToolchainBin, $_)}
$NoAssertBinaries = $MimallocExecutables `
| ForEach-Object {[IO.Path]::Combine($NoAssertToolchainBin, $_)} `
| Where-Object { Test-Path $_ -PathType Leaf }
$Binaries = $AssertBinaries + $NoAssertBinaries
foreach ($Exe in $Binaries) {
# Binary-patch in place
& "${{ github.workspace }}\SourceCache\mimalloc\bin\minject$BuildSuffix" -f -i -v "$ToolchainBin\$Exe"
& "${{ github.workspace }}\SourceCache\mimalloc\bin\minject$BuildSuffix" -f -i -v "$Exe"
# Log the import table
& "${{ github.workspace }}\SourceCache\mimalloc\bin\minject$BuildSuffix" -l "$ToolchainBin\$Exe"
& "${{ github.workspace }}\SourceCache\mimalloc\bin\minject$BuildSuffix" -l "$Exe"
}

- name: Package Build Tools
- name: Package Build Tools (Asserts)
run: |
# When cross-compiling, bundle the second mimalloc redirect dll as a workaround for
msbuild -nologo -restore -maxCpuCount `
Expand All @@ -3864,9 +3876,63 @@ jobs:
-p:WORKAROUND_MIMALLOC_ISSUE_997=false `
-p:ProductVersion=${{ inputs.swift_version }} `
-p:ProductArchitecture=${{ matrix.arch }} `
${{ github.workspace }}/SourceCache/swift-installer-scripts/platforms/Windows/bld/bld.wixproj
${{ github.workspace }}/SourceCache/swift-installer-scripts/platforms/Windows/bld/asserts/bld.asserts.wixproj

- name: Package Build Tools (NoAsserts)
run: |
# When cross-compiling, bundle the second mimalloc redirect dll as a workaround for
msbuild -nologo -restore -maxCpuCount `
-p:BaseOutputPath=${{ github.workspace }}\BinaryCache\installer\ `
-p:Configuration=Release `
-p:SignOutput=${{ inputs.signed }} `
-p:CERTIFICATE=${env:CERTIFICATE} `
-p:PASSPHRASE=${{ secrets.PASSPHRASE }} `
-p:ImageRoot=${{ github.workspace }}/BuildRoot/Library/Developer `
-p:WORKAROUND_MIMALLOC_ISSUE_997=false `
-p:ProductVersion=${{ inputs.swift_version }} `
-p:ProductArchitecture=${{ matrix.arch }} `
${{ github.workspace }}/SourceCache/swift-installer-scripts/platforms/Windows/bld/noasserts/bld.noasserts.wixproj

- name: Package CLI Tools (Asserts)
run: |
msbuild -nologo -restore -maxCpuCount `
-p:BaseOutputPath=${{ github.workspace }}\BinaryCache\installer\ `
-p:Configuration=Release `
-p:SignOutput=${{ inputs.signed }} `
-p:CERTIFICATE=${env:CERTIFICATE} `
-p:PASSPHRASE=${{ secrets.PASSPHRASE }} `
-p:ImageRoot=${{ github.workspace }}/BuildRoot/Library/Developer `
-p:ProductVersion=${{ inputs.swift_version }} `
-p:ProductArchitecture=${{ matrix.arch }} `
${{ github.workspace }}/SourceCache/swift-installer-scripts/platforms/Windows/cli/asserts/cli.asserts.wixproj

- name: Package CLI Tools (NoAsserts)
run: |
msbuild -nologo -restore -maxCpuCount `
-p:BaseOutputPath=${{ github.workspace }}\BinaryCache\installer\ `
-p:Configuration=Release `
-p:SignOutput=${{ inputs.signed }} `
-p:CERTIFICATE=${env:CERTIFICATE} `
-p:PASSPHRASE=${{ secrets.PASSPHRASE }} `
-p:ImageRoot=${{ github.workspace }}/BuildRoot/Library/Developer `
-p:ProductVersion=${{ inputs.swift_version }} `
-p:ProductArchitecture=${{ matrix.arch }} `
${{ github.workspace }}/SourceCache/swift-installer-scripts/platforms/Windows/cli/noasserts/cli.noasserts.wixproj

- name: Package Debugging Tools (Asserts)
run: |
msbuild -nologo -restore -maxCpuCount `
-p:BaseOutputPath=${{ github.workspace }}\BinaryCache\installer\ `
-p:Configuration=Release `
-p:SignOutput=${{ inputs.signed }} `
-p:CERTIFICATE=${env:CERTIFICATE} `
-p:PASSPHRASE=${{ secrets.PASSPHRASE }} `
-p:ImageRoot=${{ github.workspace }}/BuildRoot/Library/Developer `
-p:ProductVersion=${{ inputs.swift_version }} `
-p:ProductArchitecture=${{ matrix.arch }} `
${{ github.workspace }}/SourceCache/swift-installer-scripts/platforms/Windows/dbg/asserts/dbg.asserts.wixproj

- name: Package CLI Tools
- name: Package Debugging Tools (NoAsserts)
run: |
msbuild -nologo -restore -maxCpuCount `
-p:BaseOutputPath=${{ github.workspace }}\BinaryCache\installer\ `
Expand All @@ -3877,9 +3943,9 @@ jobs:
-p:ImageRoot=${{ github.workspace }}/BuildRoot/Library/Developer `
-p:ProductVersion=${{ inputs.swift_version }} `
-p:ProductArchitecture=${{ matrix.arch }} `
${{ github.workspace }}/SourceCache/swift-installer-scripts/platforms/Windows/cli/cli.wixproj
${{ github.workspace }}/SourceCache/swift-installer-scripts/platforms/Windows/dbg/noasserts/dbg.noasserts.wixproj

- name: Package Debugging Tools
- name: Package IDE Tools (Asserts)
run: |
msbuild -nologo -restore -maxCpuCount `
-p:BaseOutputPath=${{ github.workspace }}\BinaryCache\installer\ `
Expand All @@ -3890,9 +3956,9 @@ jobs:
-p:ImageRoot=${{ github.workspace }}/BuildRoot/Library/Developer `
-p:ProductVersion=${{ inputs.swift_version }} `
-p:ProductArchitecture=${{ matrix.arch }} `
${{ github.workspace }}/SourceCache/swift-installer-scripts/platforms/Windows/dbg/dbg.wixproj
${{ github.workspace }}/SourceCache/swift-installer-scripts/platforms/Windows/ide/asserts/ide.asserts.wixproj

- name: Package IDE Tools
- name: Package IDE Tools (NoAsserts)
run: |
msbuild -nologo -restore -maxCpuCount `
-p:BaseOutputPath=${{ github.workspace }}\BinaryCache\installer\ `
Expand All @@ -3903,7 +3969,7 @@ jobs:
-p:ImageRoot=${{ github.workspace }}/BuildRoot/Library/Developer `
-p:ProductVersion=${{ inputs.swift_version }} `
-p:ProductArchitecture=${{ matrix.arch }} `
${{ github.workspace }}/SourceCache/swift-installer-scripts/platforms/Windows/ide/ide.wixproj
${{ github.workspace }}/SourceCache/swift-installer-scripts/platforms/Windows/ide/noasserts/ide.noasserts.wixproj

- name: Package Runtime
run: |
Expand All @@ -3926,26 +3992,34 @@ jobs:
with:
name: Windows-${{ matrix.arch }}-bld-msi
path: |
${{ github.workspace }}/BinaryCache/installer/Release/${{ matrix.arch }}/bld.msi
${{ github.workspace }}/BinaryCache/installer/Release/${{ matrix.arch }}/bld.cab
${{ github.workspace }}/BinaryCache/installer/Release/${{ matrix.arch }}/bld.asserts.msi
${{ github.workspace }}/BinaryCache/installer/Release/${{ matrix.arch }}/bld.asserts.cab
${{ github.workspace }}/BinaryCache/installer/Release/${{ matrix.arch }}/bld.noasserts.msi
${{ github.workspace }}/BinaryCache/installer/Release/${{ matrix.arch }}/bld.noasserts.cab
- uses: actions/upload-artifact@v4
with:
name: Windows-${{ matrix.arch }}-cli-msi
path: |
${{ github.workspace }}/BinaryCache/installer/Release/${{ matrix.arch }}/cli.msi
${{ github.workspace }}/BinaryCache/installer/Release/${{ matrix.arch }}/cli.cab
${{ github.workspace }}/BinaryCache/installer/Release/${{ matrix.arch }}/cli.asserts.msi
${{ github.workspace }}/BinaryCache/installer/Release/${{ matrix.arch }}/cli.asserts.cab
${{ github.workspace }}/BinaryCache/installer/Release/${{ matrix.arch }}/cli.noasserts.msi
${{ github.workspace }}/BinaryCache/installer/Release/${{ matrix.arch }}/cli.noasserts.cab
- uses: actions/upload-artifact@v4
with:
name: Windows-${{ matrix.arch }}-dbg-msi
path: |
${{ github.workspace }}/BinaryCache/installer/Release/${{ matrix.arch }}/dbg.msi
${{ github.workspace }}/BinaryCache/installer/Release/${{ matrix.arch }}/dbg.cab
${{ github.workspace }}/BinaryCache/installer/Release/${{ matrix.arch }}/dbg.asserts.msi
${{ github.workspace }}/BinaryCache/installer/Release/${{ matrix.arch }}/dbg.asserts.cab
${{ github.workspace }}/BinaryCache/installer/Release/${{ matrix.arch }}/dbg.noasserts.msi
${{ github.workspace }}/BinaryCache/installer/Release/${{ matrix.arch }}/dbg.noasserts.cab
- uses: actions/upload-artifact@v4
with:
name: Windows-${{ matrix.arch }}-ide-msi
path: |
${{ github.workspace }}/BinaryCache/installer/Release/${{ matrix.arch }}/ide.msi
${{ github.workspace }}/BinaryCache/installer/Release/${{ matrix.arch }}/ide.cab
${{ github.workspace }}/BinaryCache/installer/Release/${{ matrix.arch }}/ide.asserts.msi
${{ github.workspace }}/BinaryCache/installer/Release/${{ matrix.arch }}/ide.asserts.cab
${{ github.workspace }}/BinaryCache/installer/Release/${{ matrix.arch }}/ide.noasserts.msi
${{ github.workspace }}/BinaryCache/installer/Release/${{ matrix.arch }}/ide.noasserts.cab

- uses: actions/upload-artifact@v4
with:
Expand Down Expand Up @@ -4388,6 +4462,7 @@ jobs:
-p:WindowsArchitectures="`"aarch64;i686;x86_64`"" `
-p:ProductArchitecture=${{ matrix.arch }} `
-p:ProductVersion=${{ inputs.swift_version }}-${{ inputs.swift_tag }} `
-p:ToolchainVariants="`"asserts;noasserts`"" `
${{ github.workspace }}/SourceCache/swift-installer-scripts/platforms/Windows/bundle/installer.wixproj

- uses: actions/upload-artifact@v4
Expand Down