name: generate-builds on: push: pull_request: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: # build-linux-self-hosted: # strategy: # fail-fast: true # runs-on: [self-hosted, Linux] # steps: # - uses: actions/checkout@v4 # with: # submodules: true # - name: Install dependencies # run: | # sudo apt update # sudo apt install -y $(cat .github/workflows/apt-deps.txt) file # - name: Install latest SDL # run: | # export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" # if [ ! -d "SDL2-2.26.1" ]; then # wget https://www.libsdl.org/release/SDL2-2.26.1.tar.gz # tar -xzf SDL2-2.26.1.tar.gz # fi # cd SDL2-2.26.1 # ./configure # make -j # sudo make install # sudo cp -av /usr/local/lib/libSDL* /lib/x86_64-linux-gnu/ # - name: Build 2Ship # run: | # export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" # cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release # cmake --build build-cmake --config Release --target Generate2ShipOtr -j # cmake --build build-cmake --config Release -j # (cd build-cmake && cpack -G External) # mv README.md readme.txt # mv build-cmake/*.appimage 2ship.appimage # env: # CC: gcc # CXX: g++ # # - name: Upload build # # uses: actions/upload-artifact@v4 # # with: # # name: 2ship-linux # # path: | # # 2ship.appimage # # readme.txt # build-windows-self-hosted: # runs-on: [self-hosted, Windows] # steps: # - name: Install dependencies # run: | # choco install ninja -y # choco install gzip -y # Add-Content $env:GITHUB_PATH $env:ChocolateyInstall # - uses: actions/checkout@v4 # with: # submodules: true # - name: Configure Developer Command Prompt # uses: ilammy/msvc-dev-cmd@v1 # - name: Copy Rom # run: Copy-Item -Path C:\baserom_mm.z64 -Destination ${{github.workspace}}/OTRExporter/baserom.z64 # - name: Build 2Ship # env: # VCPKG_ROOT: ${{github.workspace}}/vcpkg # run: | # set $env:PATH="$env:USERPROFILE/.cargo/bin;$env:PATH" # cmake -S . -B build-windows -G Ninja -DCMAKE_MAKE_PROGRAM=ninja -DCMAKE_BUILD_TYPE:STRING=Release # cmake --build build-windows --config Release --target Generate2ShipOtr --parallel 10 # cmake --build build-windows --config Release --parallel 10 # (cd build-windows && cpack) # cd .. # mv _packages/*.zip _packages/2ship-windows.zip # # Temporarily replaced with an upload to R2 until we go public # # - name: Unzip package # # run: Expand-Archive -Path 2ship-windows.zip -DestinationPath 2ship-windows # # - name: Upload build # # if: ${{ startsWith(github.ref, 'refs/heads/develop') }} # # uses: actions/upload-artifact@v4 # # with: # # name: 2ship-windows # # path: 2ship-windows # - name: Upload build # if: ${{ startsWith(github.ref, 'refs/heads/develop') }} # uses: ryand56/r2-upload-action@latest # with: # r2-account-id: ${{ secrets.R2_ACCOUNT_ID }} # r2-access-key-id: ${{ secrets.R2_ACCESS_KEY_ID }} # r2-secret-access-key: ${{ secrets.R2_SECRET_ACCESS_KEY }} # r2-bucket: ${{ secrets.R2_BUCKET }} # source-dir: _packages # destination-dir: ./ # generate-2ship-otr: # runs-on: ubuntu-22.04 # steps: # - uses: actions/checkout@v4 # with: # submodules: true # - name: ccache # uses: hendrikmuhs/ccache-action@v1.2.11 # with: # key: ${{ runner.os }}-otr-ccache-${{ github.ref }}-${{ github.sha }} # restore-keys: | # ${{ runner.os }}-otr-ccache-${{ github.ref }} # ${{ runner.os }}-otr-ccache # - name: Install dependencies # run: | # sudo apt-get update # sudo apt-get install -y $(cat .github/workflows/apt-deps.txt) # - name: Cache build folders # uses: actions/cache@v4 # with: # key: ${{ runner.os }}-otr-build-${{ github.ref }}-${{ github.sha }} # restore-keys: | # ${{ runner.os }}-otr-build-${{ github.ref }} # ${{ runner.os }}-otr-build # path: | # build-cmake # SDL2-2.28.5 # tinyxml2-10.0.0 # - name: Install latest SDL # run: | # export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" # if [ ! -d "SDL2-2.28.5" ]; then # wget https://www.libsdl.org/release/SDL2-2.28.5.tar.gz # tar -xzf SDL2-2.28.5.tar.gz # fi # cd SDL2-2.28.5 # ./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: | # sudo apt-get remove libtinyxml2-dev # 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: Generate 2ship.o2r # run: | # export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" # cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release # cmake --build build-cmake --config Release --target Generate2ShipOtr -j3 # - uses: actions/upload-artifact@v4 # with: # name: 2ship.o2r # path: 2ship.o2r # retention-days: 1 build-macos: # needs: generate-2ship-otr runs-on: macos-14 steps: - uses: actions/checkout@v4 with: submodules: true - name: ccache uses: hendrikmuhs/ccache-action@v1.2.13 with: create-symlink: true key: ${{ runner.os }}-14-ccache-${{ github.ref }}-${{ github.sha }} restore-keys: | ${{ runner.os }}-14-ccache-${{ github.ref }} ${{ runner.os }}-14-ccache - name: Cache MacPorts id: cache-macports uses: actions/cache@v4 with: path: /opt/local/ key: ${{ runner.os }}-macports-${{ hashFiles('.github/workflows/macports-deps.txt') }} restore-keys: | ${{ runner.os }}-macports - name: Install MacPorts (if necessary) run: | if [ -d /opt/local/ ]; then echo "MacPorts already installed" else wget https://github.com/macports/macports-base/releases/download/v2.9.3/MacPorts-2.9.3-14-Sonoma.pkg sudo installer -pkg ./MacPorts-2.9.3-14-Sonoma.pkg -target / fi echo "/opt/local/bin:/opt/local/sbin" >> $GITHUB_PATH - name: Install dependencies run: | brew uninstall --ignore-dependencies libpng sudo port install $(cat .github/workflows/macports-deps.txt) brew install ninja # - name: Download 2ship.o2r # uses: actions/download-artifact@v4 # with: # name: 2ship.o2r # path: build-cmake/mm - name: Build 2Ship run: | export PATH="/usr/lib/ccache:/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" cmake --build build-cmake --config Release --target Generate2ShipOtr --parallel 10 cmake --build build-cmake --config Release --parallel 10 (cd build-cmake && cpack) mv _packages/*.dmg 2Ship.dmg mv README.md readme.txt # - name: Upload build # if: ${{ startsWith(github.ref, 'refs/heads/develop') }} # uses: actions/upload-artifact@v4 # with: # name: 2ship-mac # path: | # 2Ship.dmg # readme.txt - name: Zip build run: | mkdir -p _release zip -qq _release/2ship-mac.zip 2ship.dmg readme.txt - name: Upload build if: ${{ startsWith(github.ref, 'refs/heads/develop') }} uses: ryand56/r2-upload-action@latest with: r2-account-id: ${{ secrets.R2_ACCOUNT_ID }} r2-access-key-id: ${{ secrets.R2_ACCESS_KEY_ID }} r2-secret-access-key: ${{ secrets.R2_SECRET_ACCESS_KEY }} r2-bucket: ${{ secrets.R2_BUCKET }} source-dir: _release destination-dir: ./ build-linux: # needs: generate-2ship-otr runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 with: submodules: true - name: Install dependencies run: | sudo apt-get update sudo apt-get install -y $(cat .github/workflows/apt-deps.txt) - name: ccache uses: hendrikmuhs/ccache-action@v1.2.11 with: key: linux-ccache-${{ github.ref }}-${{ github.sha }} restore-keys: | linux-ccache-${{ github.ref }} linux-ccache - name: Cache build folders uses: actions/cache@v4 with: key: linux-build-${{ github.ref }}-${{ github.sha }} restore-keys: | linux-build-${{ github.ref }} linux-build path: | SDL2-2.28.5 SDL2_net-2.2.0 tinyxml2-10.0.0 - name: Install latest SDL run: | export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" if [ ! -d "SDL2-2.28.5" ]; then wget https://www.libsdl.org/release/SDL2-2.28.5.tar.gz tar -xzf SDL2-2.28.5.tar.gz fi cd SDL2-2.28.5 ./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: | sudo apt-get remove libtinyxml2-dev 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 latest SDL_net run: | export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" if [ ! -d "SDL2_net-2.2.0" ]; then wget https://www.libsdl.org/projects/SDL_net/release/SDL2_net-2.2.0.tar.gz tar -xzf SDL2_net-2.2.0.tar.gz fi cd SDL2_net-2.2.0 ./configure make -j 10 sudo make install sudo cp -av /usr/local/lib/libSDL* /lib/x86_64-linux-gnu/ # - name: Download 2ship.o2r # uses: actions/download-artifact@v4 # with: # name: 2ship.o2r # path: build-cmake/mm - name: Build 2Ship run: | export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" cmake --no-warn-unused-cli -H. -Bbuild-cmake -GNinja -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_REMOTE_CONTROL=1 cmake --build build-cmake --config Release --target Generate2ShipOtr -j3 cmake --build build-cmake --config Release -j3 (cd build-cmake && cpack -G External) mv README.md readme.txt mv build-cmake/*.appimage 2ship.appimage env: CC: gcc-12 CXX: g++-12 # Temporarily replaced with an upload to R2 until we go public # - name: Upload build # uses: actions/upload-artifact@v4 # with: # name: 2ship-linux # path: | # 2ship.appimage # readme.txt # Remove Zip step when uploading directly to GH artifactory - name: Zip build run: | mkdir -p _release zip -qq _release/2ship-linux.zip 2ship.appimage readme.txt - name: Upload build if: ${{ startsWith(github.ref, 'refs/heads/develop') }} uses: ryand56/r2-upload-action@latest with: r2-account-id: ${{ secrets.R2_ACCOUNT_ID }} r2-access-key-id: ${{ secrets.R2_ACCESS_KEY_ID }} r2-secret-access-key: ${{ secrets.R2_SECRET_ACCESS_KEY }} r2-bucket: ${{ secrets.R2_BUCKET }} source-dir: _release destination-dir: ./ build-windows: # needs: generate-2ship-otr runs-on: windows-latest steps: - name: Install dependencies run: | choco install ninja -y Remove-Item -Path "C:\ProgramData\Chocolatey\bin\ccache.exe" -Force -ErrorAction SilentlyContinue - uses: actions/checkout@v4 with: submodules: true - name: ccache uses: hendrikmuhs/ccache-action@v1.2.11 with: variant: sccache max-size: "1G" key: ${{ runner.os }}-ccache-${{ github.ref }}-${{ github.sha }} restore-keys: | ${{ runner.os }}-ccache-${{ github.ref }} ${{ runner.os }}-ccache - name: Cache build folder uses: actions/cache@v4 with: save-always: true key: ${{ runner.os }}-build-${{ github.ref }}-${{ github.sha }} restore-keys: | ${{ runner.os }}-build-${{ github.ref }} ${{ runner.os }}-build path: | build-windows vcpkg - name: Configure Developer Command Prompt uses: ilammy/msvc-dev-cmd@v1 # - name: Download 2ship.o2r # uses: actions/download-artifact@v4 # with: # name: 2ship.o2r # path: build-windows/mm - name: Build 2Ship env: VCPKG_ROOT: ${{github.workspace}}/vcpkg run: | set $env:PATH="$env:USERPROFILE/.cargo/bin;$env:PATH" cmake -S . -B build-windows -G Ninja -DCMAKE_MAKE_PROGRAM=ninja -DCMAKE_BUILD_TYPE:STRING=Release cmake --build build-windows --config Release --target Generate2ShipOtr --parallel 10 cmake --build build-windows --config Release --parallel 10 (cd build-windows && cpack) cd .. mv _packages/*.zip _packages/2ship-windows.zip # Temporarily replaced with an upload to R2 until we go public # - name: Unzip package # run: Expand-Archive -Path _packages/2ship-windows.zip -DestinationPath 2ship-windows # - name: Upload build # if: ${{ startsWith(github.ref, 'refs/heads/develop') }} # uses: actions/upload-artifact@v4 # with: # name: 2ship-windows # path: 2ship-windows - name: Upload build if: ${{ startsWith(github.ref, 'refs/heads/develop') }} uses: ryand56/r2-upload-action@latest with: r2-account-id: ${{ secrets.R2_ACCOUNT_ID }} r2-access-key-id: ${{ secrets.R2_ACCESS_KEY_ID }} r2-secret-access-key: ${{ secrets.R2_SECRET_ACCESS_KEY }} r2-bucket: ${{ secrets.R2_BUCKET }} source-dir: _packages destination-dir: ./