Update swift-build-script.yml #508
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Snapshot | ||
on: | ||
workflow_dispatch: | ||
inputs: | ||
swift_version: | ||
description: 'Swift Version' | ||
default: '0.0.0' | ||
required: false | ||
type: string | ||
swift_tag: | ||
description: 'Swift Build Tag' | ||
required: false | ||
type: string | ||
context: | ||
runs-on: ubuntu-latest | ||
outputs: | ||
curl_revision: ${{ steps.context.outputs.curl_revision }} | ||
indexstore_db_revision: ${{ steps.context.outputs.indexstore_db_revision }} | ||
libxml2_revision: ${{ steps.context.outputs.libxml2_revision }} | ||
llvm_project_revision: ${{ steps.context.outputs.llvm_project_revision }} | ||
mimalloc_revision: ${{ steps.context.outputs.mimalloc_revision }} | ||
sourcekit_lsp_revision: ${{ steps.context.outputs.sourcekit_lsp_revision }} | ||
swift_argument_parser_revision: ${{ steps.context.outputs.swift_argument_parser_revision }} | ||
swift_asn1_revision: ${{ steps.context.outputs.swift_asn1_revision }} | ||
swift_atomics_revision: ${{ steps.context.outputs.swift_atomics_revision }} | ||
swift_build_revision: ${{ steps.context.outputs.swift_build_revision }} | ||
swift_certificates_revision: ${{ steps.context.outputs.swift_certificates_revision }} | ||
swift_cmark_revision: ${{ steps.context.outputs.swift_cmark_revision }} | ||
swift_collections_revision: ${{ steps.context.outputs.swift_collections_revision }} | ||
swift_corelibs_foundation_revision: ${{ steps.context.outputs.swift_corelibs_foundation_revision }} | ||
swift_corelibs_libdispatch_revision: ${{ steps.context.outputs.swift_corelibs_libdispatch_revision }} | ||
swift_corelibs_xctest_revision: ${{ steps.context.outputs.swift_corelibs_xctest_revision }} | ||
swift_crypto_revision: ${{ steps.context.outputs.swift_crypto_revision }} | ||
swift_driver_revision: ${{ steps.context.outputs.swift_driver_revision }} | ||
swift_experimental_string_processing_revision: ${{ steps.context.outputs.swift_experimental_string_processing_revision }} | ||
swift_format_revision: ${{ steps.context.outputs.swift_format_revision }} | ||
swift_foundation_revision: ${{ steps.context.outputs.swift_foundation_revision }} | ||
swift_foundation_icu_revision: ${{ steps.context.outputs.swift_foundation_icu_revision }} | ||
swift_installer_scripts_revision: ${{ steps.context.outputs.swift_installer_scripts_revision }} | ||
swift_llbuild_revision: ${{ steps.context.outputs.swift_llbuild_revision }} | ||
swift_lmdb_revision: ${{ steps.context.outputs.swift_lmdb_revision }} | ||
swift_markdown_revision: ${{ steps.context.outputs.swift_markdown_revision }} | ||
swift_package_manager_revision: ${{ steps.context.outputs.swift_package_manager_revision }} | ||
swift_revision: ${{ steps.context.outputs.swift_revision }} | ||
swift_syntax_revision: ${{ steps.context.outputs.swift_syntax_revision }} | ||
swift_system_revision: ${{ steps.context.outputs.swift_system_revision }} | ||
swift_testing_revision: ${{ steps.context.outputs.swift_testing_revision }} | ||
swift_toolchain_sqlite_revision: ${{ steps.context.outputs.swift_toolchain_sqlite_revision }} | ||
swift_tools_support_core_revision: ${{ steps.context.outputs.swift_tools_support_core_revision }} | ||
zlib_revision: ${{ steps.context.outputs.zlib_revision }} | ||
steps: | ||
- id: context | ||
name: Generate Build Context | ||
run: | | ||
echo "::group::Installing libxml2-utils" | ||
sudo DEBIAN_FRONTEND=noninteractive apt-get -qq update -yq | ||
sudo DEBIAN_FRONTEND=noninteractive apt-get -qq -o Dpkg::Use-Pty=0 install -yq repo libxml2-utils | ||
echo "::endgroup::" | ||
branch_version_string=${{ inputs.swift_version || '0.0.0' }} | ||
if [[ $branch_version_string == *.* ]]; then | ||
branch_name=$(echo ${branch_version_string} | awk -F. '{ ver=$1"."$2; print (ver == "0.0") ? "main" : "release/"ver }') | ||
else | ||
branch_name="release/$branch_version_string" | ||
fi | ||
echo "Manifest branch: $branch_name" | ||
echo "::group::Fetching repos" | ||
repo init --quiet --groups default --depth 1 -u https://github.com/compnerd/swift-build -b $branch_name | ||
repo sync --quiet --no-clone-bundle --no-tags --jobs $(nproc --all) | ||
echo "::endgroup::" | ||
if [[ "${{ inputs.swift_tag }}" != "" ]] ; then | ||
tee -a "${GITHUB_OUTPUT}" <<-EOF | ||
indexstore_db_revision=refs/tags/${{ inputs.swift_tag }} | ||
llvm_project_revision=refs/tags/${{ inputs.swift_tag }} | ||
mimalloc_revision=refs/tags/v3.0.1 | ||
sourcekit_lsp_revision=refs/tags/${{ inputs.swift_tag }} | ||
swift_revision=refs/tags/${{ inputs.swift_tag }} | ||
swift_argument_parser_revision=refs/tags/1.4.0 | ||
swift_asn1_revision=refs/tags/1.0.0 | ||
swift_atomics_revision=refs/tags/1.2.0 | ||
swift_build_revision=refs/heads/main | ||
swift_certificates_revision=refs/tags/1.0.1 | ||
swift_cmark_revision=refs/tags/${{ inputs.swift_tag }} | ||
swift_collections_revision=refs/tags/1.1.3 | ||
swift_corelibs_foundation_revision=refs/tags/${{ inputs.swift_tag }} | ||
swift_corelibs_libdispatch_revision=refs/tags/${{ inputs.swift_tag }} | ||
swift_corelibs_xctest_revision=refs/tags/${{ inputs.swift_tag }} | ||
swift_crypto_revision=refs/tags/3.0.0 | ||
swift_driver_revision=refs/tags/${{ inputs.swift_tag }} | ||
swift_experimental_string_processing_revision=refs/tags/${{ inputs.swift_tag }} | ||
swift_format_revision=refs/heads/main | ||
swift_foundation_revison=refs/heads/main | ||
swift_foundation_icu_revision=refs/heads/main | ||
swift_installer_scripts_revision=refs/heads/main | ||
swift_llbuild_revision=refs/tags/${{ inputs.swift_tag }} | ||
swift_lmdb_revision=refs/heads/main | ||
swift_markdown_revision=refs/tags/${{ inputs.swift_tag }} | ||
swift_package_manager_revision=refs/tags/${{ inputs.swift_tag }} | ||
swift_syntax_revision=refs/tags/${{ inputs.swift_tag }} | ||
swift_system_revision=refs/tags/1.3.0 | ||
swift_testing_revision=refs/heads/main | ||
swift_toolchain_sqlite_revision=refs/tags/1.0.1 | ||
swift_tools_support_core_revision=refs/tags/${{ inputs.swift_tag }} | ||
curl_revision=refs/tags/curl-8_9_1 | ||
libxml2_revision=refs/tags/v2.11.5 | ||
zlib_revision=refs/tags/v1.3.1 | ||
EOF | ||
else | ||
repo manifest -r --suppress-upstream-revision --suppress-dest-branch | \ | ||
xmllint --xpath "//project/@name | //project/@revision" - | \ | ||
xargs -n2 | \ | ||
awk -F'[= ]' '{ | ||
split($2, repo, "/"); | ||
gsub(/-/, "_", repo[2]); | ||
print tolower(repo[2]) "_revision=" $4 | ||
}' | tee -a "${GITHUB_OUTPUT}" | ||
fi | ||
build: | ||
runs-on: windows-latest | ||
needs: [context, debug] | ||
steps: | ||
- name: Checkout curl | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: curl/curl | ||
ref: ${{ needs.context.outputs.curl_revision }} | ||
path: ${{ github.workspace }}/SourceCache/curl | ||
fetch-depth: 1 | ||
show-progress: false | ||
- name: Checkout indexstore-db | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: swiftlang/indexstore-db | ||
ref: ${{ needs.context.outputs.indexstore_db_revision }} | ||
path: ${{ github.workspace }}/SourceCache/indexstore-db | ||
fetch-depth: 1 | ||
show-progress: false | ||
- name: Checkout libxml2 | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: gnome/libxml2 | ||
ref: ${{ needs.context.outputs.libxml2_revision }} | ||
path: ${{ github.workspace }}/SourceCache/libxml2 | ||
fetch-depth: 1 | ||
show-progress: false | ||
- name: Checkout llvm-project | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: swiftlang/llvm-project | ||
ref: ${{ needs.context.outputs.llvm_project_revision }} | ||
path: ${{ github.workspace }}/SourceCache/llvm-project | ||
fetch-depth: 1 | ||
show-progress: false | ||
- name: Checkout mimalloc | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: microsoft/mimalloc | ||
ref: ${{ needs.context.outputs.mimalloc_revision }} | ||
path: ${{ github.workspace }}/SourceCache/mimalloc | ||
fetch-depth: 1 | ||
show-progress: false | ||
- name: Checkout sourcekit-lsp | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: swiftlang/sourcekit-lsp | ||
ref: ${{ needs.context.outputs.sourcekit_lsp_revision }} | ||
path: ${{ github.workspace }}/SourceCache/sourcekit-lsp | ||
fetch-depth: 1 | ||
show-progress: false | ||
- name: Checkout swift-argument-parser | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: apple/swift-argument-parser | ||
ref: ${{ needs.context.outputs.swift_argument_parser_revision }} | ||
path: ${{ github.workspace }}/SourceCache/swift-argument-parser | ||
fetch-depth: 1 | ||
show-progress: false | ||
- name: Checkout swift-asn1 | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: apple/swift-asn1 | ||
ref: ${{ needs.context.outputs.swift_asn1_revision }} | ||
path: ${{ github.workspace }}/SourceCache/swift-asn1 | ||
fetch-depth: 1 | ||
show-progress: false | ||
- name: Checkout swift-certificates | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: apple/swift-certificates | ||
ref: ${{ needs.context.outputs.swift_certificates_revision }} | ||
path: ${{ github.workspace }}/SourceCache/swift-certificates | ||
fetch-depth: 1 | ||
show-progress: false | ||
- name: Checkout swift-cmark | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: swiftlang/swift-cmark | ||
ref: ${{ needs.context.outputs.swift_cmark_revision }} | ||
path: ${{ github.workspace }}/SourceCache/cmark | ||
fetch-depth: 1 | ||
show-progress: false | ||
- name: Checkout swift-collections | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: apple/swift-collections | ||
ref: ${{ needs.context.outputs.swift_collections_revision }} | ||
path: ${{ github.workspace }}/SourceCache/swift-collections | ||
fetch-depth: 1 | ||
show-progress: false | ||
- name: Checkout swift-corelibs-foundation | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: apple/swift-corelibs-foundation | ||
ref: ${{ needs.context.outputs.swift_corelibs_foundation_revision }} | ||
path: ${{ github.workspace }}/SourceCache/swift-corelibs-foundation | ||
fetch-depth: 1 | ||
show-progress: false | ||
- name: Checkout swift-corelibs-libdispatch | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: apple/swift-corelibs-libdispatch | ||
ref: ${{ needs.context.outputs.swift_corelibs_libdispatch_revision }} | ||
path: ${{ github.workspace }}/SourceCache/swift-corelibs-libdispatch | ||
fetch-depth: 1 | ||
show-progress: false | ||
- name: Checkout swift-corelibs-xctest | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: apple/swift-corelibs-xctest | ||
ref: ${{ needs.context.outputs.swift_corelibs_xctest_revision }} | ||
path: ${{ github.workspace }}/SourceCache/swift-corelibs-xctest | ||
fetch-depth: 1 | ||
show-progress: false | ||
- name: Checkout swift-crypto | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: apple/swift-crypto | ||
ref: ${{ needs.context.outputs.swift_crypto_revision }} | ||
path: ${{ github.workspace }}/SourceCache/swift-crypto | ||
fetch-depth: 1 | ||
show-progress: false | ||
- name: Checkout swift-driver | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: apple/swift-driver | ||
ref: ${{ needs.context.outputs.swift_driver_revision }} | ||
path: ${{ github.workspace }}/SourceCache/swift-driver | ||
fetch-depth: 1 | ||
show-progress: false | ||
- name: Checkout swift-experimental-string-processing | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: swiftlang/swift-experimental-string-processing | ||
ref: ${{ needs.context.outputs.swift_experimental_string_processing_revision }} | ||
path: ${{ github.workspace }}/SourceCache/swift-experimental-string-processing | ||
fetch-depth: 1 | ||
show-progress: false | ||
- name: Checkout swift-format | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: swiftlang/swift-format | ||
ref: ${{ needs.context.outputs.swift_format_revision }} | ||
path: ${{ github.workspace }}/SourceCache/swift-format | ||
fetch-depth: 1 | ||
show-progress: false | ||
- name: Checkout swift-foundation | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: apple/swift-foundation | ||
ref: ${{ needs.context.outputs.swift_foundation_revision }} | ||
path: ${{ github.workspace }}/SourceCache/swift-foundation | ||
fetch-depth: 1 | ||
show-progress: false | ||
- name: Checkout swift-foundation-icu | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: apple/swift-foundation-icu | ||
ref: ${{ needs.context.outputs.swift_foundation_icu_revision }} | ||
path: ${{ github.workspace }}/SourceCache/swift-foundation-icu | ||
fetch-depth: 1 | ||
show-progress: false | ||
- name: Checkout swift-installer-scripts | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: swiftlang/swift-installer-scripts | ||
ref: ${{ needs.context.outputs.swift_installer_scripts_revision }} | ||
path: ${{ github.workspace }}/SourceCache/swift-installer-scripts | ||
fetch-depth: 1 | ||
show-progress: false | ||
- name: Checkout swift-llbuild | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: swiftlang/swift-llbuild | ||
ref: ${{ needs.context.outputs.swift_llbuild_revision }} | ||
path: ${{ github.workspace }}/SourceCache/llbuild | ||
fetch-depth: 1 | ||
show-progress: false | ||
- name: Checkout swift-lmdb | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: swiftlang/swift-lmdb | ||
ref: ${{ needs.context.outputs.swift_lmdb_revision }} | ||
path: ${{ github.workspace }}/SourceCache/swift-lmdb | ||
fetch-depth: 1 | ||
show-progress: false | ||
- name: Checkout swift-markdown | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: swiftlang/swift-markdown | ||
ref: ${{ needs.context.outputs.swift_markdown_revision }} | ||
path: ${{ github.workspace }}/SourceCache/swift-markdown | ||
fetch-depth: 1 | ||
show-progress: false | ||
- name: Checkout swift-package-manager | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: swiftlang/swift-package-manager | ||
ref: ${{ needs.context.outputs.swift_package_manager_revision }} | ||
path: ${{ github.workspace }}/SourceCache/swift-package-manager | ||
fetch-depth: 1 | ||
show-progress: false | ||
- name: Checkout swift | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: swiftlang/swift | ||
ref: ${{ needs.context.outputs.swift_revision }} | ||
path: ${{ github.workspace }}/SourceCache/swift | ||
fetch-depth: 1 | ||
show-progress: false | ||
- name: Checkout swift-syntax | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: swiftlang/swift-syntax | ||
ref: ${{ needs.context.outputs.swift_syntax_revision }} | ||
path: ${{ github.workspace }}/SourceCache/swift-syntax | ||
fetch-depth: 1 | ||
show-progress: false | ||
- name: Checkout swift-system | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: apple/swift-system | ||
ref: ${{ needs.context.outputs.swift_system_revision }} | ||
path: ${{ github.workspace }}/SourceCache/swift-system | ||
fetch-depth: 1 | ||
show-progress: false | ||
- name: Checkout swift-testing | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: swiftlang/swift-testing | ||
ref: ${{ needs.context.outputs.swift_testing_revision }} | ||
path: ${{ github.workspace }}/SourceCache/swift-testing | ||
fetch-depth: 1 | ||
show-progress: false | ||
- name: Checkout swift-toolchain-sqlite | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: swiftlang/swift-toolchain-sqlite | ||
ref: ${{ needs.context.outputs.swift_toolchain_sqlite_revision }} | ||
path: ${{ github.workspace }}/SourceCache/swift-toolchain-sqlite | ||
fetch-depth: 1 | ||
show-progress: false | ||
- name: Checkout swift-tools-support-core | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: swiftlang/swift-tools-support-core | ||
ref: ${{ needs.context.outputs.swift_tools_support_core_revision }} | ||
path: ${{ github.workspace }}/SourceCache/swift-tools-support-core | ||
fetch-depth: 1 | ||
show-progress: false | ||
- name: Checkout zlib | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: madler/zlib | ||
ref: ${{ needs.context.outputs.zlib_revision }} | ||
path: ${{ github.workspace }}/SourceCache/zlib | ||
fetch-depth: 1 | ||
show-progress: false | ||
- name: Compute workspace hash | ||
id: workspace_hash | ||
shell: pwsh | ||
run: | | ||
$stringAsStream = [System.IO.MemoryStream]::new() | ||
$writer = [System.IO.StreamWriter]::new($stringAsStream) | ||
$writer.write("${{ github.workspace }}") | ||
$writer.Flush() | ||
$stringAsStream.Position = 0 | ||
$hash = (Get-FileHash -Algorithm SHA256 -InputStream $stringAsStream).Hash | ||
echo "hash=$hash" >> $env:GITHUB_OUTPUT | ||
- name: Setup sccache | ||
uses: hendrikmuhs/ccache-action@2e0e89e8d74340a03f75d58d02aae4c5ee1b15c6 | ||
with: | ||
max-size: 1024M | ||
key: ${{ steps.workspace_hash.outputs.hash }}-build-script | ||
variant: sccache | ||
- uses: lukka/get-cmake@latest | ||
with: | ||
cmakeVersion: "3.29.2" | ||
ninjaVersion: "1.12.1" | ||
- name: Prepare build root | ||
run: | | ||
subst S: ${{ github.workspace }} | ||
- run: | | ||
powershell.exe -ExecutionPolicy RemoteSigned -File ${{ github.workspace }}\swift\utils\build.ps1 -SourceCache ${{ github.workspace }} -WindowsSDKs x64 -EnableCaching |