Skip to content

SDL2_mixer + libxmp #329

SDL2_mixer + libxmp

SDL2_mixer + libxmp #329

Workflow file for this run

name: CI
on:
workflow_dispatch:
push:
branches:
- master
pull_request:
repository_dispatch:
types: [run_build]
jobs:
# Check code formatting correctness
# -----------------------------------------------------------------------------------------------
formatting-check:
name: Formatting Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run clang-format style check
uses: jidicula/clang-format-action@v4.5.0
with:
clang-format-version: '13'
# Run unittests on modern-ish versions of gcc and clang.
# -----------------------------------------------------------------------------------------------
unittest:
name: Run unit-tests on ${{ matrix.config.name }}
runs-on: ubuntu-latest
env:
CC: ${{ matrix.config.cc }}
strategy:
fail-fast: false
matrix:
config:
- { name: "gcc 11", cc: gcc-11, tidy: "On" }
- { name: "clang 11", cc: clang-11, tidy: "Off" }
steps:
- uses: actions/checkout@v3
- name: Install Ubuntu Dependencies
run: |
sudo apt-get update
sudo apt-get -y install cmake cmake-data libargtable2-dev libcunit1-dev \
libsdl2-mixer-dev libconfuse-dev libenet-dev libsdl2-dev libxmp-dev libpng-dev \
clang-tidy ${{ matrix.config.cc }}
- name: Build tests
run: |
mkdir build-test && cd build-test
cmake -DCMAKE_BUILD_TYPE=Debug \
-DUSE_TIDY=${{ matrix.config.tidy }} \
-DUSE_TESTS=On \
-DUSE_TOOLS=On ..
make -j2
- name: Run tests
run: |
cd build-test
make test ARGS="-V"
# Build ubuntu package, release artifact and update "latest" release if necessary.
# -----------------------------------------------------------------------------------------------
build_ubuntu:
needs: [unittest, formatting-check]
name: Build ubuntu-latest
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Ubuntu Dependencies
run: |
sudo apt-get update
sudo apt-get -y install cmake libargtable2-dev libcunit1-dev libsdl2-mixer-dev \
libconfuse-dev libenet-dev libsdl2-dev libxmp-dev libpng-dev
- name: Generate Release
run: |
mkdir build-release && cd build-release
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=release ..
make -j2
make install
- name: Get short SHA
id: slug
run: echo "sha8=`echo ${GITHUB_SHA} | cut -c1-8`" >> $GITHUB_OUTPUT
- name: Generate TGZ package
run: tar cvfz ${GITHUB_WORKSPACE}/openomf_0.6.6-${{ steps.slug.outputs.sha8 }}_linux_amd64.tar.gz -C build-release/release/ .
- name: Upload TGZ artifact
uses: actions/upload-artifact@v3
with:
name: openomf_0.6.6-${{ steps.slug.outputs.sha8 }}_linux_amd64
path: openomf_0.6.6-${{ steps.slug.outputs.sha8 }}_linux_amd64.tar.gz
- name: Generate DEB package
uses: jiro4989/build-deb-action@v2
with:
package: openomf
package_root: build-release/release
maintainer: ${{ github.repository_owner }}
version: 0.6.6-${{ steps.slug.outputs.sha8 }}
arch: 'amd64'
depends: 'libargtable2, libsdl2-mixer, libconfuse, libenet, libsdl2, libxmp, libpng'
desc: 'One Must Fall 2097 Remake'
- name: Upload DEB artifact
uses: actions/upload-artifact@v3
with:
name: openomf_0.6.6-${{ steps.slug.outputs.sha8 }}_deb_amd64
path: openomf_0.6.6-${{ steps.slug.outputs.sha8 }}_amd64.deb
# Build macos package, release artifact and update "latest" release if necessary.
# -----------------------------------------------------------------------------------------------
build_macos:
needs: [unittest, formatting-check]
name: Build macos-11
runs-on: macos-11
steps:
- uses: actions/checkout@v3
- name: Install Mac Dependencies
run: |
brew update
brew install cmake argtable cunit sdl2_mixer confuse enet sdl2 libxmp libpng
- name: Generate Release
run: |
mkdir build-release && cd build-release
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=release ..
make -j3
make install
- name: Get short SHA
id: slug
run: echo "sha8=`echo ${GITHUB_SHA} | cut -c1-8`" >> $GITHUB_OUTPUT
- name: Generate ZIP package
run: |
cd build-release/release
zip -r ${GITHUB_WORKSPACE}/openomf_0.6.6-${{ steps.slug.outputs.sha8 }}_macos11.zip .
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: openomf_0.6.6-${{ steps.slug.outputs.sha8 }}_macos11
path: openomf_0.6.6-${{ steps.slug.outputs.sha8 }}_macos11.zip
# Build windows package, release artifact and update "latest" release if necessary.
# -----------------------------------------------------------------------------------------------
build_windows:
needs: [unittest, formatting-check]
name: Build windows-amd64
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Dependencies
run: |
sudo apt-get update
sudo apt-get -y install mingw-w64 unzip
wget -q https://github.com/omf2097/openomf-win-build/archive/refs/heads/main.zip
unzip -q main.zip && rm main.zip
- name: Generate Windows Release
run: |
mkdir build-release && cd build-release
cmake -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=release \
-DCMAKE_TOOLCHAIN_FILE="${GITHUB_WORKSPACE}/cmake-scripts/mingw-w64-toolchain.cmake" \
-DCMAKE_PREFIX_PATH="${GITHUB_WORKSPACE}/openomf-win-build-main/" \
-DCMAKE_INCLUDE_PATH="${GITHUB_WORKSPACE}/openomf-win-build-main/include/" \
-DCMAKE_LIBRARY_PATH="${GITHUB_WORKSPACE}/openomf-win-build-main/lib/" \
-DCMAKE_FIND_ROOT_PATH="${GITHUB_WORKSPACE}/openomf-win-build-main/" \
"${GITHUB_WORKSPACE}"
make -j2
make install
cp ${GITHUB_WORKSPACE}/openomf-win-build-main/bin/*.dll release/openomf/
- name: Get short SHA
id: slug
run: echo "sha8=`echo ${GITHUB_SHA} | cut -c1-8`" >> $GITHUB_OUTPUT
- name: Generate ZIP package
run: |
cd build-release/release
zip -r ${GITHUB_WORKSPACE}/openomf_0.6.6-${{ steps.slug.outputs.sha8 }}_windows_amd64.zip openomf
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: openomf_0.6.6-${{ steps.slug.outputs.sha8 }}_windows_amd64
path: openomf_0.6.6-${{ steps.slug.outputs.sha8 }}_windows_amd64.zip
# Create a "latest" release
# -----------------------------------------------------------------------------------------------
make_release:
needs: [build_windows, build_macos, build_ubuntu]
if: github.ref == 'refs/heads/master'
name: Make "latest" release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: '0'
- uses: actions/download-artifact@v3
with:
path: artifacts/
- name: Advance tag
uses: actions/github-script@v6
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
try {
await github.rest.git.deleteRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: "tags/latest"
})
} catch (e) {
console.log("The 'latest' tag doesn't exist yet", e)
}
try {
await github.rest.git.createRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: "refs/tags/latest",
sha: context.sha
})
} catch (e) {
console.log("Unable to create 'latest' tag", e)
}
- name: Extract ubuntu releases
run: |
mkdir upload
shopt -s globstar
for file in artifacts/**; do
if [ -f "$file" ]; then
cp "$file" "${GITHUB_WORKSPACE}/upload/"
fi
done
- uses: ncipollo/release-action@v1
with:
artifacts: "upload/*"
body: "Latest release from master. Note that this is autogenerated release, and should only be used for testing purposes."
name: Latest
tag: latest
allowUpdates: true
prerelease: true
removeArtifacts: true
token: ${{ secrets.GITHUB_TOKEN }}