[zone] properly handle animals in cages in non-cage buildings #5443
Workflow file for this run
This file contains 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: Build | |
on: [push, pull_request] | |
jobs: | |
build: | |
runs-on: ${{ matrix.os }} | |
name: build (Linux, GCC ${{ matrix.gcc }}, ${{ matrix.plugins }} plugins) | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- ubuntu-22.04 | |
gcc: | |
- 10 | |
plugins: | |
- default | |
include: | |
- os: ubuntu-22.04 | |
gcc: 12 | |
plugins: all | |
steps: | |
- name: Set up Python 3 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3 | |
- name: Install dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install \ | |
ccache \ | |
libgtk2.0-0 \ | |
libncursesw5 \ | |
libsdl-image1.2-dev \ | |
libsdl-ttf2.0-dev \ | |
libsdl1.2-dev \ | |
libxml-libxml-perl \ | |
libxml-libxslt-perl \ | |
lua5.3 \ | |
ninja-build \ | |
zlib1g-dev | |
pip install 'sphinx<4.4.0' | |
- name: Install GCC | |
run: | | |
sudo apt-get install gcc-${{ matrix.gcc }} g++-${{ matrix.gcc }} | |
- name: Clone DFHack | |
uses: actions/checkout@v1 | |
with: | |
fetch-depth: 0 # unlimited - we need past tags | |
submodules: true | |
- name: Set up environment | |
id: env_setup | |
run: | | |
DF_VERSION="$(sh ci/get-df-version.sh)" | |
echo "df_version=${DF_VERSION}" >> $GITHUB_OUTPUT | |
echo "DF_VERSION=${DF_VERSION}" >> $GITHUB_ENV | |
echo "DF_FOLDER=${HOME}/DF/${DF_VERSION}/df_linux" >> $GITHUB_ENV | |
echo "CCACHE_DIR=${HOME}/.ccache" >> $GITHUB_ENV | |
# - name: Fetch DF cache | |
# uses: actions/cache@v3 | |
# with: | |
# path: ~/DF | |
# key: dfcache-${{ steps.env_setup.outputs.df_version }}-${{ hashFiles('ci/download-df.sh') }} | |
- name: Fetch ccache | |
uses: actions/cache@v3 | |
with: | |
path: ~/.ccache | |
key: ccache-${{ matrix.os }}-gcc-${{ matrix.gcc }}-${{ github.ref_name }}-${{ github.sha }} | |
restore-keys: | | |
ccache-${{ matrix.os }}-gcc-${{ matrix.gcc }}-${{ github.ref_name }} | |
ccache-${{ matrix.os }}-gcc-${{ matrix.gcc }} | |
# - name: Download DF | |
# run: | | |
# sh ci/download-df.sh | |
- name: Configure DFHack | |
env: | |
CC: gcc-${{ matrix.gcc }} | |
CXX: g++-${{ matrix.gcc }} | |
run: | | |
cmake \ | |
-S . \ | |
-B build-ci \ | |
-G Ninja \ | |
-DDFHACK_BUILD_ARCH=64 \ | |
-DBUILD_TESTS:BOOL=ON \ | |
-DBUILD_DEV_PLUGINS:BOOL=${{ matrix.plugins == 'all' }} \ | |
-DBUILD_SIZECHECK:BOOL=${{ matrix.plugins == 'all' }} \ | |
-DBUILD_SKELETON:BOOL=${{ matrix.plugins == 'all' }} \ | |
-DBUILD_STONESENSE:BOOL=${{ matrix.plugins == 'all' }} \ | |
-DBUILD_SUPPORTED:BOOL=1 \ | |
-DCMAKE_C_COMPILER_LAUNCHER=ccache \ | |
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ | |
-DCMAKE_INSTALL_PREFIX="$DF_FOLDER" | |
- name: Build DFHack | |
run: | | |
ninja -C build-ci install | |
ccache --max-size 50M | |
ccache --cleanup | |
ccache --show-stats | |
- name: Run cpp unit tests | |
id: run_tests_cpp | |
run: | | |
ninja -C build-ci test | |
exit $? | |
# - name: Run lua tests | |
# id: run_tests_lua | |
# run: | | |
# export TERM=dumb | |
# status=0 | |
# script -qe -c "python ci/run-tests.py --headless --keep-status \"$DF_FOLDER\"" || status=$((status + 1)) | |
# python ci/check-rpc.py "$DF_FOLDER/dfhack-rpc.txt" || status=$((status + 2)) | |
# mkdir -p artifacts | |
# cp "$DF_FOLDER"/test*.json "$DF_FOLDER"/*.log artifacts || status=$((status + 4)) | |
# exit $status | |
# - name: Upload test artifacts | |
# uses: actions/upload-artifact@v1 | |
# if: (success() || failure()) && steps.run_tests.outcome != 'skipped' | |
# continue-on-error: true | |
# with: | |
# name: test-artifacts-${{ matrix.gcc }} | |
# path: artifacts | |
- name: Clean up DF folder | |
# prevent DFHack-generated files from ending up in the cache | |
# (download-df.sh also removes them, this is just to save cache space) | |
if: success() || failure() | |
run: | | |
rm -rf "$DF_FOLDER" | |
build-cross-win64: | |
name: Build MSVC win64 | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Install dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install ccache | |
- name: Clone DFHack | |
uses: actions/checkout@v3 | |
with: | |
submodules: true | |
fetch-depth: 0 | |
- name: Fetch ccache | |
uses: actions/cache@v3 | |
with: | |
path: build/win64-cross/ccache | |
key: ccache-win64-cross-msvc-${{ github.ref_name }}-${{ github.sha }} | |
restore-keys: | | |
ccache-win64-cross-msvc-${{ github.ref_name }} | |
ccache-win64-cross-msvc | |
- name: Cross-compile win64 artifacts | |
env: | |
CMAKE_EXTRA_ARGS: '-DBUILD_STONESENSE:BOOL=1' | |
run: | | |
cd build | |
bash -x build-win64-from-linux.sh | |
ccache -d win64-cross/ccache --max-size 200M | |
ccache -d win64-cross/ccache --cleanup | |
ccache -d win64-cross/ccache --show-stats | |
- name: Format artifact name | |
id: artifactname | |
run: | | |
echo name=$(date +%Y%m%d)-$(git rev-parse --short HEAD) >> $GITHUB_OUTPUT | |
- name: Upload win64 artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: dfhack-win64-build-${{ steps.artifactname.outputs.name }} | |
path: build/win64-cross/output/* | |
docs: | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Set up Python 3 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3 | |
- name: Install dependencies | |
run: | | |
pip install 'sphinx' | |
- name: Clone DFHack | |
uses: actions/checkout@v1 | |
with: | |
submodules: true | |
- name: Build docs | |
run: | | |
sphinx-build -W --keep-going -j auto --color . docs/html | |
lint: | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Set up Python 3 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: 3 | |
- name: Install Lua | |
run: | | |
sudo apt-get update | |
sudo apt-get install lua5.3 | |
- name: Clone DFHack | |
uses: actions/checkout@v1 | |
with: | |
submodules: true | |
# don't need tags here | |
- name: Check whitespace | |
run: | | |
python ci/lint.py --git-only --github-actions | |
- name: Check Authors.rst | |
if: success() || failure() | |
run: | | |
python ci/authors-rst.py | |
- name: Check for missing documentation | |
if: success() || failure() | |
run: | | |
python ci/script-docs.py | |
- name: Check Lua syntax | |
if: success() || failure() | |
run: | | |
python ci/script-syntax.py --ext=lua --cmd="luac5.3 -p" --github-actions | |
check-pr: | |
runs-on: ubuntu-latest | |
if: github.event_name == 'pull_request' | |
steps: | |
- name: Check that PR is based on develop branch | |
env: | |
BASE_BRANCH: ${{ github.base_ref }} | |
run: | | |
echo "PR base branch: $BASE_BRANCH" | |
test "$BASE_BRANCH" = develop |