Bump LUS and fixed CI #304
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: GenerateBuilds | |
| on: | |
| push: | |
| env: | |
| # Allow actions still pinned to the deprecated Node 16 runtime to keep running. | |
| ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: "true" | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| generate-port-o2r: | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - uses: actions/checkout@v7 | |
| with: | |
| submodules: true | |
| fetch-depth: 0 # full history so the libultraship submodule gitlink resolves | |
| - name: Extract Project Version | |
| id: extract_version | |
| run: | | |
| VERSION=$(grep -oP '^\s*project\s*\([^)]*VERSION\s+\K[0-9\.]+' CMakeLists.txt) | |
| echo "Found version: $VERSION" | |
| echo "version=$VERSION" >> "$GITHUB_OUTPUT" | |
| - name: Install dependencies | |
| run: sudo apt-get install gcc g++ git cmake ninja-build lsb-release | |
| - name: ccache | |
| uses: hendrikmuhs/ccache-action@v1.2.13 | |
| with: | |
| key: ${{ runner.os }}-o2r-ccache-${{ github.ref }}-${{ github.sha }} | |
| restore-keys: | | |
| ${{ runner.os }}-o2r-ccache-${{ github.ref }} | |
| ${{ runner.os }}-o2r-ccache- | |
| - name: Cache build folders | |
| uses: actions/cache@v6 | |
| with: | |
| key: ${{ runner.os }}-o2r-build-${{ github.ref }}-${{ github.sha }} | |
| restore-keys: | | |
| ${{ runner.os }}-o2r-build-${{ github.ref }} | |
| ${{ runner.os }}-o2r-build- | |
| path: | | |
| Torch/cmake-build-release | |
| - name: Generate ghostship.o2r | |
| run: | | |
| export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" | |
| make -C Torch type=release -j3 | |
| Torch/cmake-build-release/torch pack port ghostship.o2r o2r -u ${{ steps.extract_version.outputs.version }} | |
| - uses: actions/upload-artifact@v4 | |
| with: | |
| name: ghostship.o2r | |
| path: ghostship.o2r | |
| retention-days: 1 | |
| build-windows: | |
| needs: generate-port-o2r | |
| runs-on: windows-2022 | |
| steps: | |
| - uses: actions/checkout@v7 | |
| with: | |
| submodules: recursive | |
| fetch-depth: 0 # full history so the libultraship submodule gitlink resolves | |
| - name: Setup MSVC | |
| uses: ilammy/msvc-dev-cmd@v1 | |
| - name: Setup Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.12' | |
| - name: Install Python dependencies | |
| run: pip install -r libultraship/requirements.txt | |
| - name: Cache Vulkan SDK | |
| uses: actions/cache@v6 | |
| with: | |
| key: windows-vulkan-sdk-v1 | |
| path: C:\VulkanSDK | |
| - name: Install Vulkan SDK | |
| shell: pwsh | |
| run: | | |
| # Skip the (large) download+install when the cache already restored the SDK. | |
| if (-not (Test-Path "C:\VulkanSDK\Lib")) { | |
| $url = "https://sdk.lunarg.com/sdk/download/latest/windows/vulkan_sdk.exe" | |
| Invoke-WebRequest -Uri $url -OutFile "$env:RUNNER_TEMP\vulkan_sdk.exe" | |
| $p = Start-Process -FilePath "$env:RUNNER_TEMP\vulkan_sdk.exe" -ArgumentList "--root","C:\VulkanSDK","--accept-licenses","--default-answer","--confirm-command","install" -Wait -PassThru | |
| if ($p.ExitCode -ne 0) { throw "Vulkan SDK install failed with exit code $($p.ExitCode)" } | |
| } | |
| "VULKAN_SDK=C:\VulkanSDK" | Out-File -FilePath $env:GITHUB_ENV -Append | |
| - name: Cache vcpkg binaries | |
| uses: actions/cache@v6 | |
| with: | |
| key: windows-vcpkg-${{ github.ref }}-${{ github.sha }} | |
| restore-keys: | | |
| windows-vcpkg-${{ github.ref }} | |
| windows-vcpkg- | |
| path: | | |
| ~\AppData\Local\vcpkg\archives | |
| - name: sccache | |
| uses: hendrikmuhs/ccache-action@v1.2.14 | |
| with: | |
| variant: sccache | |
| key: windows-sccache-${{ github.ref }}-${{ github.sha }} | |
| restore-keys: | | |
| windows-sccache-${{ github.ref }} | |
| windows-sccache- | |
| - name: Build | |
| run: | | |
| # Use the runner's preinstalled vcpkg (blanking VCPKG_ROOT made automate-vcpkg | |
| # try to clone into an empty path and fail). | |
| $env:VCPKG_ROOT=$env:VCPKG_INSTALLATION_ROOT | |
| # Ninja (single-config) so the compiler launcher works; sccache caches MSVC objects. | |
| # msvc-dev-cmd (arch x64) puts cl.exe on PATH; the x64-windows-static triplet is | |
| # set unconditionally in CMakeLists, so dropping -A x64 doesn't change it. | |
| cmake -S . -B "build/x64" -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache -DPython3_EXECUTABLE="$(python -c 'import sys; print(sys.executable)')" | |
| cmake --build ./build/x64 --parallel 10 | |
| - name: Download ghostship.o2r | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: ghostship.o2r | |
| path: ./build/x64 | |
| - name: Create Package | |
| run: | | |
| mkdir debug | |
| if (-Not (Test-Path "build/x64/.tcc")) { Write-Error "ERROR: .tcc not found in build/x64/"; exit 1 } | |
| mv build/x64/.tcc .tcc | |
| mv build/x64/Ghostship.exe . | |
| mv build/x64/tcc.dll . | |
| mv build/x64/ghostship.o2r . | |
| mv build/x64/*.pdb debug/ | |
| mv README.md readme.txt | |
| Invoke-WebRequest -Uri "https://raw.githubusercontent.com/mdqinc/SDL_GameControllerDB/master/gamecontrollerdb.txt" -OutFile "gamecontrollerdb.txt" | |
| - name: Upload build | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: Ghostship-windows | |
| include-hidden-files: true | |
| path: | | |
| .tcc | |
| Ghostship.exe | |
| tcc.dll | |
| ghostship.o2r | |
| debug | |
| readme.txt | |
| config.yml | |
| assets | |
| gamecontrollerdb.txt | |
| build-macos: | |
| needs: generate-port-o2r | |
| runs-on: macos-14 | |
| steps: | |
| - uses: actions/checkout@v7 | |
| with: | |
| submodules: recursive | |
| fetch-depth: 0 # full history so the libultraship submodule gitlink resolves | |
| - name: Configure ccache | |
| uses: hendrikmuhs/ccache-action@v1.2 | |
| with: | |
| create-symlink: true | |
| save: ${{ github.ref_name == github.event.repository.default_branch }} | |
| key: ${{ runner.os }}-14-ccache-${{ github.ref }}-${{ github.sha }} | |
| restore-keys: | | |
| ${{ runner.os }}-14-ccache-${{ github.ref }} | |
| ${{ runner.os }}-14-ccache | |
| # Needed to apply sudo for macports cache restore | |
| # - name: Install gtar wrapper | |
| # run: | | |
| # sudo mv /opt/homebrew/bin/gtar /opt/homebrew/bin/gtar.orig | |
| # sudo cp .github/workflows/gtar /opt/homebrew/bin/gtar | |
| # sudo chmod +x /opt/homebrew/bin/gtar | |
| - name: Restore Cached MacPorts | |
| id: restore-cache-macports | |
| uses: actions/cache/restore@v4 | |
| with: | |
| key: ${{ runner.os }}-14-macports-${{ github.ref }}-${{ github.sha }} | |
| restore-keys: | | |
| ${{ runner.os }}-14-macports-${{ github.ref }} | |
| ${{ runner.os }}-14-macports- | |
| path: /opt/local/ | |
| - name: Install MacPorts (if necessary) | |
| run: | | |
| if command -v /opt/local/bin/port 2>&1 >/dev/null; then | |
| echo "MacPorts already installed" | |
| else | |
| echo "Installing MacPorts" | |
| wget https://github.com/macports/macports-base/releases/download/v2.11.5/MacPorts-2.11.5-14-Sonoma.pkg | |
| sudo installer -pkg ./MacPorts-2.11.5-14-Sonoma.pkg -target / | |
| fi | |
| echo "/opt/local/bin:/opt/local/sbin" >> "$GITHUB_PATH" | |
| - name: Install Python dependencies | |
| run: python3 -m pip install -r libultraship/requirements.txt --break-system-packages || python3 -m pip install -r libultraship/requirements.txt | |
| - name: Install dependencies | |
| run: | | |
| brew uninstall --ignore-dependencies libpng | |
| sudo port install libsdl2 +universal libsdl2_net +universal libpng +universal glew +universal libzip +universal nlohmann-json +universal tinyxml2 +universal libogg +universal libopus +universal opusfile +universal libvorbis +universal mbedtls +universal vulkan-headers +universal vulkan-loader +universal MoltenVK +universal shaderc +universal | |
| brew install ninja | |
| - name: Build (Universal) | |
| run: | | |
| export PATH="/usr/lib/ccache:/opt/homebrew/opt/ccache/libexec:/usr/local/opt/ccache/libexec:$PATH" | |
| # MacPorts installs the (universal) Vulkan SDK under /opt/local; point the build | |
| # at it so find_package(Vulkan) + shaderc resolve and the Vulkan backend is built. | |
| export VULKAN_SDK=/opt/local | |
| cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -DPython3_EXECUTABLE=$(which python3) | |
| cmake --build build-cmake --config Release --parallel 10 | |
| - name: Download ghostship.o2r | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: ghostship.o2r | |
| path: ./build-cmake | |
| - name: Create Package | |
| run: | | |
| (cd build-cmake && cpack) | |
| mv _packages/*.dmg Ghostship.dmg | |
| ls -la build-cmake/.tcc || (echo "ERROR: .tcc not found in build-cmake/" && exit 1) | |
| cp -r build-cmake/.tcc .tcc | |
| mv README.md readme.txt | |
| - name: Publish packaged artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: Ghostship-mac | |
| include-hidden-files: true | |
| path: | | |
| .tcc | |
| Ghostship.dmg | |
| readme.txt | |
| - name: Save Cache MacPorts | |
| if: ${{ github.ref_name == github.event.repository.default_branch }} | |
| uses: actions/cache/save@v4 | |
| with: | |
| key: ${{ steps.restore-cache-macports.outputs.cache-primary-key }} | |
| path: /opt/local/ | |
| build-linux: | |
| needs: generate-port-o2r | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v7 | |
| with: | |
| submodules: recursive | |
| fetch-depth: 0 # full history so the libultraship submodule gitlink resolves | |
| - name: Update machine | |
| run: sudo apt update | |
| - name: Install dependencies | |
| run: sudo apt-get install gcc g++ git cmake ninja-build lsb-release libsdl2-dev libpng-dev libsdl2-net-dev libzip-dev zipcmp zipmerge ziptool nlohmann-json3-dev libtinyxml2-dev libspdlog-dev libboost-dev libopengl-dev libogg-dev libvorbis-dev libmbedtls-dev libvulkan-dev libshaderc-dev glslang-dev spirv-tools | |
| - name: ccache | |
| uses: hendrikmuhs/ccache-action@v1.2.14 | |
| with: | |
| key: linux-ccache-${{ github.ref }}-${{ github.sha }} | |
| restore-keys: | | |
| linux-ccache-${{ github.ref }} | |
| linux-ccache- | |
| - name: Cache build folders | |
| uses: actions/cache@v6 | |
| with: | |
| key: linux-build-${{ github.ref }}-${{ github.sha }} | |
| restore-keys: | | |
| linux-build-${{ github.ref }} | |
| linux-build- | |
| path: | | |
| SDL2-2.30.3 | |
| tinyxml2-10.0.0 | |
| libzip-1.10.1 | |
| - name: Install latest SDL | |
| run: | | |
| export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" | |
| if [ ! -d "SDL2-2.30.3" ]; then | |
| wget https://www.libsdl.org/release/SDL2-2.30.3.tar.gz | |
| tar -xzf SDL2-2.30.3.tar.gz | |
| fi | |
| cd SDL2-2.30.3 | |
| ./configure --enable-hidapi-libusb | |
| make -j 10 | |
| sudo make install | |
| sudo cp -av /usr/local/lib/libSDL* /lib/x86_64-linux-gnu/ | |
| - name: Install latest tinyxml2 | |
| run: | | |
| export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" | |
| if [ ! -d "tinyxml2-10.0.0" ]; then | |
| wget https://github.com/leethomason/tinyxml2/archive/refs/tags/10.0.0.tar.gz | |
| tar -xzf 10.0.0.tar.gz | |
| fi | |
| cd tinyxml2-10.0.0 | |
| mkdir -p build | |
| cd build | |
| cmake .. | |
| make | |
| sudo make install | |
| - name: Install libzip without crypto | |
| run: | | |
| export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" | |
| if [ ! -d "libzip-1.10.1" ]; then | |
| wget https://github.com/nih-at/libzip/releases/download/v1.10.1/libzip-1.10.1.tar.gz | |
| tar -xzf libzip-1.10.1.tar.gz | |
| fi | |
| cd libzip-1.10.1 | |
| mkdir -p build | |
| cd build | |
| cmake .. -DENABLE_COMMONCRYPTO=OFF -DENABLE_GNUTLS=OFF -DENABLE_MBEDTLS=OFF -DENABLE_OPENSSL=OFF | |
| make | |
| sudo make install | |
| sudo cp -av /usr/local/lib/libzip* /lib/x86_64-linux-gnu/ | |
| - name: Setup Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.12' | |
| - name: Install Python dependencies | |
| run: pip install -r libultraship/requirements.txt | |
| - name: Download ghostship.o2r | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: ghostship.o2r | |
| path: ./build-cmake | |
| - name: Build | |
| run: | | |
| # Route the compiler through ccache so the linux-ccache cache is actually used. | |
| cmake -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE=Release -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache -DPython3_EXECUTABLE=$(which python3) | |
| cmake --build build-cmake --config Release -j3 | |
| (cd build-cmake && cpack -G External) | |
| wget -O gamecontrollerdb.txt https://raw.githubusercontent.com/mdqinc/SDL_GameControllerDB/master/gamecontrollerdb.txt | |
| mv README.md readme.txt | |
| mv build-cmake/*.appimage ghostship.appimage | |
| ls -la build-cmake/.tcc || (echo "ERROR: .tcc not found in build-cmake/" && exit 1) | |
| cp -r build-cmake/.tcc .tcc | |
| - name: Upload build | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: Ghostship-linux | |
| include-hidden-files: true | |
| path: | | |
| .tcc | |
| ghostship.appimage | |
| config.yml | |
| readme.txt | |
| assets | |
| gamecontrollerdb.txt | |
| build-switch: | |
| needs: generate-port-o2r | |
| runs-on: ubuntu-latest | |
| container: | |
| image: devkitpro/devkita64:20260219 | |
| steps: | |
| - uses: actions/checkout@v7 | |
| with: | |
| submodules: recursive | |
| fetch-depth: 0 # full history so the libultraship submodule gitlink resolves | |
| # ccache-action doesn't run cleanly inside the devkitpro container, so cache the | |
| # ccache dir directly (workspace-relative so host and container share it). | |
| - name: Cache ccache | |
| uses: actions/cache@v6 | |
| with: | |
| key: switch-ccache-${{ github.ref }}-${{ github.sha }} | |
| restore-keys: | | |
| switch-ccache-${{ github.ref }} | |
| switch-ccache- | |
| path: | | |
| .ccache | |
| - name: Install dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y ninja-build ccache | |
| sudo apt-get remove -y cmake | |
| sudo dkp-pacman -R --noconfirm switch-tinyxml2 # devkitPro's tinyxml2 is too old and causes build issues | |
| export CFLAGS="${CFLAGS} -include strings.h" # weird libzip error (pulled in by LUS) that only happens in CI and not for SoH | |
| git -C libultraship remote add nx https://github.com/Net64DD/libultraship.git | |
| git -C libultraship fetch nx | |
| git -C libultraship checkout nx/main-nx-nightly | |
| wget https://github.com/Kitware/CMake/releases/download/v3.28.3/cmake-3.28.3-linux-x86_64.sh -O /tmp/cmake.sh | |
| sudo sh /tmp/cmake.sh --prefix=/usr/local/ --exclude-subdir | |
| # Route the devkitA64 cross-compiler through ccache; CCACHE_DIR is workspace-relative | |
| # so the cached dir restored on the host is visible inside the container. | |
| export CCACHE_DIR="$GITHUB_WORKSPACE/.ccache" | |
| cmake -H. -Bbuild-switch -GNinja -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/Switch.cmake -DCMAKE_BUILD_TYPE:STRING=Release -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache | |
| cmake --build build-switch --config Release -j3 | |
| wget -O gamecontrollerdb.txt https://raw.githubusercontent.com/mdqinc/SDL_GameControllerDB/refs/heads/master/gamecontrollerdb.txt | |
| mv README.md readme.txt | |
| mv build-switch/*.nro Ghostship.nro | |
| - name: Download ghostship.o2r | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: ghostship.o2r | |
| - name: Upload build | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: Ghostship-switch | |
| path: | | |
| Ghostship.nro | |
| ghostship.o2r | |
| config.yml | |
| assets | |
| gamecontrollerdb.txt |