mirror of
https://git.suyu.dev/suyu/suyu
synced 2024-11-01 04:47:53 +00:00
a0e1fbfe14
Appveyor has a limit on artifact retention, and we hit the limit all the time, so just lower the number of build artifacts to just the final zip
175 lines
7.2 KiB
YAML
175 lines
7.2 KiB
YAML
# shallow clone
|
|
clone_depth: 10
|
|
|
|
cache:
|
|
- C:\ProgramData\chocolatey\bin -> appveyor.yml
|
|
- C:\ProgramData\chocolatey\lib -> appveyor.yml
|
|
|
|
os: Visual Studio 2017
|
|
|
|
environment:
|
|
# Tell msys2 to add mingw64 to the path
|
|
MSYSTEM: MINGW64
|
|
# Tell msys2 to inherit the current directory when starting the shell
|
|
CHERE_INVOKING: 1
|
|
matrix:
|
|
- BUILD_TYPE: msvc
|
|
- BUILD_TYPE: mingw
|
|
|
|
platform:
|
|
- x64
|
|
|
|
configuration:
|
|
- Release
|
|
|
|
install:
|
|
- git submodule update --init --recursive
|
|
- ps: |
|
|
if ($env:BUILD_TYPE -eq 'mingw') {
|
|
$dependencies = "mingw64/mingw-w64-x86_64-cmake",
|
|
"mingw64/mingw-w64-x86_64-qt5",
|
|
"mingw64/mingw-w64-x86_64-SDL2"
|
|
# redirect err to null to prevent warnings from becoming errors
|
|
# workaround to prevent pacman from failing due to cyclical dependencies
|
|
C:\msys64\usr\bin\bash -lc "pacman --noconfirm -S mingw64/mingw-w64-x86_64-freetype mingw64/mingw-w64-x86_64-fontconfig" 2> $null
|
|
C:\msys64\usr\bin\bash -lc "pacman --noconfirm -S $dependencies" 2> $null
|
|
}
|
|
|
|
before_build:
|
|
- mkdir %BUILD_TYPE%_build
|
|
- cd %BUILD_TYPE%_build
|
|
- ps: |
|
|
if ($env:BUILD_TYPE -eq 'msvc') {
|
|
# redirect stderr and change the exit code to prevent powershell from cancelling the build if cmake prints a warning
|
|
cmd /C 'cmake -G "Visual Studio 15 2017 Win64" -DYUZU_USE_BUNDLED_QT=1 -DYUZU_USE_BUNDLED_SDL2=1 -DYUZU_USE_BUNDLED_UNICORN=1 -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON .. 2>&1 && exit 0'
|
|
} else {
|
|
C:\msys64\usr\bin\bash.exe -lc "cmake -G 'MSYS Makefiles' -DYUZU_BUILD_UNICORN=1 -DCMAKE_BUILD_TYPE=Release -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON .. 2>&1"
|
|
}
|
|
- cd ..
|
|
|
|
build_script:
|
|
- ps: |
|
|
if ($env:BUILD_TYPE -eq 'msvc') {
|
|
# https://www.appveyor.com/docs/build-phase
|
|
msbuild msvc_build/yuzu.sln /maxcpucount /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll"
|
|
} else {
|
|
C:\msys64\usr\bin\bash.exe -lc 'mingw32-make -C mingw_build/ 2>&1'
|
|
}
|
|
|
|
after_build:
|
|
- ps: |
|
|
$GITDATE = $(git show -s --date=short --format='%ad') -replace "-",""
|
|
$GITREV = $(git show -s --format='%h')
|
|
|
|
# Find out which kind of release we are producing by tag name
|
|
if ($env:APPVEYOR_REPO_TAG_NAME) {
|
|
$RELEASE_DIST, $RELEASE_VERSION = $env:APPVEYOR_REPO_TAG_NAME.split('-')
|
|
} else {
|
|
# There is no repo tag - make assumptions
|
|
$RELEASE_DIST = "head"
|
|
}
|
|
|
|
if ($env:BUILD_TYPE -eq 'msvc') {
|
|
# Where are these spaces coming from? Regardless, let's remove them
|
|
$MSVC_BUILD_ZIP = "yuzu-windows-msvc-$GITDATE-$GITREV.zip" -replace " ", ""
|
|
$MSVC_BUILD_PDB = "yuzu-windows-msvc-$GITDATE-$GITREV-debugsymbols.zip" -replace " ", ""
|
|
$MSVC_SEVENZIP = "yuzu-windows-msvc-$GITDATE-$GITREV.7z" -replace " ", ""
|
|
|
|
# set the build names as env vars so the artifacts can upload them
|
|
$env:BUILD_ZIP = $MSVC_BUILD_ZIP
|
|
$env:BUILD_SYMBOLS = $MSVC_BUILD_PDB
|
|
$env:BUILD_UPDATE = $MSVC_SEVENZIP
|
|
|
|
$BUILD_DIR = ".\msvc_build\bin\Release"
|
|
|
|
# Make a debug symbol upload
|
|
mkdir pdb
|
|
Get-ChildItem "$BUILD_DIR\" -Recurse -Filter "*.pdb" | Copy-Item -destination .\pdb
|
|
7z a -tzip $MSVC_BUILD_PDB .\pdb\*.pdb
|
|
rm "$BUILD_DIR\*.pdb"
|
|
|
|
mkdir $RELEASE_DIST
|
|
# get rid of extra exes by copying everything over, then deleting all the exes, then copying just the exes we want
|
|
Copy-Item "$BUILD_DIR\*" -Destination $RELEASE_DIST -Recurse
|
|
rm "$RELEASE_DIST\*.exe"
|
|
Get-ChildItem "$BUILD_DIR" -Recurse -Filter "yuzu*.exe" | Copy-Item -destination $RELEASE_DIST
|
|
Copy-Item .\license.txt -Destination $RELEASE_DIST
|
|
Copy-Item .\README.md -Destination $RELEASE_DIST
|
|
7z a -tzip $MSVC_BUILD_ZIP $RELEASE_DIST\*
|
|
7z a $MSVC_SEVENZIP $RELEASE_DIST
|
|
} else {
|
|
$MINGW_BUILD_ZIP = "yuzu-windows-mingw-$GITDATE-$GITREV.zip" -replace " ", ""
|
|
$MINGW_SEVENZIP = "yuzu-windows-mingw-$GITDATE-$GITREV.7z" -replace " ", ""
|
|
# not going to bother adding separate debug symbols for mingw, so just upload a README for it
|
|
# if someone wants to add them, change mingw to compile with -g and use objdump and strip to separate the symbols from the binary
|
|
$MINGW_NO_DEBUG_SYMBOLS = "README_No_Debug_Symbols.txt"
|
|
Set-Content -Path $MINGW_NO_DEBUG_SYMBOLS -Value "This is a workaround for Appveyor since msvc has debug symbols but mingw doesnt" -Force
|
|
|
|
# store the build information in env vars so we can use them as artifacts
|
|
$env:BUILD_ZIP = $MINGW_BUILD_ZIP
|
|
$env:BUILD_SYMBOLS = $MINGW_NO_DEBUG_SYMBOLS
|
|
$env:BUILD_UPDATE = $MINGW_SEVENZIP
|
|
|
|
$CMAKE_SOURCE_DIR = "$env:APPVEYOR_BUILD_FOLDER"
|
|
$CMAKE_BINARY_DIR = "$CMAKE_SOURCE_DIR/mingw_build/bin"
|
|
$RELEASE_DIST = $RELEASE_DIST + "-mingw"
|
|
|
|
mkdir $RELEASE_DIST
|
|
mkdir $RELEASE_DIST/platforms
|
|
mkdir $RELEASE_DIST/styles
|
|
mkdir $RELEASE_DIST/imageformats
|
|
|
|
# copy the compiled binaries and other release files to the release folder
|
|
Get-ChildItem "$CMAKE_BINARY_DIR" -Filter "yuzu*.exe" | Copy-Item -destination $RELEASE_DIST
|
|
Copy-Item -path "$CMAKE_SOURCE_DIR/license.txt" -destination $RELEASE_DIST
|
|
Copy-Item -path "$CMAKE_SOURCE_DIR/README.md" -destination $RELEASE_DIST
|
|
|
|
# copy all the dll dependencies to the release folder
|
|
. "./.appveyor/UtilityFunctions.ps1"
|
|
$DLLSearchPath = "C:\msys64\mingw64\bin;$env:PATH"
|
|
$MingwDLLs = RecursivelyGetDeps $DLLSearchPath "$RELEASE_DIST\yuzu.exe"
|
|
$MingwDLLs += RecursivelyGetDeps $DLLSearchPath "$RELEASE_DIST\yuzu_cmd.exe"
|
|
Write-Host "Detected the following dependencies:"
|
|
Write-Host $MingwDLLs
|
|
foreach ($file in $MingwDLLs) {
|
|
Copy-Item -path "$file" -force -destination "$RELEASE_DIST"
|
|
}
|
|
|
|
# copy the qt windows plugin dll to platforms
|
|
Copy-Item -path "C:/msys64/mingw64/share/qt5/plugins/platforms/qwindows.dll" -force -destination "$RELEASE_DIST/platforms"
|
|
|
|
# copy the qt windows vista style dll to platforms
|
|
Copy-Item -path "C:/msys64/mingw64/share/qt5/plugins/styles/qwindowsvistastyle.dll" -force -destination "$RELEASE_DIST/styles"
|
|
|
|
# copy the qt jpeg imageformat dll to platforms
|
|
Copy-Item -path "C:/msys64/mingw64/share/qt5/plugins/imageformats/qjpeg.dll" -force -destination "$RELEASE_DIST/imageformats"
|
|
|
|
7z a -tzip $MINGW_BUILD_ZIP $RELEASE_DIST\*
|
|
7z a $MINGW_SEVENZIP $RELEASE_DIST
|
|
}
|
|
|
|
test_script:
|
|
- cd %BUILD_TYPE%_build
|
|
- ps: |
|
|
if ($env:BUILD_TYPE -eq 'msvc') {
|
|
ctest -VV -C Release
|
|
} else {
|
|
C:\msys64\usr\bin\bash.exe -lc "ctest -VV -C Release"
|
|
}
|
|
- cd ..
|
|
|
|
artifacts:
|
|
- path: $(BUILD_ZIP)
|
|
name: build
|
|
type: zip
|
|
|
|
deploy:
|
|
provider: GitHub
|
|
release: $(appveyor_repo_tag_name)
|
|
auth_token:
|
|
secure: QqePPnXbkzmXct5c8hZ2X5AbsthbI6cS1Sr+VBzcD8oUOIjfWJJKXVAQGUbQAbb0
|
|
artifact: update,build
|
|
draft: false
|
|
prerelease: false
|
|
on:
|
|
appveyor_repo_tag: true
|