From 23f91005d6c8f5c1e87e219a21f86465399d202c Mon Sep 17 00:00:00 2001 From: Misa Date: Fri, 11 Feb 2022 15:37:11 -0800 Subject: [PATCH] Windows CI build: Ditch vcpkg This replaces vcpkg with simply downloading the pre-compiled dependencies from official upstream releases. The rationale is that vcpkg is sometimes really slow to update to the latest SDL version when it releases, and also that it requires the runner to compile SDL every single time it's instantiated, which is slow and wasteful. Instead, download the pre-compiled binaries of SDL from its release page on GitHub. This way, we don't have to compile it ourselves, and we aren't waiting on vcpkg whenever SDL releases a new version. And for good measure, cache it so we aren't downloading it _every_ time, which is even more efficient. The same can't be done for SDL_mixer, though, because it doesn't have a GitHub release page with pre-compiled binaries. Instead, we'll download them from libsdl.org, which is an infrastructure that takes more strain than if we used GitHub instead. But, it shouldn't matter anyways, because we cahe this too. And we are going to ditch SDL_mixer for FAudio in 2.4 anyways, so it's a moot point either way. --- .github/workflows/ci.yml | 42 +++++++++++++++++++++++++++++++++++----- 1 file changed, 37 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fa59a418..d04ec807 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -112,20 +112,52 @@ jobs: runs-on: windows-latest + env: + SDL_VERSION: 2.0.20 + SDL_MIXER_VERSION: 2.0.4 + steps: - uses: actions/checkout@v1 - - name: Install dependencies (Windows) + - name: Cache SDL + uses: actions/cache@v2 + env: + cache-name: cache-sdl + with: + path: C:\SDL + key: ${{ runner.os }}-build-${{ env.cache-name }} + + - name: Cache SDL_mixer + uses: actions/cache@v2 + env: + cache-name: cache-sdl-mixer + with: + path: C:\SDL_mixer + key: ${{ runner.os }}-build-${{ env.cache-name }} + + - name: Download SDL if not cached run: | - vcpkg install sdl2 sdl2-mixer + if (-Not (Test-Path C:\SDL)) + { + Invoke-WebRequest "https://github.com/libsdl-org/SDL/releases/download/release-$env:SDL_VERSION/SDL2-devel-$env:SDL_VERSION-VC.zip" -o C:\SDL.zip + Expand-Archive C:\SDL.zip -DestinationPath C:\ + } + + - name: Download SDL_mixer if not cached + run: | + if (-Not (Test-Path C:\SDL_mixer)) + { + Invoke-WebRequest "https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-devel-$env:SDL_MIXER_VERSION-VC.zip" -o C:\SDL_mixer.zip + Expand-Archive C:\SDL_mixer.zip -DestinationPath C:\ + } - name: CMake configure (default version) run: | cd $env:SRC_DIR_PATH - $env:LDFLAGS = "/LIBPATH:$env:VCPKG_INSTALLATION_ROOT\installed\x86-windows\lib " - $env:LDFLAGS += "/LIBPATH:$env:VCPKG_INSTALLATION_ROOT\installed\x86-windows\lib\manual-link" + $env:LDFLAGS = "/LIBPATH:C:\SDL2-$env:SDL_VERSION\lib\x86 " + $env:LDFLAGS += "/LIBPATH:C:\SDL2_mixer-$env:SDL_MIXER_VERSION\lib\x86" cmake -G "Visual Studio 16 2019" -A Win32 ` - -DSDL2_INCLUDE_DIRS="$env:VCPKG_INSTALLATION_ROOT\installed\x86-windows\include\SDL2" ` + -DSDL2_INCLUDE_DIRS="C:\SDL2-$env:SDL_VERSION\include;C:\SDL2_mixer-$env:SDL_MIXER_VERSION\include" ` -DSDL2_LIBRARIES="SDL2;SDL2main;SDL2_mixer" . - name: Build (default version) run: |