Fix ICU static linking for ARM64 Windows build #894
This file contains hidden or 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: CI | |
| env: | |
| LLVM_VERSION: 19 | |
| # Controls when the workflow will run | |
| on: | |
| # Triggers the workflow on push or pull request events | |
| push: | |
| # Allows you to run this workflow manually from the Actions tab | |
| workflow_dispatch: | |
| inputs: | |
| llvm_version: | |
| description: "LLVM version" | |
| default: "19" | |
| jobs: | |
| macos: | |
| name: macOS | |
| runs-on: ${{ matrix.runner }} | |
| timeout-minutes: 90 | |
| strategy: | |
| matrix: | |
| include: | |
| - runner: macos-13-large | |
| cpp_flags: "-D_LIBCXX_ENABLE_ASSERTIONS=1" | |
| cpu: haswell | |
| label: bun-webkit-macos-amd64-debug | |
| brew_prefix: /usr/local/opt | |
| package_json_arch: "x64" | |
| CMAKE_BUILD_TYPE: Debug | |
| - runner: macos-13-xlarge | |
| cpp_flags: "-D_LIBCXX_ENABLE_ASSERTIONS=1" | |
| cpu: native | |
| label: bun-webkit-macos-arm64-debug | |
| brew_prefix: /opt/homebrew/opt | |
| package_json_arch: "arm64" | |
| CMAKE_BUILD_TYPE: Debug | |
| - runner: macos-13-xlarge | |
| cpp_flags: "-D_LIBCXX_ENABLE_ASSERTIONS=1" | |
| cpu: native | |
| label: bun-webkit-macos-arm64-debug-asan | |
| brew_prefix: /opt/homebrew/opt | |
| package_json_arch: "arm64" | |
| CMAKE_BUILD_TYPE: Debug | |
| ENABLE_MALLOC_HEAP_BREAKDOWN: "OFF" | |
| ENABLE_SANITIZERS: "address,undefined" | |
| # We aren't doing LTO on macOS, for now. | |
| # - runner: macos-13-large | |
| # cpp_flags: -flto=full -fwhole-program-vtables -fforce-emit-vtables -D_LIBCXX_ENABLE_ASSERTIONS=0 | |
| # cpu: haswell | |
| # label: bun-webkit-macos-amd64-lto | |
| # brew_prefix: /usr/local/opt | |
| # package_json_arch: "x64" | |
| # CMAKE_BUILD_TYPE: Release | |
| - runner: macos-13-large | |
| cpp_flags: "" | |
| cpu: haswell | |
| label: bun-webkit-macos-amd64 | |
| brew_prefix: /usr/local/opt | |
| package_json_arch: "x64" | |
| CMAKE_BUILD_TYPE: Release | |
| # We aren't doing LTO on macOS, for now. | |
| # - runner: macos-13-xlarge | |
| # cpp_flags: -flto=full -fwhole-program-vtables -fforce-emit-vtables -D_LIBCXX_ENABLE_ASSERTIONS=0 | |
| # cpu: native | |
| # label: bun-webkit-macos-arm64-lto | |
| # brew_prefix: /opt/homebrew/opt | |
| # package_json_arch: "arm64" | |
| # CMAKE_BUILD_TYPE: Release | |
| - runner: macos-13-xlarge | |
| cpp_flags: "-D_LIBCXX_ENABLE_ASSERTIONS=0" | |
| cpu: native | |
| label: bun-webkit-macos-arm64 | |
| brew_prefix: /opt/homebrew/opt | |
| package_json_arch: "arm64" | |
| CMAKE_BUILD_TYPE: Release | |
| - runner: macos-13-xlarge | |
| cpp_flags: "-D_LIBCXX_ENABLE_ASSERTIONS=1" | |
| cpu: native | |
| label: bun-webkit-macos-arm64-asan | |
| brew_prefix: /opt/homebrew/opt | |
| package_json_arch: "arm64" | |
| CMAKE_BUILD_TYPE: Release | |
| ENABLE_SANITIZERS: "address,undefined" | |
| steps: | |
| - name: "Set LLVM version" | |
| if: github.event == 'workflow_dispatch' | |
| run: echo "LLVM_VERSION=${{inputs.llvm_version}}" >> $GITHUB_ENV | |
| - uses: actions/checkout@v4 | |
| with: | |
| sparse-checkout-cone-mode: false | |
| sparse-checkout: | | |
| /* | |
| !LayoutTests/ | |
| !JSTests/ | |
| - name: PATH | |
| env: | |
| HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1 | |
| HOMEBREW_NO_AUTO_UPDATE: 1 | |
| HOMEBREW_NO_INSTALL_CLEANUP: 1 | |
| HOMEBREW_NO_ANALYTICS_THIS_RUN: 1 | |
| run: | | |
| echo "${{matrix.brew_prefix}}/llvm@${{env.LLVM_VERSION}}/bin" >> $GITHUB_PATH | |
| brew install llvm@${{env.LLVM_VERSION}} python icu4c ninja -f --overwrite | |
| brew link llvm@${{env.LLVM_VERSION}} -f --overwrite | |
| - name: Run | |
| env: | |
| ICU_INCLUDE_DIRS: ${{matrix.brew_prefix}}/icu4c/include | |
| LDFLAGS: "${{env.LDFLAGS}} " | |
| CC: "${{matrix.brew_prefix}}/llvm@${{env.LLVM_VERSION}}/bin/clang" | |
| CXX: "${{matrix.brew_prefix}}/llvm@${{env.LLVM_VERSION}}/bin/clang++" | |
| RANLIB: "${{matrix.brew_prefix}}/llvm@${{env.LLVM_VERSION}}/bin/llvm-ranlib" | |
| AR: "${{matrix.brew_prefix}}/llvm@${{env.LLVM_VERSION}}/bin/llvm-ar" | |
| CMAKE_C_COMPILER: "${{matrix.brew_prefix}}/llvm@${{env.LLVM_VERSION}}/bin/clang" | |
| CMAKE_CXX_COMPILER: "${{matrix.brew_prefix}}/llvm@${{env.LLVM_VERSION}}/bin/clang++" | |
| CMAKE_C_FLAGS: " -fno-exceptions ${{matrix.cpp_flags}} -fvisibility=hidden -fvisibility-inlines-hidden -O3 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -faddrsig " | |
| CMAKE_CXX_FLAGS: " -fno-exceptions ${{matrix.cpp_flags}} -fvisibility=hidden -fvisibility-inlines-hidden -O3 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -faddrsig -fno-c++-static-destructors " | |
| CMAKE_OSX_DEPLOYMENT_TARGET: "13.0" | |
| CMAKE_BUILD_TYPE: ${{matrix.CMAKE_BUILD_TYPE}} | |
| PACKAGE_JSON_ARCH: ${{matrix.package_json_arch}} | |
| PACKAGE_JSON_LABEL: ${{matrix.label}} | |
| ENABLE_MALLOC_HEAP_BREAKDOWN: ${{matrix.ENABLE_MALLOC_HEAP_BREAKDOWN}} | |
| ENABLE_SANITIZERS: ${{matrix.ENABLE_SANITIZERS}} | |
| run: GITHUB_REPOSITORY=$GITHUB_REPOSITORY bash mac-release.bash | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{matrix.label}} | |
| path: ${{runner.temp}}/bun-webkit.tar.gz | |
| linux: | |
| name: Linux | |
| runs-on: ${{matrix.os}} | |
| strategy: | |
| matrix: | |
| include: | |
| - lto_flag: "" | |
| label: bun-webkit-linux-amd64-debug | |
| os: linux-x64-gh | |
| package_json_arch: "x64" | |
| CMAKE_BUILD_TYPE: "Debug" | |
| RELEASE_FLAGS: "-O3 -DNDEBUG=1" | |
| - lto_flag: "" | |
| label: bun-webkit-linux-arm64-debug | |
| os: linux-arm64-gh | |
| package_json_arch: "arm64" | |
| CMAKE_BUILD_TYPE: "Debug" | |
| RELEASE_FLAGS: "-O3 -DNDEBUG=1" | |
| - lto_flag: "" | |
| label: bun-webkit-linux-arm64-debug-asan | |
| os: linux-arm64-gh | |
| package_json_arch: "arm64" | |
| CMAKE_BUILD_TYPE: "Debug" | |
| RELEASE_FLAGS: "-O3 -DNDEBUG=1" | |
| ENABLE_SANITIZERS: "address,undefined" | |
| - lto_flag: "" | |
| label: bun-webkit-linux-amd64-debug-asan | |
| os: linux-x64-gh | |
| package_json_arch: "x64" | |
| CMAKE_BUILD_TYPE: "Debug" | |
| RELEASE_FLAGS: "-O3 -DNDEBUG=1" | |
| ENABLE_SANITIZERS: "address,undefined" | |
| - lto_flag: "-flto=full -fwhole-program-vtables -fforce-emit-vtables" | |
| label: bun-webkit-linux-arm64-lto | |
| os: linux-arm64-gh | |
| package_json_arch: "arm64" | |
| CMAKE_BUILD_TYPE: "Release" | |
| RELEASE_FLAGS: "-O3 -DNDEBUG=1" | |
| - lto_flag: "" | |
| label: bun-webkit-linux-arm64 | |
| os: linux-arm64-gh | |
| package_json_arch: "arm64" | |
| CMAKE_BUILD_TYPE: "Release" | |
| RELEASE_FLAGS: "-O3 -DNDEBUG=1" | |
| - lto_flag: "-flto=full -fwhole-program-vtables -fforce-emit-vtables" | |
| label: bun-webkit-linux-amd64-lto | |
| os: linux-x64-gh | |
| package_json_arch: "x64" | |
| CMAKE_BUILD_TYPE: "Release" | |
| RELEASE_FLAGS: "-O3 -DNDEBUG=1" | |
| - lto_flag: "" | |
| label: bun-webkit-linux-amd64 | |
| os: linux-x64-gh | |
| package_json_arch: "x64" | |
| CMAKE_BUILD_TYPE: "Release" | |
| RELEASE_FLAGS: "-O3 -DNDEBUG=1" | |
| - lto_flag: "" | |
| label: bun-webkit-linux-amd64-asan | |
| os: linux-x64-gh | |
| package_json_arch: "x64" | |
| CMAKE_BUILD_TYPE: "Release" | |
| RELEASE_FLAGS: "-O3 -DNDEBUG=1" | |
| ENABLE_SANITIZERS: "address,undefined" | |
| - lto_flag: "" | |
| label: bun-webkit-linux-arm64-asan | |
| os: linux-arm64-gh | |
| package_json_arch: "arm64" | |
| CMAKE_BUILD_TYPE: "Release" | |
| RELEASE_FLAGS: "-O3 -DNDEBUG=1" | |
| ENABLE_SANITIZERS: "address,undefined" | |
| timeout-minutes: 90 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| sparse-checkout-cone-mode: false | |
| sparse-checkout: | | |
| /* | |
| !LayoutTests/ | |
| !JSTests/ | |
| - uses: docker/setup-buildx-action@v2 | |
| id: buildx | |
| with: | |
| install: true | |
| - name: Run | |
| env: | |
| RELEASE_FLAGS: ${{matrix.RELEASE_FLAGS}} | |
| ENABLE_SANITIZERS: ${{matrix.ENABLE_SANITIZERS}} | |
| run: | | |
| rm -rf ${{runner.temp}}/bun-webkit ${{runner.temp}}/bun-webkit.tar.gz | |
| WEBKIT_RELEASE_TYPE=${{matrix.CMAKE_BUILD_TYPE}} CPU="native" cpu=native LTO_FLAG="${{matrix.lto_flag}}" temp=${{runner.temp}} ENABLE_SANITIZERS="${{matrix.ENABLE_SANITIZERS}}" bash release.sh | |
| cd ${{runner.temp}} | |
| echo "#define BUN_WEBKIT_VERSION \"${{github.sha}}\"" >> bun-webkit/include/cmakeconfig.h | |
| echo '{ "name": "${{matrix.label}}", "version": "0.0.1-${{github.sha}}", "os": ["linux"], "cpu": ["${{matrix.package_json_arch}}"], "repository": "https://github.com/${{github.repository}}" }' > bun-webkit/package.json | |
| rm -rf bun-webkit/lib/*.so | |
| rm -rf bun-webkit/lib/*.so.* | |
| tar -czf bun-webkit.tar.gz bun-webkit | |
| rm -rf bun-webkit | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{matrix.label}} | |
| path: ${{runner.temp}}/bun-webkit.tar.gz | |
| windows: | |
| strategy: | |
| matrix: | |
| include: | |
| - runner: windows | |
| build-type: Release | |
| package_json_arch: "x64" | |
| label: bun-webkit-windows-amd64 | |
| - runner: windows | |
| build-type: Debug | |
| package_json_arch: "x64" | |
| label: bun-webkit-windows-amd64-debug | |
| - runner: windows-11-arm | |
| build-type: Release | |
| package_json_arch: "arm64" | |
| label: bun-webkit-windows-arm64 | |
| - runner: windows-11-arm | |
| build-type: Debug | |
| package_json_arch: "arm64" | |
| label: bun-webkit-windows-arm64-debug | |
| runs-on: ${{ matrix.runner }} | |
| timeout-minutes: 90 | |
| steps: | |
| - name: Disable Windows Defender | |
| shell: pwsh | |
| run: | | |
| # Stop Windows Defender services | |
| Stop-Service -Name WinDefend -Force -ErrorAction SilentlyContinue | |
| Stop-Service -Name WdNisSvc -Force -ErrorAction SilentlyContinue | |
| # Disable real-time protection via registry | |
| Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows Defender\Real-Time Protection" -Name DisableRealtimeMonitoring -Value 1 -Force -ErrorAction SilentlyContinue | |
| Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows Defender" -Name DisableAntiSpyware -Value 1 -Force -ErrorAction SilentlyContinue | |
| Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows Defender" -Name DisableAntiVirus -Value 1 -Force -ErrorAction SilentlyContinue | |
| # Disable via PowerShell preferences (belt and suspenders) | |
| Set-MpPreference -DisableRealtimeMonitoring $true -Force -ErrorAction SilentlyContinue | |
| Set-MpPreference -DisableBehaviorMonitoring $true -Force -ErrorAction SilentlyContinue | |
| Set-MpPreference -DisableBlockAtFirstSeen $true -Force -ErrorAction SilentlyContinue | |
| Set-MpPreference -DisableIOAVProtection $true -Force -ErrorAction SilentlyContinue | |
| Set-MpPreference -DisablePrivacyMode $true -Force -ErrorAction SilentlyContinue | |
| Set-MpPreference -DisableScriptScanning $true -Force -ErrorAction SilentlyContinue | |
| Set-MpPreference -DisableArchiveScanning $true -Force -ErrorAction SilentlyContinue | |
| Set-MpPreference -SignatureDisableUpdateOnStartupWithoutEngine $true -Force -ErrorAction SilentlyContinue | |
| Set-MpPreference -DisableIntrusionPreventionSystem $true -Force -ErrorAction SilentlyContinue | |
| # Add exclusions for the entire system drive as a last resort | |
| Add-MpPreference -ExclusionPath "C:\" -Force -ErrorAction SilentlyContinue | |
| Add-MpPreference -ExclusionProcess "*" -Force -ErrorAction SilentlyContinue | |
| - name: Install dependencies for Windows | |
| run: | | |
| # Detect architecture | |
| $isARM64 = $env:PROCESSOR_ARCHITECTURE -eq "ARM64" | |
| # Install Scoop if not available | |
| if (!(Get-Command scoop -ErrorAction SilentlyContinue)) { | |
| Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser -Force | |
| Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression | |
| $env:PATH = "$env:USERPROFILE\scoop\shims;$env:PATH" | |
| echo "$env:USERPROFILE\scoop\shims" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
| } | |
| # On ARM64, manually install 7zip to avoid Scoop's extraction issues | |
| if ($isARM64) { | |
| $7zipUrl = "https://www.7-zip.org/a/7z2501-arm64.exe" | |
| $7zipExe = "$env:TEMP\7z-installer.exe" | |
| Invoke-WebRequest -Uri $7zipUrl -OutFile $7zipExe | |
| # Extract manually | |
| Start-Process -FilePath $7zipExe -ArgumentList "/S", "/D=C:\Program Files\7-Zip" -Wait | |
| echo "C:\Program Files\7-Zip" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
| # Tell Scoop to use the external 7zip we just installed | |
| scoop config use_external_7zip true | |
| scoop config 7zip_path "C:\Program Files\7-Zip\7z.exe" | |
| } else { | |
| # x64 can use normal Scoop 7zip installation | |
| scoop install 7zip | |
| } | |
| # Skip aria2 on ARM64 as it may cause issues | |
| if (-not $isARM64) { | |
| scoop install aria2 | |
| } | |
| # Install tools via Scoop one by one for better error isolation | |
| if ($isARM64) { | |
| # Use ARM64-specific packages | |
| scoop install cmake | |
| scoop install ninja | |
| scoop install python | |
| scoop install perl | |
| scoop install make | |
| # Download and extract LLVM ARM64 directly (Scoop's pre_install fails) | |
| Write-Host "Downloading LLVM ARM64..." | |
| $llvmVersion = "19.1.4" | |
| $llvmUrl = "https://github.com/llvm/llvm-project/releases/download/llvmorg-$llvmVersion/LLVM-$llvmVersion-woa64.exe" | |
| $llvmPath = "C:\LLVM" | |
| # Download LLVM installer | |
| $llvmInstaller = "$env:TEMP\llvm-arm64.exe" | |
| Invoke-WebRequest -Uri $llvmUrl -OutFile $llvmInstaller | |
| # Extract with 7zip (faster than installer) | |
| Write-Host "Extracting LLVM (this may take a few minutes)..." | |
| $extractResult = & "C:\Program Files\7-Zip\7z.exe" x $llvmInstaller -o"$llvmPath" -y 2>&1 | |
| Write-Host "7zip extraction completed with result: $LASTEXITCODE" | |
| # Verify extraction worked | |
| if (Test-Path "$llvmPath\bin\clang.exe") { | |
| Write-Host "LLVM extracted successfully" | |
| # Add to PATH | |
| echo "$llvmPath\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
| Write-Host "LLVM ARM64 installed and added to PATH" | |
| } else { | |
| Write-Host "ERROR: LLVM extraction failed - clang.exe not found" | |
| exit 1 | |
| } | |
| Write-Host "ARM64 dependency installation completed, continuing..." | |
| } else { | |
| # Use x64 packages | |
| scoop install cmake | |
| scoop install ninja | |
| scoop install python | |
| scoop install perl | |
| scoop install llvm | |
| scoop install make | |
| } | |
| Write-Host "Starting Ruby installation phase..." | |
| # Install Ruby manually on ARM64 (Scoop's Ruby fails on ARM64) | |
| if ($isARM64) { | |
| Write-Host "Installing Ruby x64 on ARM64 (runs via emulation)..." | |
| $rubyUrl = "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.6-1/rubyinstaller-devkit-3.3.6-1-x64.exe" | |
| $rubyExe = "$env:TEMP\ruby.exe" | |
| Write-Host "Downloading Ruby installer..." | |
| Invoke-WebRequest -Uri $rubyUrl -OutFile $rubyExe | |
| Write-Host "Installing Ruby (with 5 minute timeout)..." | |
| $rubyProcess = Start-Process -FilePath $rubyExe -ArgumentList "/VERYSILENT", "/NORESTART", "/DIR=C:\Ruby33-x64" -PassThru | |
| if (!$rubyProcess.WaitForExit(300000)) { # 5 minutes | |
| Write-Host "Ruby installation timed out, killing process" | |
| $rubyProcess.Kill() | |
| Write-Host "Continuing without Ruby - will try to find existing Ruby" | |
| } | |
| Write-Host "Ruby installation completed" | |
| echo "C:\Ruby33-x64\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
| } else { | |
| # x64 can use Scoop's Ruby | |
| Write-Host "Installing Ruby via Scoop..." | |
| scoop install ruby | |
| Write-Host "Ruby installation completed" | |
| } | |
| # Install vcpkg | |
| git clone https://github.com/Microsoft/vcpkg.git C:\vcpkg | |
| cd C:\vcpkg | |
| .\bootstrap-vcpkg.bat | |
| $env:VCPKG_ROOT = "C:\vcpkg" | |
| echo "VCPKG_ROOT=C:\vcpkg" >> $env:GITHUB_ENV | |
| - uses: actions/checkout@v4 | |
| with: | |
| sparse-checkout-cone-mode: false | |
| sparse-checkout: | | |
| /* | |
| !LayoutTests/ | |
| !JSTests/ | |
| - name: Build WebKit | |
| run: | | |
| $env:Path = "C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64\;" + $env:Path | |
| $env:WEBKIT_OUTPUT_DIR = "bun-webkit" | |
| $env:BUN_WEBKIT_VERSION = "${{ github.sha }}" | |
| $env:CMAKE_BUILD_TYPE = "${{matrix.build-type}}" | |
| $env:PACKAGE_JSON_LABEL = "${{matrix.label}}" | |
| $env:GITHUB_SHA = "${{ github.sha }}" | |
| $env:PACKAGE_JSON_ARCH = "${{matrix.package_json_arch}}" | |
| $env:GITHUB_REPOSITORY = "${{ github.repository }}" | |
| # Explicitly set architecture to avoid detection issues | |
| if ("${{matrix.package_json_arch}}" -eq "arm64") { | |
| $env:BUILD_ARM64 = "1" | |
| } else { | |
| $env:BUILD_ARM64 = "0" | |
| } | |
| ./windows-release.ps1 | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{matrix.label}} | |
| path: bun-webkit.tar.gz | |
| linux-musl: | |
| name: Linux | |
| runs-on: ${{matrix.os}} | |
| strategy: | |
| matrix: | |
| include: | |
| - lto_flag: "" | |
| label: bun-webkit-linux-amd64-musl-debug | |
| os: linux-x64-gh | |
| package_json_arch: "x64" | |
| CMAKE_BUILD_TYPE: "Debug" | |
| - lto_flag: "" | |
| label: bun-webkit-linux-arm64-musl-debug | |
| os: linux-arm64-gh | |
| package_json_arch: "arm64" | |
| CMAKE_BUILD_TYPE: "Debug" | |
| - lto_flag: "-flto=full -fwhole-program-vtables -fforce-emit-vtables" | |
| label: bun-webkit-linux-arm64-musl-lto | |
| os: linux-arm64-gh | |
| package_json_arch: "arm64" | |
| CMAKE_BUILD_TYPE: "MinSizeRel" | |
| - lto_flag: "" | |
| label: bun-webkit-linux-arm64-musl | |
| os: linux-arm64-gh | |
| package_json_arch: "arm64" | |
| CMAKE_BUILD_TYPE: "MinSizeRel" | |
| - lto_flag: "-flto=full -fwhole-program-vtables -fforce-emit-vtables" | |
| label: bun-webkit-linux-amd64-musl-lto | |
| os: linux-x64-gh | |
| package_json_arch: "x64" | |
| CMAKE_BUILD_TYPE: "MinSizeRel" | |
| - lto_flag: "" | |
| label: bun-webkit-linux-amd64-musl | |
| os: linux-x64-gh | |
| package_json_arch: "x64" | |
| CMAKE_BUILD_TYPE: "MinSizeRel" | |
| timeout-minutes: 90 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| sparse-checkout-cone-mode: false | |
| sparse-checkout: | | |
| /* | |
| !LayoutTests/ | |
| !JSTests/ | |
| - uses: docker/setup-buildx-action@v2 | |
| id: buildx | |
| with: | |
| install: true | |
| - name: Run | |
| run: | | |
| rm -rf ${{runner.temp}}/bun-webkit ${{runner.temp}}/bun-webkit.tar.gz | |
| WEBKIT_RELEASE_TYPE=${{matrix.CMAKE_BUILD_TYPE}} CPU="native" cpu=native LTO_FLAG="${{matrix.lto_flag}}" temp=${{runner.temp}} bash musl-release.sh | |
| cd ${{runner.temp}} | |
| echo "#define BUN_WEBKIT_VERSION \"${{github.sha}}\"" >> bun-webkit/include/cmakeconfig.h | |
| echo '{ "name": "${{matrix.label}}", "version": "0.0.1-${{github.sha}}", "os": ["linux"], "cpu": ["${{matrix.package_json_arch}}"], "repository": "https://github.com/${{github.repository}}" }' > bun-webkit/package.json | |
| rm -rf bun-webkit/lib/*.so | |
| rm -rf bun-webkit/lib/*.so.* | |
| tar -czf bun-webkit.tar.gz bun-webkit | |
| rm -rf bun-webkit | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{matrix.label}} | |
| path: ${{runner.temp}}/bun-webkit.tar.gz | |
| release: | |
| name: release | |
| permissions: | |
| contents: write | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 90 | |
| if: github.ref == 'refs/heads/main' | |
| needs: | |
| - linux | |
| - macos | |
| - windows | |
| - linux-musl | |
| steps: | |
| - run: uname -a | |
| - run: free | |
| - run: env | |
| - run: mount | |
| - run: lscpu | |
| - run: lsmem | |
| - run: lsblk | |
| - run: lspci | |
| - run: lsipc | |
| - run: whoami | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: bun-webkit-linux-amd64 | |
| path: ${{runner.temp}}/bun-webkit-linux-amd64 | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: bun-webkit-linux-arm64 | |
| path: ${{runner.temp}}/bun-webkit-linux-arm64 | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: bun-webkit-linux-amd64-debug | |
| path: ${{runner.temp}}/bun-webkit-linux-amd64-debug | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: bun-webkit-linux-amd64-debug-asan | |
| path: ${{runner.temp}}/bun-webkit-linux-amd64-debug-asan | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: bun-webkit-linux-arm64-debug | |
| path: ${{runner.temp}}/bun-webkit-linux-arm64-debug | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: bun-webkit-linux-arm64-debug-asan | |
| path: ${{runner.temp}}/bun-webkit-linux-arm64-debug-asan | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: bun-webkit-macos-arm64 | |
| path: ${{runner.temp}}/bun-webkit-macos-arm64 | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: bun-webkit-macos-arm64-asan | |
| path: ${{runner.temp}}/bun-webkit-macos-arm64-asan | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: bun-webkit-macos-arm64-debug | |
| path: ${{runner.temp}}/bun-webkit-macos-arm64-debug | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: bun-webkit-macos-arm64-debug-asan | |
| path: ${{runner.temp}}/bun-webkit-macos-arm64-debug-asan | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: bun-webkit-linux-amd64-asan | |
| path: ${{runner.temp}}/bun-webkit-linux-amd64-asan | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: bun-webkit-linux-arm64-asan | |
| path: ${{runner.temp}}/bun-webkit-linux-arm64-asan | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: bun-webkit-macos-amd64-debug | |
| path: ${{runner.temp}}/bun-webkit-macos-amd64-debug | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: bun-webkit-macos-amd64 | |
| path: ${{runner.temp}}/bun-webkit-macos-amd64 | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: bun-webkit-linux-amd64-lto | |
| path: ${{runner.temp}}/bun-webkit-linux-amd64-lto | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: bun-webkit-linux-arm64-lto | |
| path: ${{runner.temp}}/bun-webkit-linux-arm64-lto | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: bun-webkit-windows-amd64 | |
| path: ${{runner.temp}}/bun-webkit-windows-amd64 | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: bun-webkit-windows-amd64-debug | |
| path: ${{runner.temp}}/bun-webkit-windows-amd64-debug | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: bun-webkit-windows-arm64 | |
| path: ${{runner.temp}}/bun-webkit-windows-arm64 | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: bun-webkit-windows-arm64-debug | |
| path: ${{runner.temp}}/bun-webkit-windows-arm64-debug | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: bun-webkit-linux-amd64-musl | |
| path: ${{runner.temp}}/bun-webkit-linux-amd64-musl | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: bun-webkit-linux-arm64-musl | |
| path: ${{runner.temp}}/bun-webkit-linux-arm64-musl | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: bun-webkit-linux-amd64-musl-debug | |
| path: ${{runner.temp}}/bun-webkit-linux-amd64-musl-debug | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: bun-webkit-linux-arm64-musl-debug | |
| path: ${{runner.temp}}/bun-webkit-linux-arm64-musl-debug | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: bun-webkit-linux-amd64-musl-lto | |
| path: ${{runner.temp}}/bun-webkit-linux-amd64-musl-lto | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: bun-webkit-linux-arm64-musl-lto | |
| path: ${{runner.temp}}/bun-webkit-linux-arm64-musl-lto | |
| - name: Rename files | |
| run: | | |
| mkdir -p out | |
| mv ${{runner.temp}}/bun-webkit-linux-amd64/bun-webkit.tar.gz ./out/bun-webkit-linux-amd64.tar.gz | |
| mv ${{runner.temp}}/bun-webkit-linux-arm64/bun-webkit.tar.gz ./out/bun-webkit-linux-arm64.tar.gz | |
| mv ${{runner.temp}}/bun-webkit-linux-amd64-musl/bun-webkit.tar.gz ./out/bun-webkit-linux-amd64-musl.tar.gz | |
| mv ${{runner.temp}}/bun-webkit-linux-arm64-musl/bun-webkit.tar.gz ./out/bun-webkit-linux-arm64-musl.tar.gz | |
| mv ${{runner.temp}}/bun-webkit-macos-arm64/bun-webkit.tar.gz ./out/bun-webkit-macos-arm64.tar.gz | |
| mv ${{runner.temp}}/bun-webkit-macos-arm64-asan/bun-webkit.tar.gz ./out/bun-webkit-macos-arm64-asan.tar.gz | |
| mv ${{runner.temp}}/bun-webkit-macos-amd64/bun-webkit.tar.gz ./out/bun-webkit-macos-amd64.tar.gz | |
| mv ${{runner.temp}}/bun-webkit-linux-amd64-debug-asan/bun-webkit.tar.gz ./out/bun-webkit-linux-amd64-debug-asan.tar.gz | |
| mv ${{runner.temp}}/bun-webkit-linux-arm64-debug-asan/bun-webkit.tar.gz ./out/bun-webkit-linux-arm64-debug-asan.tar.gz | |
| mv ${{runner.temp}}/bun-webkit-linux-amd64-debug/bun-webkit.tar.gz ./out/bun-webkit-linux-amd64-debug.tar.gz | |
| mv ${{runner.temp}}/bun-webkit-linux-arm64-debug/bun-webkit.tar.gz ./out/bun-webkit-linux-arm64-debug.tar.gz | |
| mv ${{runner.temp}}/bun-webkit-linux-amd64-musl-debug/bun-webkit.tar.gz ./out/bun-webkit-linux-amd64-musl-debug.tar.gz | |
| mv ${{runner.temp}}/bun-webkit-linux-arm64-musl-debug/bun-webkit.tar.gz ./out/bun-webkit-linux-arm64-musl-debug.tar.gz | |
| mv ${{runner.temp}}/bun-webkit-linux-amd64-asan/bun-webkit.tar.gz ./out/bun-webkit-linux-amd64-asan.tar.gz | |
| mv ${{runner.temp}}/bun-webkit-linux-arm64-asan/bun-webkit.tar.gz ./out/bun-webkit-linux-arm64-asan.tar.gz | |
| mv ${{runner.temp}}/bun-webkit-macos-arm64-debug/bun-webkit.tar.gz ./out/bun-webkit-macos-arm64-debug.tar.gz | |
| mv ${{runner.temp}}/bun-webkit-macos-arm64-debug-asan/bun-webkit.tar.gz ./out/bun-webkit-macos-arm64-debug-asan.tar.gz | |
| mv ${{runner.temp}}/bun-webkit-macos-amd64-debug/bun-webkit.tar.gz ./out/bun-webkit-macos-amd64-debug.tar.gz | |
| mv ${{runner.temp}}/bun-webkit-linux-amd64-lto/bun-webkit.tar.gz ./out/bun-webkit-linux-amd64-lto.tar.gz | |
| mv ${{runner.temp}}/bun-webkit-linux-arm64-lto/bun-webkit.tar.gz ./out/bun-webkit-linux-arm64-lto.tar.gz | |
| mv ${{runner.temp}}/bun-webkit-linux-amd64-musl-lto/bun-webkit.tar.gz ./out/bun-webkit-linux-amd64-musl-lto.tar.gz | |
| mv ${{runner.temp}}/bun-webkit-linux-arm64-musl-lto/bun-webkit.tar.gz ./out/bun-webkit-linux-arm64-musl-lto.tar.gz | |
| mv ${{runner.temp}}/bun-webkit-windows-amd64/bun-webkit.tar.gz ./out/bun-webkit-windows-amd64.tar.gz | |
| mv ${{runner.temp}}/bun-webkit-windows-amd64-debug/bun-webkit.tar.gz ./out/bun-webkit-windows-amd64-debug.tar.gz | |
| mv ${{runner.temp}}/bun-webkit-windows-arm64/bun-webkit.tar.gz ./out/bun-webkit-windows-arm64.tar.gz | |
| mv ${{runner.temp}}/bun-webkit-windows-arm64-debug/bun-webkit.tar.gz ./out/bun-webkit-windows-arm64-debug.tar.gz | |
| - name: Release | |
| uses: softprops/action-gh-release@v1 | |
| with: | |
| generate_release_notes: true | |
| tag_name: "autobuild-${{github.sha}}" | |
| - uses: softprops/action-gh-release@v1 | |
| with: | |
| tag_name: "autobuild-${{github.sha}}" | |
| files: | | |
| ./out/bun-webkit-linux-amd64.tar.gz | |
| ./out/bun-webkit-linux-arm64.tar.gz | |
| ./out/bun-webkit-linux-amd64-lto.tar.gz | |
| ./out/bun-webkit-linux-arm64-lto.tar.gz | |
| ./out/bun-webkit-linux-amd64-asan.tar.gz | |
| ./out/bun-webkit-linux-arm64-asan.tar.gz | |
| ./out/bun-webkit-linux-amd64-debug.tar.gz | |
| ./out/bun-webkit-linux-arm64-debug.tar.gz | |
| ./out/bun-webkit-linux-amd64-debug-asan.tar.gz | |
| ./out/bun-webkit-linux-arm64-debug-asan.tar.gz | |
| - uses: softprops/action-gh-release@v1 | |
| with: | |
| tag_name: "autobuild-${{github.sha}}" | |
| files: | | |
| ./out/bun-webkit-linux-amd64-musl.tar.gz | |
| ./out/bun-webkit-linux-arm64-musl.tar.gz | |
| ./out/bun-webkit-linux-amd64-musl-lto.tar.gz | |
| ./out/bun-webkit-linux-arm64-musl-lto.tar.gz | |
| ./out/bun-webkit-linux-amd64-musl-debug.tar.gz | |
| ./out/bun-webkit-linux-arm64-musl-debug.tar.gz | |
| - uses: softprops/action-gh-release@v1 | |
| with: | |
| tag_name: "autobuild-${{github.sha}}" | |
| files: | | |
| ./out/bun-webkit-macos-arm64.tar.gz | |
| ./out/bun-webkit-macos-arm64-asan.tar.gz | |
| ./out/bun-webkit-macos-arm64-debug.tar.gz | |
| ./out/bun-webkit-macos-arm64-debug-asan.tar.gz | |
| ./out/bun-webkit-macos-amd64.tar.gz | |
| ./out/bun-webkit-macos-amd64-debug.tar.gz | |
| - uses: softprops/action-gh-release@v1 | |
| with: | |
| tag_name: "autobuild-${{github.sha}}" | |
| files: | | |
| ./out/bun-webkit-windows-amd64.tar.gz | |
| ./out/bun-webkit-windows-amd64-debug.tar.gz | |
| ./out/bun-webkit-windows-arm64.tar.gz | |
| ./out/bun-webkit-windows-arm64-debug.tar.gz |