@@ -61,11 +61,11 @@ jobs:
6161 - os : osx
6262 runner : macos-14
6363 - os : linux
64- runner : ubuntu-20 .04
64+ runner : ubuntu-22 .04
6565 - os : ios
6666 runner : macos-14
6767 - os : android
68- runner : ubuntu-20 .04
68+ runner : ubuntu-22 .04
6969 exclude :
7070 - arch : arm
7171 os : win
@@ -131,6 +131,39 @@ jobs:
131131 echo "IPHONEOS_DEPLOYMENT_TARGET=12.1" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
132132 }
133133
134+ - name : Install clang+llvm
135+ if : matrix.os == 'linux'
136+ shell : pwsh
137+ run : |
138+ $ClangLlvmVersion='18.1.8'
139+ $ClangLlvmArch='x86_64'
140+ $ClangLlvmPlatform=@{'win'='windows';'osx'='macos';'linux'='ubuntu-22.04'}['${{matrix.os}}']
141+ $ClangLlvmBaseUrl="https://github.com/awakecoding/llvm-prebuilt/releases/download/v2025.2.0"
142+ $ClangLlvmName="clang+llvm-${ClangLlvmVersion}-${ClangLlvmArch}-${ClangLlvmPlatform}"
143+ wget -q "${ClangLlvmBaseUrl}/${ClangLlvmName}.tar.xz"
144+ $LLVM_PREFIX="/opt/llvm"
145+ tar -xf "${ClangLlvmName}.tar.xz" -C /tmp
146+ sudo mv "/tmp/${ClangLlvmName}" $LLVM_PREFIX
147+ $LLVM_BIN_PATH="$LLVM_PREFIX/bin"
148+ echo "PATH=$LLVM_BIN_PATH$([IO.Path]::PathSeparator)$Env:PATH" >> $Env:GITHUB_ENV
149+
150+ - name : Configure CBake
151+ if : matrix.os == 'linux'
152+ shell : pwsh
153+ run : |
154+ $CBakeVersion = "v2025.02.18.0"
155+ $CBakeRepoUrl = "https://github.com/Devolutions/CBake"
156+ $CBakeDownloadUrl = "$CBakeRepoUrl/releases/download/$CBakeVersion"
157+ git clone -b $CBakeVersion "https://github.com/Devolutions/CBake" cbake
158+ @('ubuntu-20.04-amd64-sysroot.tar.xz', 'ubuntu-20.04-arm64-sysroot.tar.xz') | % {
159+ curl -L --output "cbake/sysroots/$_" "$CBakeDownloadUrl/$_"
160+ tar -C "cbake/sysroots" -xf "cbake/sysroots/$_"
161+ Remove-Item "cbake/sysroots/$_" | Out-Null
162+ }
163+ $CBakeHome = Join-Path (Get-Location) 'cbake'
164+ echo "CBAKE_HOME=$CBakeHome" >> $Env:GITHUB_ENV
165+ sudo apt install ninja-build g++-aarch64-linux-gnu
166+
134167 - name : Build picky (${{matrix.os}}-${{matrix.arch}})
135168 shell : pwsh
136169 run : |
@@ -158,10 +191,18 @@ jobs:
158191 $Env:RUSTFLAGS="-C target-feature=+crt-static"
159192 }
160193
161- if ($RustTarget -eq 'aarch64-unknown-linux-gnu') {
162- sudo apt update
163- sudo apt install gcc-aarch64-linux-gnu
164- $Env:RUSTFLAGS="-C linker=aarch64-linux-gnu-gcc"
194+ if ($DotNetOs -eq 'linux') {
195+ $LinuxArch = @{'x64'='amd64';'arm64'='arm64'}[$DotNetArch]
196+ $CMakeToolchainFile = Join-Path $Env:CBAKE_HOME "cmake/linux.toolchain.cmake"
197+ $Env:SYSROOT_NAME = "ubuntu-20.04-$LinuxArch"
198+ $CMakeSourceDir = "$Env:CBAKE_HOME/cargo"
199+ $CMakeBuildDir = "$Env:CBAKE_HOME/cargo/${Env:SYSROOT_NAME}"
200+ $CMakeArgs = @(
201+ "-DSYSROOT_NAME=$Env:SYSROOT_NAME",
202+ "-DCMAKE_TOOLCHAIN_FILE=$CMakeToolchainFile"
203+ )
204+ cmake $CMakeSourceDir -G Ninja -B $CMakeBuildDir $CMakeArgs
205+ . "$HOME/.cargo/cbake/${RustTarget}-enter.ps1"
165206 }
166207
167208 $ProjectVersion = '${{ needs.preflight.outputs.project-version }}'
@@ -211,7 +252,7 @@ jobs:
211252 - name : Configure runner
212253 shell : pwsh
213254 run : |
214- wget -q https://github.com/awakecoding/llvm-prebuilt/releases/download/v2025.1 .0/cctools-x86_64-ubuntu-24.04.tar.xz
255+ wget -q https://github.com/awakecoding/llvm-prebuilt/releases/download/v2025.2 .0/cctools-x86_64-ubuntu-24.04.tar.xz
215256 tar -xf cctools-x86_64-ubuntu-24.04.tar.xz -C /tmp
216257 sudo mv /tmp/cctools-x86_64-ubuntu-24.04/bin/lipo /usr/local/bin
217258 sudo mv /tmp/cctools-x86_64-ubuntu-24.04/bin/install_name_tool /usr/local/bin
0 commit comments