@@ -105,7 +105,7 @@ jobs:
105105 name : ${{ matrix.job-name }}
106106 # Use any image to support the xcode-select below, but hardcode version to avoid silent upgrades (and breaks).
107107 # See: https://github.com/actions/runner-images#available-images.
108- runs-on : macos-14
108+ runs-on : macos-15
109109
110110 # When a contributor maintains a fork of the repo, any pull request they make
111111 # to their own fork, or to the main repository, will trigger two CI runs:
@@ -123,10 +123,10 @@ jobs:
123123 include :
124124 - job-type : standard
125125 file-env : ' ./ci/test/00_setup_env_mac_native.sh'
126- job-name : ' macOS 14 native, arm64 , no depends, sqlite only, gui'
126+ job-name : ' macOS native, no depends, sqlite only, gui'
127127 - job-type : fuzz
128128 file-env : ' ./ci/test/00_setup_env_mac_native_fuzz.sh'
129- job-name : ' macOS 14 native, arm64 , fuzz'
129+ job-name : ' macOS native, fuzz'
130130
131131 env :
132132 DANGER_RUN_CI_ON_HOST : 1
@@ -145,8 +145,8 @@ jobs:
145145 # Use the earliest Xcode supported by the version of macOS denoted in
146146 # doc/release-notes-empty-template.md and providing at least the
147147 # minimum clang version denoted in doc/dependencies.md.
148- # See: https://developer.apple.com/documentation/xcode-release-notes/xcode-15 -release-notes
149- sudo xcode-select --switch /Applications/Xcode_15 .0.app
148+ # See: https://developer.apple.com/documentation/xcode-release-notes/xcode-16 -release-notes
149+ sudo xcode-select --switch /Applications/Xcode_16 .0.app
150150 clang --version
151151
152152 - name : Install Homebrew packages
@@ -211,11 +211,16 @@ jobs:
211211 steps :
212212 - *CHECKOUT
213213
214- - name : Configure Developer Command Prompt for Microsoft Visual C++
215- # Using microsoft/setup-msbuild is not enough.
216- uses : ilammy/msvc-dev-cmd@v1
217- with :
218- arch : x64
214+ - &SET_UP_VS
215+ name : Set up VS Developer Prompt
216+ shell : pwsh -Command "$PSVersionTable; $PSNativeCommandUseErrorActionPreference = $true; $ErrorActionPreference = 'Stop'; & '{0}'"
217+ run : |
218+ $vswherePath = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe"
219+ $installationPath = & $vswherePath -latest -property installationPath
220+ & "${env:COMSPEC}" /s /c "`"$installationPath\Common7\Tools\vsdevcmd.bat`" -arch=x64 -no_logo && set" | foreach-object {
221+ $name, $value = $_ -split '=', 2
222+ echo "$name=$value" >> $env:GITHUB_ENV
223+ }
219224
220225 - name : Get tool information
221226 shell : pwsh
@@ -263,14 +268,26 @@ jobs:
263268 run : |
264269 cmake --build . -j $NUMBER_OF_PROCESSORS --config Release
265270
266- - name : Get bitcoind manifest
271+ - name : Check executable manifests
267272 if : matrix.job-type == 'standard'
268273 working-directory : build
274+ shell : pwsh -Command "$PSVersionTable; $PSNativeCommandUseErrorActionPreference = $true; $ErrorActionPreference = 'Stop'; & '{0}'"
269275 run : |
270- mt.exe -nologo -inputresource:bin/Release/bitcoind.exe -out:bitcoind.manifest
271- cat bitcoind.manifest
272- echo
273- mt.exe -nologo -inputresource:bin/Release/bitcoind.exe -validate_manifest
276+ mt.exe -nologo -inputresource:bin\Release\bitcoind.exe -out:bitcoind.manifest
277+ Get-Content bitcoind.manifest
278+
279+ Get-ChildItem -Filter "bin\Release\*.exe" | ForEach-Object {
280+ $exeName = $_.Name
281+
282+ # Skip as they currently do not have manifests
283+ if ($exeName -eq "fuzz.exe" -or $exeName -eq "bench_bitcoin.exe" -or $exeName -eq "test_bitcoin-qt.exe") {
284+ Write-Host "Skipping $exeName (no manifest present)"
285+ return
286+ }
287+
288+ Write-Host "Checking $exeName"
289+ & mt.exe -nologo -inputresource:$_.FullName -validate_manifest
290+ }
274291
275292 - name : Run test suite
276293 if : matrix.job-type == 'standard'
@@ -363,26 +380,33 @@ jobs:
363380 - *CHECKOUT
364381
365382 - name : Download built executables
366- uses : actions/download-artifact@v4
383+ uses : actions/download-artifact@v5
367384 with :
368385 name : x86_64-w64-mingw32-executables-${{ github.run_id }}
369386
370387 - name : Run bitcoind.exe
371388 run : ./bin/bitcoind.exe -version
372389
373- - name : Find mt.exe tool
374- shell : pwsh
375- run : |
376- $sdk_dir = (Get-ItemProperty 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows Kits\Installed Roots' -Name KitsRoot10).KitsRoot10
377- $sdk_latest = (Get-ChildItem "$sdk_dir\bin" -Directory | Where-Object { $_.Name -match '^\d+\.\d+\.\d+\.\d+$' } | Sort-Object Name -Descending | Select-Object -First 1).Name
378- "MT_EXE=${sdk_dir}bin\${sdk_latest}\x64\mt.exe" >> $env:GITHUB_ENV
390+ - *SET_UP_VS
379391
380- - name : Get bitcoind manifest
381- shell : pwsh
392+ - name : Check executable manifests
393+ shell : pwsh -Command "$PSVersionTable; $PSNativeCommandUseErrorActionPreference = $true; $ErrorActionPreference = 'Stop'; & '{0}'"
382394 run : |
383- & $env:MT_EXE -nologo -inputresource:bin\bitcoind.exe -out:bitcoind.manifest
395+ mt.exe -nologo -inputresource:bin\bitcoind.exe -out:bitcoind.manifest
384396 Get-Content bitcoind.manifest
385- & $env:MT_EXE -nologo -inputresource:bin\bitcoind.exe -validate_manifest
397+
398+ Get-ChildItem -Filter "bin\*.exe" | ForEach-Object {
399+ $exeName = $_.Name
400+
401+ # Skip as they currently do not have manifests
402+ if ($exeName -eq "fuzz.exe" -or $exeName -eq "bench_bitcoin.exe") {
403+ Write-Host "Skipping $exeName (no manifest present)"
404+ return
405+ }
406+
407+ Write-Host "Checking $exeName"
408+ & mt.exe -nologo -inputresource:$_.FullName -validate_manifest
409+ }
386410
387411 - name : Run unit tests
388412 # Can't use ctest here like other jobs as we don't have a CMake build tree.
0 commit comments