Added a pair of new events #290
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: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| generate-port-o2r: | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - 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@v5 | |
| 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@v4 | |
| with: | |
| submodules: recursive | |
| - 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 vcpkg | |
| uses: actions/cache@v4 | |
| with: | |
| key: ${{ runner.os }}-vcpkg-x64-static-${{ hashFiles('CMakeLists.txt', 'cmake/automate-vcpkg.cmake') }} | |
| restore-keys: | | |
| ${{ runner.os }}-vcpkg-x64-static- | |
| path: | | |
| build/x64/vcpkg | |
| build/x64/vcpkg_installed | |
| build/x64/vcpkg/downloads | |
| - name: Build | |
| run: | | |
| $env:VCPKG_ROOT="" | |
| cmake -S . -B "build/x64" -G "Visual Studio 17 2022" -T v143 -A x64 -DCMAKE_BUILD_TYPE=Release -DPython3_EXECUTABLE="$(python -c 'import sys; print(sys.executable)')" | |
| cmake --build ./build/x64 --config Release --parallel 10 | |
| - name: Download ghostship.o2r | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: ghostship.o2r | |
| path: ./build/x64/Release | |
| - name: Create Package | |
| run: | | |
| mkdir debug | |
| if (-Not (Test-Path "build/x64/Release/.tcc")) { Write-Error "ERROR: .tcc not found in build/x64/Release/"; exit 1 } | |
| mv build/x64/Release/.tcc .tcc | |
| mv build/x64/Release/Ghostship.exe . | |
| mv build/x64/Release/tcc.dll . | |
| mv build/x64/Release/ghostship.o2r . | |
| mv build/x64/Release/*.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@v4 | |
| with: | |
| submodules: recursive | |
| - 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 | |
| brew install ninja | |
| - name: Build (Universal) | |
| run: | | |
| export PATH="/usr/lib/ccache:/opt/homebrew/opt/ccache/libexec:/usr/local/opt/ccache/libexec:$PATH" | |
| 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@v4 | |
| with: | |
| submodules: recursive | |
| - 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 | |
| - 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@v5 | |
| 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" | |
| wget https://github.com/leethomason/tinyxml2/archive/refs/tags/10.0.0.tar.gz | |
| tar -xzf 10.0.0.tar.gz | |
| 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: | | |
| cmake -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE=Release -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@v4 | |
| with: | |
| submodules: recursive | |
| - name: Install dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y ninja-build | |
| 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 | |
| cmake -H. -Bbuild-switch -GNinja -DCMAKE_TOOLCHAIN_FILE=/opt/devkitpro/cmake/Switch.cmake -DCMAKE_BUILD_TYPE:STRING=Release | |
| 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 |