diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 000000000..17af62cb1 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,106 @@ +name: Build + +on: [push, pull_request] + +jobs: + build: + runs-on: ubuntu-18.04 + steps: + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install \ + libsdl-image1.2-dev \ + libsdl-ttf2.0-dev \ + libsdl1.2-dev \ + libxml-libxml-perl \ + libxml-libxslt-perl \ + lua5.3 \ + ninja-build \ + zlib1g-dev + sudo pip3 install --system sphinx + - name: Clone DFHack + uses: actions/checkout@v1 + with: + submodules: true + - name: Set up environment + run: | + echo export DF_VERSION="$(sh travis/get-df-version.sh)" >> "$HOME/.df-env" + echo export DF_FOLDER="$HOME/DF/$DF_VERSION/df_linux" >> "$HOME/.df-env" + - name: Download DF + run: | + source "$HOME/.df-env" + sh travis/download-df.sh + - name: Build docs + run: | + sphinx-build -qW -j3 . docs/html + - name: Upload docs + uses: actions/upload-artifact@v1 + with: + name: docs + path: docs/html + - name: Build DFHack + run: | + source "$HOME/.df-env" + cmake \ + -S . \ + -B build-ci \ + -G Ninja \ + -DDFHACK_BUILD_ARCH=64 \ + -DBUILD_DOCS:BOOL=ON \ + -DBUILD_TESTS:BOOL=ON \ + -DCMAKE_INSTALL_PREFIX="$DF_FOLDER" + ninja -C build-ci install + - name: Run tests + run: | + source "$HOME/.df-env" + export TERM=dumb + mv "$DF_FOLDER"/dfhack.init-example "$DF_FOLDER"/dfhack.init + script -qe -c "python travis/run-tests.py --headless --keep-status \"$DF_FOLDER\"" + python travis/check-rpc.py "$DF_FOLDER/dfhack-rpc.txt" + mkdir -p artifacts + cp "$DF_FOLDER/test_status.json" "$DF_FOLDER"/*.log artifacts + - name: Upload test artifacts + uses: actions/upload-artifact@v1 + if: success() || failure() + with: + name: test-artifacts + path: artifacts + lint: + runs-on: ubuntu-18.04 + steps: + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install \ + lua5.3 \ + ruby + - name: Clone DFHack + uses: actions/checkout@v1 + with: + submodules: true + - name: Check whitespace + run: | + python travis/lint.py + - name: Check Authors.rst + run: | + python travis/authors-rst.py + - name: Check for missing documentation + run: | + python travis/script-docs.py + - name: Check Lua syntax + run: | + python travis/script-syntax.py --ext=lua --cmd="luac5.3 -p" + - name: Check Ruby syntax + run: | + python travis/script-syntax.py --ext=rb --cmd="ruby -c" + 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 diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index c096552bc..000000000 --- a/.travis.yml +++ /dev/null @@ -1,64 +0,0 @@ -sudo: false -language: cpp -cache: - pip: true - directories: - - $HOME/DF-travis - - $HOME/lua53 -addons: - apt: - packages: &default_packages - - libsdl-image1.2-dev - - libsdl-ttf2.0-dev - - libsdl1.2-dev - - libxml-libxml-perl - - libxml-libxslt-perl - - ninja-build - - zlib1g-dev -matrix: - include: - - env: GCC_VERSION=4.8 - addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - *default_packages - - gcc-4.8 - - g++-4.8 -before_install: -- export DF_VERSION=$(sh travis/get-df-version.sh) -- export DF_FOLDER="$HOME/DF-travis/$DF_VERSION/df_linux" -- pip install --user "sphinx==1.4" "requests[security]" -- sh travis/build-lua.sh -- sh travis/download-df.sh -script: -- export PATH="$PATH:$HOME/lua53/bin" -- git tag tmp-travis-build -- sh travis/git-info.sh -- sphinx-build -qW -j3 . docs/html -- python travis/pr-check-base.py -- python travis/lint.py -- python travis/authors-rst.py -- python travis/script-docs.py -- python travis/script-syntax.py --ext=lua --cmd="luac5.3 -p" -- python travis/script-syntax.py --ext=rb --cmd="ruby -c" -- mkdir build-travis -- cd build-travis -- cmake .. -G Ninja -DCMAKE_C_COMPILER=gcc-$GCC_VERSION -DCMAKE_CXX_COMPILER=g++-$GCC_VERSION -DDFHACK_BUILD_ARCH=64 -DBUILD_DOCS:BOOL=ON -DBUILD_TESTS:BOOL=ON -DCMAKE_INSTALL_PREFIX="$DF_FOLDER" -- ninja -j3 install -- mv "$DF_FOLDER"/dfhack.init-example "$DF_FOLDER"/dfhack.init -- cd .. -- python travis/run-tests.py --headless --keep-status "$DF_FOLDER" -- python travis/check-rpc.py "$DF_FOLDER/dfhack-rpc.txt" -- cat "$DF_FOLDER/test_status.json" -before_cache: -- cat "$DF_FOLDER/stderr.log" -- rm -rf "$DF_FOLDER" -notifications: - email: false - irc: - channels: - - "chat.freenode.net#dfhack" - on_success: change - on_failure: always diff --git a/README.md b/README.md index fd95e1e5e..a0499a333 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # DFHack Readme -[![Build Status](https://travis-ci.org/DFHack/dfhack.svg?branch=develop)](https://travis-ci.org/DFHack/dfhack) +[![Build Status](https://github.com/DFHack/dfhack/workflows/Build/badge.svg)](https://github.com/DFHack/dfhack/actions?query=workflow%3ABuild) [![Documentation Status](https://readthedocs.org/projects/dfhack/badge)](https://dfhack.readthedocs.org) [![License](https://img.shields.io/badge/license-ZLib-blue.svg)](https://en.wikipedia.org/wiki/Zlib_License) diff --git a/conf.py b/conf.py index bfd69d828..2f47d5644 100644 --- a/conf.py +++ b/conf.py @@ -174,7 +174,7 @@ def all_keybinds_documented(): plugin_binds = set(re.findall(':dfhack-keybind:`(.*?)`', f.read())) undocumented_binds = configured_binds - script_commands - plugin_binds if undocumented_binds: - raise ValueError('The following DFHack commands have undocumented' + raise ValueError('The following DFHack commands have undocumented ' 'keybindings: {}'.format(sorted(undocumented_binds))) diff --git a/travis/build-lua.sh b/travis/build-lua.sh deleted file mode 100644 index e29d7ce87..000000000 --- a/travis/build-lua.sh +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/sh - -set -e - -LUA_ROOT="$HOME/lua53" -LUA_URL="http://www.lua.org/ftp/lua-5.3.3.tar.gz" -LUA_TAR=$(basename "$LUA_URL") -LUA_DIR="$LUA_ROOT/${LUA_TAR%.tar.*}" -LUA_SHA1="a0341bc3d1415b814cc738b2ec01ae56045d64ef" - -echo LUA_ROOT $LUA_ROOT -echo LUA_TAR $LUA_TAR -echo LUA_DIR $LUA_DIR - -sha1() { - python -c 'import hashlib, sys; print(hashlib.sha1(open(sys.argv[1],"rb").read()).hexdigest())' "$1" -} - -download() { - echo "Downloading $LUA_URL" - wget -O "$LUA_ROOT/$LUA_TAR" "$LUA_URL" - tar xvf "$LUA_ROOT/$LUA_TAR" -} - -build() { - cd "$LUA_DIR/src" - make generic -} - -main() { - mkdir -p "$LUA_ROOT" - cd "$LUA_ROOT" - mkdir -p bin - - if [ "$(sha1 "$LUA_ROOT/$LUA_TAR" 2>/dev/null)" != "$LUA_SHA1" ]; then - download - build - else - echo "Already downloaded" - - if [ -x "$LUA_DIR/src/luac" ]; then - echo "Already built" - else - build - fi - fi - - echo "Linking" - ln -sf "$LUA_DIR/src/lua" "$LUA_ROOT/bin/lua5.3" - ln -sf "$LUA_DIR/src/luac" "$LUA_ROOT/bin/luac5.3" - echo "Done" -} - -main diff --git a/travis/git-info.sh b/travis/git-info.sh deleted file mode 100644 index 333d13bc1..000000000 --- a/travis/git-info.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -git log --pretty="commit %h (parents: %p): %s" -1 diff --git a/travis/pr-check-base.py b/travis/pr-check-base.py deleted file mode 100644 index 47605b051..000000000 --- a/travis/pr-check-base.py +++ /dev/null @@ -1,18 +0,0 @@ -import os, sys -repo = os.environ.get('TRAVIS_REPO_SLUG', 'dfhack/dfhack').lower() -branch = os.environ.get('TRAVIS_BRANCH', 'master') -try: - pr_id = int(os.environ.get('TRAVIS_PULL_REQUEST', 'false')) -except ValueError: - print('Not a pull request') - sys.exit(0) -print('Pull request %s#%i' % (repo, pr_id)) -if repo != 'dfhack/dfhack': - print('Not in dfhack/dfhack') - sys.exit(0) -if branch != 'develop': - print('Not based on develop branch') - sys.exit(1) -else: - print('Ok') - sys.exit(0)