diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8bd6c60fd5..aa59ff2183 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -437,6 +437,7 @@ macOS12_Xcode13: - $env:CCACHE_BASEDIR = Get-Location - $env:CCACHE_DIR = "$(Get-Location)\ccache" - New-Item -Type Directory -Force -Path $env:CCACHE_DIR + - New-Item -Type File -Force -Path MSVC2019_64_Ninja\.cmake\api\v1\query\codemodel-v2 - sh CI/before_script.msvc.sh -c $config -p Win64 -v 2019 -k -V -N -b -t -C $multiview -E - cd MSVC2019_64_Ninja - .\ActivateMSVC.ps1 @@ -448,6 +449,10 @@ macOS12_Xcode13: - | if (Get-ChildItem -Recurse *.pdb) { 7z a -tzip "..\..\$(Make-SafeFileName("OpenMW_MSVC2019_64_${config}_${CI_COMMIT_REF_NAME}_${CI_JOB_ID}_symbols.zip"))" '*.pdb' CI-ID.txt + Push-Location .. + ..\CI\Store-Symbols.ps1 + 7z a -tzip "..\$(Make-SafeFileName("OpenMW_MSVC2019_64_${config}_${CI_COMMIT_REF_NAME}_${CI_JOB_ID}_sym_store.zip"))" '.\SymStore\*' CI-ID.txt + Pop-Location Get-ChildItem -Recurse *.pdb | Remove-Item } - 7z a -tzip "..\..\$(Make-SafeFileName("OpenMW_MSVC2019_64_${config}_${CI_COMMIT_REF_NAME}.zip"))" '*' @@ -539,6 +544,7 @@ macOS12_Xcode13: - $env:CCACHE_BASEDIR = Get-Location - $env:CCACHE_DIR = "$(Get-Location)\ccache" - New-Item -Type Directory -Force -Path $env:CCACHE_DIR + - New-Item -Type File -Force -Path MSVC2019_64\.cmake\api\v1\query\codemodel-v2 - sh CI/before_script.msvc.sh -c $config -p Win64 -v 2019 -k -V -b -t -C $multiview -E - cd MSVC2019_64 - cmake --build . --config $config @@ -549,6 +555,10 @@ macOS12_Xcode13: - | if (Get-ChildItem -Recurse *.pdb) { 7z a -tzip "..\..\$(Make-SafeFileName("OpenMW_MSVC2019_64_${config}_${CI_COMMIT_REF_NAME}_${CI_JOB_ID}_symbols.zip"))" '*.pdb' CI-ID.txt + Push-Location .. + ..\CI\Store-Symbols.ps1 + 7z a -tzip "..\$(Make-SafeFileName("OpenMW_MSVC2019_64_${config}_${CI_COMMIT_REF_NAME}_${CI_JOB_ID}_sym_store.zip"))" '.\SymStore\*' CI-ID.txt + Pop-Location Get-ChildItem -Recurse *.pdb | Remove-Item } - 7z a -tzip "..\..\$(Make-SafeFileName("OpenMW_MSVC2019_64_${config}_${CI_COMMIT_REF_NAME}.zip"))" '*' diff --git a/CI/Store-Symbols.ps1 b/CI/Store-Symbols.ps1 new file mode 100644 index 0000000000..1d379cde24 --- /dev/null +++ b/CI/Store-Symbols.ps1 @@ -0,0 +1,54 @@ +if (-Not (Test-Path CMakeCache.txt)) +{ + Write-Error "This script must be run from the build directory." +} + +if (-Not (Test-Path .cmake\api\v1\reply)) +{ + New-Item -Type File -Force .cmake\api\v1\query\codemodel-v2 + cmake . +} + +try +{ + Push-Location .cmake\api\v1\reply + + $index = Get-Content -Raw index-*.json | ConvertFrom-Json + + $codemodel = Get-Content -Raw $index.reply."codemodel-v2".jsonFile | ConvertFrom-Json + + $targets = @() + $codemodel.configurations | ForEach-Object { + $_.targets | ForEach-Object { + $target = Get-Content -Raw $_.jsonFile | ConvertFrom-Json + if ($target.type -eq "EXECUTABLE" -or $target.type -eq "SHARED_LIBRARY") + { + $targets += $target + } + } + } + + $artifacts = @() + $targets | ForEach-Object { + $_.artifacts | ForEach-Object { + $artifacts += $_.path + } + } +} +finally +{ + Pop-Location +} + +$windowsSDKFolder = Get-ItemPropertyValue "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Microsoft SDKs\Windows\v10.0" InstallationFolder + +try +{ + $responseFile = New-TemporaryFile + $artifacts | Set-Content $responseFile + & "$windowsSDKFolder\debuggers\x64\symstore.exe" add /f @$responseFile /s .\SymStore /compress /t "I don't know why /t is needed" +} +finally +{ + Remove-Item $responseFile +}