Skip to content

optimize some of our math #2912

optimize some of our math

optimize some of our math #2912

Workflow file for this run

name: Builders
on:
push:
branches: [ master ]
tags: [ '**' ]
pull_request:
branches: [ master ]
jobs:
macos:
name: MacOS build
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Homebrew
run: |
brew install sdl2 openal-soft sdl2_mixer libpng libvorbis sccache googletest
- name: Set up build
run: |
# FindOpenAL prefers the framework version by default ... which deprecated OpenAL
openal="-DOPENAL_INCLUDE_DIR=/usr/local/opt/openal-soft/include/AL -DOPENAL_LIBRARY=/usr/local/opt/openal-soft/lib/libopenal.dylib"
mkdir build && cd build &&
export OPENALDIR="/usr/local/opt/openal-soft/" &&
cmake --version &&
cmake -DCMAKE_INSTALL_PREFIX=iprefix $openal -DCMAKE_FIND_FRAMEWORK=LAST -DUSE_OPENAL=off -DUSE_TESTS=ON ..
grep -i openal CMakeCache.txt
- name: Compiler cache (sccache)
uses: actions/cache@v4
with:
path: |
~/.cache/sccache
~/Library/Caches/Mozilla.sccache
key: ${{ runner.os }}-sccache-v1-${{ github.ref }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-sccache-v1-${{ github.ref }}-
${{ runner.os }}-sccache-v1-refs/heads/master-
${{ runner.os }}-sccache-v1-
- name: Build & Test
run: |
cd build &&
make &&
make test &&
# try to only run on tag pushes
if grep -q '^v[01]\.[0-9].[0-9]' <<< "${GITHUB_REF}"; then make fetch-demo-data; fi &&
make install
- name: Show build cache stats
run: |
command -v sccache &&
sccache -s
- name: Set up SSH
uses: kielabokkie/ssh-key-and-known-hosts-action@v1
if: github.event_name == 'push'
with:
ssh-private-key: ${{ secrets.SSH_SF_PRIVATE_KEY }}
ssh-host: frs.sourceforge.net
- name: Upload
if: github.event_name == 'push'
run: |
# NOTE: only do it on clang builds if we ever add more compilers
filepath=Apple/OSX
tarpath=/Applications/GemRB.app
# there are no tags, so improvise
version=$({ date +%F; git describe --always; } | tr -d '\n') || exit 14
file=gemrb-$version.tar.bz2
tar cjf $file $tarpath || exit 15
filepath="$filepath/$file"
scp $file \
gemrb-travisbot@frs.sourceforge.net:/home/frs/project/gemrb/Buildbot\\\ Binaries/$filepath
linux:
name: Linux AppImage build
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install zlib1g zlib1g-dev libsdl2-2.0-0 libsdl2-dev libopenal1 libopenal-dev libsdl2-mixer-dev libfreetype6 libfreetype6-dev libvlc-dev libpng16-16 libpng-dev libvorbis0a libvorbis-dev python3-dev zstd g++-7 gdb libgtest-dev
SCCACHE_VERSION="v0.2.15"
SCCACHE_LINUX_PACKAGE="sccache-${SCCACHE_VERSION}-x86_64-unknown-linux-musl"
curl -sSfL "https://github.com/mozilla/sccache/releases/download/${SCCACHE_VERSION}/${SCCACHE_LINUX_PACKAGE}.tar.gz" | sudo tar zx --strip-component=1 -C /usr/bin/
chmod +x /usr/bin/sccache
- name: Set up build
env:
CXX: g++-7
CC: gcc-7
run: |
mkdir build && cd build
cmake --version
cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DSTATIC_LINK=1 -DAPPIMAGE=1 -DUSE_TESTS=ON
- name: Compiler cache (sccache)
uses: actions/cache@v4
with:
path: |
~/.cache/sccache
~/Library/Caches/Mozilla.sccache
key: ${{ runner.os }}-sccache-v1-${{ github.ref }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-sccache-v1-${{ github.ref }}-
${{ runner.os }}-sccache-v1-refs/heads/master-
${{ runner.os }}-sccache-v1-
- name: Build
run: |
cd build
make
# install big demo data only on tag pushes
if grep -q '^v[01]\.[0-9].[0-9]' <<< "${GITHUB_REF}"; then make fetch-demo-data; fi
# create a debugging runner, since xvfb runs one command per process only
echo "ulimit -Sc unlimited; sudo sysctl -w kernel.core_pattern=$PWD/core-%e" >> run-or-dump.sh
echo 'if ! gemrb/gemrb -q --color 2 -c ../gemrb/GemRB.cfg.noinstall.sample; then' >> run-or-dump.sh
echo 'gdb -q -c core-* -ex bt -ex q -batch --args gemrb/gemrb -q -c ../gemrb/GemRB.cfg.noinstall.sample' >> run-or-dump.sh
echo "exit 1; fi" >> run-or-dump.sh
chmod +x run-or-dump.sh
- name: Test Suite
run: |
cd build
make test
- name: Test Run
run: |
cd build
xvfb-run ./run-or-dump.sh
- name: Prepare AppImage
run: |
cd build
# fetch appimage tools
curl https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage -L -o linuxdeploy
curl https://github.com/TheAssassin/appimagelint/releases/download/continuous/appimagelint-x86_64.AppImage -L -o appimagelint
chmod +x linuxdeploy appimagelint
chmod +x linuxdeploy
echo "::group::AppImage building"
make appimage
ln -s GemRB-*.AppImage grrr-gemrb.AppImage # workaround for xvfb
echo "::endgroup::"
# check if it works on old systems
echo "::group::AppImage conformance testing"
./appimagelint GemRB-*.AppImage
echo "::endgroup::"
- name: Test AppImage
run: |
cd build
xvfb-run ./grrr-gemrb.AppImage -q ../gemrb/tests/minimal/
- name: Show build cache stats
run: |
command -v sccache
sccache -s
- name: Set up SSH
uses: kielabokkie/ssh-key-and-known-hosts-action@v1
if: github.event_name == 'push'
with:
ssh-private-key: ${{ secrets.SSH_SF_PRIVATE_KEY }}
ssh-host: frs.sourceforge.net
- name: Upload
if: github.event_name == 'push'
run: |
# NOTE: only do it on gcc builds if we ever add more compilers
filepath=Linux
filei=build/GemRB-*.AppImage
fileo=GemRB-$(date +%F)-${GITHUB_REF##*/}-${GITHUB_SHA:0:10}-x86_64.AppImage
filepath="$filepath/$fileo"
scp $filei \
gemrb-travisbot@frs.sourceforge.net:/home/frs/project/gemrb/Buildbot\\\ Binaries/$filepath