Skip to content

Commit b5b35ec

Browse files
WebKit ARM64 Builderclaude
andcommitted
Use direct downloads for ARM64 Windows dependencies in CI
GitHub Actions ARM64 runners don't support Appx module. Download and install all dependencies directly from official sources with proper ARM64 binaries: - CMake 3.30.5 ARM64 - Ninja build system - Python 3.13.1 ARM64 - Ruby 3.3.6 ARM64 - Strawberry Perl 5.40.0 - LLVM 19.1.4 ARM64 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
1 parent c1c6bde commit b5b35ec

File tree

1 file changed

+44
-19
lines changed

1 file changed

+44
-19
lines changed

.github/workflows/build.yml

Lines changed: 44 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -254,29 +254,54 @@ jobs:
254254
runs-on: ${{ matrix.runner }}
255255
timeout-minutes: 90
256256
steps:
257-
- name: Install WinGet and dependencies
257+
- name: Install dependencies manually
258258
run: |
259-
# Download and install WinGet manually
260-
$url = "https://github.com/microsoft/winget-cli/releases/latest/download/Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle"
261-
$output = "$env:TEMP\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle"
262-
Invoke-WebRequest -Uri $url -OutFile $output
263-
Add-AppxPackage -Path $output
259+
# Create tools directory
260+
New-Item -ItemType Directory -Path C:\tools -Force
264261
265-
# Add WinGet to PATH
266-
$wingetPath = "${env:LOCALAPPDATA}\Microsoft\WindowsApps"
267-
$env:PATH = "$wingetPath;$env:PATH"
268-
echo "$wingetPath" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
262+
# Download and install CMake ARM64
263+
$cmakeUrl = "https://github.com/Kitware/CMake/releases/latest/download/cmake-3.30.5-windows-arm64.zip"
264+
$cmakeZip = "$env:TEMP\cmake.zip"
265+
Invoke-WebRequest -Uri $cmakeUrl -OutFile $cmakeZip
266+
Expand-Archive -Path $cmakeZip -DestinationPath C:\tools\cmake -Force
267+
$cmakePath = (Get-ChildItem -Path C:\tools\cmake -Directory | Select-Object -First 1).FullName
268+
echo "$cmakePath\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
269269
270-
# Wait for WinGet to be ready
271-
Start-Sleep -Seconds 10
270+
# Download and install Ninja
271+
$ninjaUrl = "https://github.com/ninja-build/ninja/releases/latest/download/ninja-win.zip"
272+
$ninjaZip = "$env:TEMP\ninja.zip"
273+
Invoke-WebRequest -Uri $ninjaUrl -OutFile $ninjaZip
274+
New-Item -ItemType Directory -Path C:\tools\ninja -Force
275+
Expand-Archive -Path $ninjaZip -DestinationPath C:\tools\ninja -Force
276+
echo "C:\tools\ninja" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
272277
273-
# Install dependencies with WinGet
274-
winget install --id=Kitware.CMake -e --silent --accept-source-agreements --accept-package-agreements
275-
winget install --id=Ninja-build.Ninja -e --silent --accept-source-agreements --accept-package-agreements
276-
winget install --id=Python.Python.3.13 -e --silent --accept-source-agreements --accept-package-agreements
277-
winget install --id=RubyInstaller.Ruby -e --silent --accept-source-agreements --accept-package-agreements
278-
winget install --id=StrawberryPerl.StrawberryPerl -e --silent --accept-source-agreements --accept-package-agreements
279-
winget install --id=LLVM.LLVM -e --silent --accept-source-agreements --accept-package-agreements
278+
# Download and install Python ARM64
279+
$pythonUrl = "https://www.python.org/ftp/python/3.13.1/python-3.13.1-arm64.exe"
280+
$pythonExe = "$env:TEMP\python.exe"
281+
Invoke-WebRequest -Uri $pythonUrl -OutFile $pythonExe
282+
Start-Process -FilePath $pythonExe -ArgumentList "/quiet", "InstallAllUsers=1", "PrependPath=1", "Include_test=0" -Wait
283+
284+
# Download and install Ruby ARM64
285+
$rubyUrl = "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-3.3.6-1/rubyinstaller-3.3.6-1-arm64.exe"
286+
$rubyExe = "$env:TEMP\ruby.exe"
287+
Invoke-WebRequest -Uri $rubyUrl -OutFile $rubyExe
288+
Start-Process -FilePath $rubyExe -ArgumentList "/VERYSILENT", "/NORESTART", "/DIR=C:\Ruby33-arm64" -Wait
289+
echo "C:\Ruby33-arm64\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
290+
291+
# Download and install Strawberry Perl
292+
$perlUrl = "https://strawberryperl.com/download/5.40.0.1/strawberry-perl-5.40.0.1-64bit.msi"
293+
$perlMsi = "$env:TEMP\perl.msi"
294+
Invoke-WebRequest -Uri $perlUrl -OutFile $perlMsi
295+
Start-Process -FilePath "msiexec.exe" -ArgumentList "/i", $perlMsi, "/quiet", "/norestart" -Wait
296+
echo "C:\strawberry\perl\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
297+
echo "C:\strawberry\c\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
298+
299+
# Download and install LLVM 19 ARM64
300+
$llvmUrl = "https://github.com/llvm/llvm-project/releases/download/llvmorg-19.1.4/LLVM-19.1.4-woa64.exe"
301+
$llvmExe = "$env:TEMP\llvm.exe"
302+
Invoke-WebRequest -Uri $llvmUrl -OutFile $llvmExe
303+
Start-Process -FilePath $llvmExe -ArgumentList "/S", "/D=C:\LLVM" -Wait
304+
echo "C:\LLVM\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
280305
281306
# Install vcpkg manually
282307
git clone https://github.com/Microsoft/vcpkg.git C:\vcpkg

0 commit comments

Comments
 (0)