commit
6e471512b8
4 changed files with 240 additions and 118 deletions
105
.github/workflows/ci.yml
vendored
Normal file
105
.github/workflows/ci.yml
vendored
Normal file
|
|
@ -0,0 +1,105 @@
|
||||||
|
name: CI
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: master
|
||||||
|
pull_request:
|
||||||
|
branches: master
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
#SWIGJOBS: ["-j2"]
|
||||||
|
# other variables to optionally set
|
||||||
|
# CC, GCC (used as suffix)
|
||||||
|
# CPP11, CPP14, CPP17
|
||||||
|
# CONFIGOPTS
|
||||||
|
# SWIGLANG
|
||||||
|
# PY3,VER
|
||||||
|
# SWIG_FEATURES
|
||||||
|
include:
|
||||||
|
- os: ubuntu-latest
|
||||||
|
CPP11: 1
|
||||||
|
SWIGLANG: ""
|
||||||
|
- os: ubuntu-latest
|
||||||
|
CPP11: 1
|
||||||
|
SWIGLANG: python
|
||||||
|
- os: ubuntu-latest
|
||||||
|
CPP11: 1
|
||||||
|
SWIGLANG: python
|
||||||
|
PY3: 3
|
||||||
|
- os: ubuntu-latest
|
||||||
|
CPP11: 1
|
||||||
|
SWIGLANG: tcl
|
||||||
|
# let's run all of them, as opposed to aborting when one fails
|
||||||
|
fail-fast: false
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
- name: ccache
|
||||||
|
uses: hendrikmuhs/ccache-action@v1
|
||||||
|
with:
|
||||||
|
key: ${{ matrix.os }}-${{ matrix.SWIGLANG }}
|
||||||
|
- name: configure
|
||||||
|
shell: bash
|
||||||
|
env:
|
||||||
|
SWIGLANG: ${{ matrix.SWIGLANG }}
|
||||||
|
CONFIGOPTS: ${{ matrix.CONFIGOPTS }}
|
||||||
|
CC: ${{ matrix.CC }}
|
||||||
|
run: |
|
||||||
|
set -ex
|
||||||
|
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
|
||||||
|
source Tools/GHA-linux-install.sh
|
||||||
|
if test -n "$CPP11"; then CONFIGOPTS+=(--enable-cpp11-testing "CXXFLAGS=-std=c++11 $CXXFLAGS" "CFLAGS=-std=c11 $CFLAGS") && export CSTD=c11 && export CPPSTD=c++11; fi
|
||||||
|
if test -n "$CPP14"; then CONFIGOPTS+=(--enable-cpp11-testing "CXXFLAGS=-std=c++14 $CXXFLAGS" "CFLAGS=-std=c11 $CFLAGS") && export CSTD=c11 && export CPPSTD=c++14; fi
|
||||||
|
if test -n "$CPP17"; then CONFIGOPTS+=(--enable-cpp11-testing "CXXFLAGS=-std=c++17 $CXXFLAGS" "CFLAGS=-std=c17 $CFLAGS") && export CSTD=c17 && export CPPSTD=c++17; fi
|
||||||
|
if test -n "$SWIGLANG"; then CONFIGOPTS+=(--without-alllang --with-$WITHLANG); fi
|
||||||
|
echo "${CONFIGOPTS[@]}"
|
||||||
|
./autogen.sh && mkdir -p build/build && cd build/build && ../../configure "${CONFIGOPTS[@]}"
|
||||||
|
|
||||||
|
- name: build
|
||||||
|
shell: bash
|
||||||
|
env:
|
||||||
|
SWIGLANG: ${{ matrix.SWIGLANG }}
|
||||||
|
SWIGJOBS: ${{ matrix.SWIGJOBS }}
|
||||||
|
run: |
|
||||||
|
set -ex
|
||||||
|
cd ${GITHUB_WORKSPACE}/build/build;
|
||||||
|
make -s $SWIGJOBS
|
||||||
|
./swig -version && ./swig -pcreversion
|
||||||
|
if test -z "$SWIGLANG"; then make -s $SWIGJOBS check-ccache; fi
|
||||||
|
if test -z "$SWIGLANG"; then make -s $SWIGJOBS check-errors-test-suite; fi
|
||||||
|
echo 'Installing...'
|
||||||
|
if test -z "$SWIGLANG"; then sudo make -s install && swig -version && ccache-swig -V; fi
|
||||||
|
- name: tests
|
||||||
|
shell: bash
|
||||||
|
env:
|
||||||
|
SWIGLANG: ${{ matrix.SWIGLANG }}
|
||||||
|
SWIGJOBS: ${{ matrix.SWIGJOBS }}
|
||||||
|
SWIG_FEATURES: ${{ matrix.SWIG_FEATURES }}
|
||||||
|
CC: ${{ matrix.CC }}
|
||||||
|
CSTD: ${{ matrix.CSTD }}
|
||||||
|
CPP11: ${{ matrix.CPP11 }}
|
||||||
|
CPP14: ${{ matrix.CPP14 }}
|
||||||
|
CPP17: ${{ matrix.CPP17 }}
|
||||||
|
run: |
|
||||||
|
set -ex
|
||||||
|
cd ${GITHUB_WORKSPACE}/build/build;
|
||||||
|
if test -n "$CPP11"; then export CPPSTD=c++11; fi
|
||||||
|
if test -n "$CPP14"; then export CPPSTD=c++14; fi
|
||||||
|
if test -n "$CPP17"; then export CPPSTD=c++17; fi
|
||||||
|
# Stricter compile flags for examples. Various headers and SWIG generated code prevents full use of -pedantic.
|
||||||
|
if test -n "$SWIGLANG"; then cflags=$($GITHUB_WORKSPACE/Tools/testflags.py --language $SWIGLANG --cflags --std=$CSTD --compiler=$CC) && echo $cflags; fi
|
||||||
|
if test -n "$SWIGLANG"; then cxxflags=$($GITHUB_WORKSPACE/Tools/testflags.py --language $SWIGLANG --cxxflags --std=$CPPSTD --compiler=$CC) && echo $cxxflags; fi
|
||||||
|
if test -n "$SWIGLANG"; then make -s check-$SWIGLANG-version; fi
|
||||||
|
if test -n "$SWIGLANG"; then make check-$SWIGLANG-enabled; fi
|
||||||
|
if test -n "$SWIGLANG"; then make $SWIGJOBS check-$SWIGLANG-examples CFLAGS="$cflags" CXXFLAGS="$cxxflags"; fi
|
||||||
|
if test -n "$SWIGLANG"; then make $SWIGJOBS check-$SWIGLANG-test-suite CFLAGS="$cflags" CXXFLAGS="$cxxflags"; fi
|
||||||
|
#echo 'Cleaning...'
|
||||||
|
# Skip on osx as often fails with: rm: Resource temporarily unavailable
|
||||||
|
#if test "$TRAVIS_OS_NAME" != "osx"; then make check-maintainer-clean && ../../configure $CONFIGOPTS; fi
|
||||||
121
Tools/CI-linux-install.sh
Normal file
121
Tools/CI-linux-install.sh
Normal file
|
|
@ -0,0 +1,121 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# expected to be called from elsewhere with certain variables set
|
||||||
|
# e.g. RETRY=travis-retry SWIGLANG=python GCC=7
|
||||||
|
set -e # exit on failure (same as -o errexit)
|
||||||
|
|
||||||
|
if [[ -n "$GCC" ]]; then
|
||||||
|
$RETRY sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
|
||||||
|
$RETRY sudo apt-get -qq update
|
||||||
|
$RETRY sudo apt-get install -qq g++-$GCC
|
||||||
|
fi
|
||||||
|
|
||||||
|
$RETRY sudo apt-get -qq install libboost-dev libpcre3-dev
|
||||||
|
# testflags.py needs python
|
||||||
|
$RETRY sudo apt-get install -qq python
|
||||||
|
|
||||||
|
WITHLANG=$SWIGLANG
|
||||||
|
|
||||||
|
case "$SWIGLANG" in
|
||||||
|
"") ;;
|
||||||
|
"csharp")
|
||||||
|
$RETRY sudo apt-get -qq install mono-devel
|
||||||
|
;;
|
||||||
|
"d")
|
||||||
|
$RETRY wget http://downloads.dlang.org/releases/2.x/${VER}/dmd_${VER}-0_amd64.deb
|
||||||
|
$RETRY sudo dpkg -i dmd_${VER}-0_amd64.deb
|
||||||
|
;;
|
||||||
|
"go")
|
||||||
|
if [[ "$VER" ]]; then
|
||||||
|
eval "$(gimme ${VER}.x)"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
"javascript")
|
||||||
|
case "$ENGINE" in
|
||||||
|
"node")
|
||||||
|
$RETRY wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.10/install.sh | bash
|
||||||
|
export NVM_DIR="$HOME/.nvm"
|
||||||
|
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
|
||||||
|
$RETRY nvm install ${VER}
|
||||||
|
nvm use ${VER}
|
||||||
|
if [ "$VER" == "0.10" ] || [ "$VER" == "0.12" ] || [ "$VER" == "4" ] || [ "$VER" == "6" ] ; then
|
||||||
|
# $RETRY sudo apt-get install -qq nodejs node-gyp
|
||||||
|
$RETRY npm install -g node-gyp@$VER
|
||||||
|
elif [ "$VER" == "8" ] ; then
|
||||||
|
$RETRY npm install -g node-gyp@6
|
||||||
|
elif [ "$VER" == "10" ] || [ "$VER" == "12" ] || [ "$VER" == "14" ] || [ "$VER" == "16" ]; then
|
||||||
|
$RETRY npm install -g node-gyp@7
|
||||||
|
else
|
||||||
|
$RETRY npm install -g node-gyp
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
"jsc")
|
||||||
|
$RETRY sudo apt-get install -qq libwebkitgtk-dev
|
||||||
|
;;
|
||||||
|
"v8")
|
||||||
|
$RETRY sudo apt-get install -qq libv8-dev
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
"guile")
|
||||||
|
$RETRY sudo apt-get -qq install guile-2.0-dev
|
||||||
|
;;
|
||||||
|
"lua")
|
||||||
|
if [[ -z "$VER" ]]; then
|
||||||
|
$RETRY sudo apt-get -qq install lua5.2 liblua5.2-dev
|
||||||
|
else
|
||||||
|
$RETRY sudo apt-get -qq install lua${VER} liblua${VER}-dev
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
"mzscheme")
|
||||||
|
$RETRY sudo apt-get -qq install racket
|
||||||
|
;;
|
||||||
|
"ocaml")
|
||||||
|
$RETRY sudo apt-get -qq install ocaml camlp4
|
||||||
|
;;
|
||||||
|
"octave")
|
||||||
|
$RETRY sudo apt-get -qq install liboctave-dev
|
||||||
|
;;
|
||||||
|
"php")
|
||||||
|
$RETRY sudo add-apt-repository -y ppa:ondrej/php
|
||||||
|
$RETRY sudo apt-get -qq update
|
||||||
|
$RETRY sudo apt-get -qq install php$VER-cli php$VER-dev
|
||||||
|
;;
|
||||||
|
"python")
|
||||||
|
pip install --user pycodestyle
|
||||||
|
if [[ "$VER" ]]; then
|
||||||
|
$RETRY sudo add-apt-repository -y ppa:deadsnakes/ppa
|
||||||
|
$RETRY sudo apt-get -qq update
|
||||||
|
$RETRY sudo apt-get -qq install python${VER}-dev
|
||||||
|
WITHLANG=$SWIGLANG$PY3=$SWIGLANG$VER
|
||||||
|
else
|
||||||
|
$RETRY sudo apt-get install -qq python${PY3}-dev
|
||||||
|
WITHLANG=$SWIGLANG$PY3
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
"r")
|
||||||
|
$RETRY sudo apt-get -qq install r-base
|
||||||
|
;;
|
||||||
|
"ruby")
|
||||||
|
if [[ "$VER" == "2.7" || "$VER" == "3.0" ]]; then
|
||||||
|
# Ruby 2.7+ support is currently only rvm master (30 Dec 2019)
|
||||||
|
$RETRY rvm get master
|
||||||
|
rvm reload
|
||||||
|
rvm list known
|
||||||
|
fi
|
||||||
|
if [[ "$VER" ]]; then
|
||||||
|
$RETRY rvm install $VER
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
"scilab")
|
||||||
|
# Travis has the wrong version of Java pre-installed resulting in error using scilab:
|
||||||
|
# /usr/bin/scilab-bin: error while loading shared libraries: libjava.so: cannot open shared object file: No such file or directory
|
||||||
|
echo "JAVA_HOME was set to $JAVA_HOME"
|
||||||
|
unset JAVA_HOME
|
||||||
|
$RETRY sudo apt-get -qq install scilab
|
||||||
|
;;
|
||||||
|
"tcl")
|
||||||
|
$RETRY sudo apt-get -qq install tcl-dev
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
set +e # turn off exit on failure (same as +o errexit)
|
||||||
9
Tools/GHA-linux-install.sh
Normal file
9
Tools/GHA-linux-install.sh
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
#lsb_release -a
|
||||||
|
# find location of current script (only works in bash)
|
||||||
|
script_dir="$( dirname "${BASH_SOURCE[0]}")"
|
||||||
|
|
||||||
|
# run generic script
|
||||||
|
RETRY=
|
||||||
|
source "$script_dir"/CI-linux-install.sh
|
||||||
|
|
@ -2,123 +2,10 @@
|
||||||
|
|
||||||
# Install Linux packages where the version has been overidden in .travis.yml
|
# Install Linux packages where the version has been overidden in .travis.yml
|
||||||
|
|
||||||
set -e # exit on failure (same as -o errexit)
|
|
||||||
|
|
||||||
lsb_release -a
|
lsb_release -a
|
||||||
travis_retry sudo apt-get -qq update
|
# find location of current script (only works in bash)
|
||||||
|
script_dir="$( dirname "${BASH_SOURCE[0]}")"
|
||||||
|
|
||||||
if [[ -n "$GCC" ]]; then
|
# run generic script
|
||||||
travis_retry sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
|
RETRY=travis-retry
|
||||||
travis_retry sudo apt-get -qq update
|
source "$script_dir"/CI-linux-install.sh
|
||||||
travis_retry sudo apt-get install -qq g++-$GCC
|
|
||||||
fi
|
|
||||||
|
|
||||||
travis_retry sudo apt-get -qq install libboost-dev libpcre3-dev
|
|
||||||
|
|
||||||
WITHLANG=$SWIGLANG
|
|
||||||
|
|
||||||
case "$SWIGLANG" in
|
|
||||||
"") ;;
|
|
||||||
"csharp")
|
|
||||||
travis_retry sudo apt-get -qq install mono-devel
|
|
||||||
;;
|
|
||||||
"d")
|
|
||||||
travis_retry wget http://downloads.dlang.org/releases/2.x/${VER}/dmd_${VER}-0_amd64.deb
|
|
||||||
travis_retry sudo dpkg -i dmd_${VER}-0_amd64.deb
|
|
||||||
;;
|
|
||||||
"go")
|
|
||||||
if [[ "$VER" ]]; then
|
|
||||||
eval "$(gimme ${VER}.x)"
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
"javascript")
|
|
||||||
case "$ENGINE" in
|
|
||||||
"node")
|
|
||||||
travis_retry wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.10/install.sh | bash
|
|
||||||
export NVM_DIR="$HOME/.nvm"
|
|
||||||
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
|
|
||||||
travis_retry nvm install ${VER}
|
|
||||||
nvm use ${VER}
|
|
||||||
if [ "$VER" == "0.10" ] || [ "$VER" == "0.12" ] || [ "$VER" == "4" ] || [ "$VER" == "6" ] ; then
|
|
||||||
# travis_retry sudo apt-get install -qq nodejs node-gyp
|
|
||||||
travis_retry npm install -g node-gyp@$VER
|
|
||||||
elif [ "$VER" == "8" ] ; then
|
|
||||||
travis_retry npm install -g node-gyp@6
|
|
||||||
elif [ "$VER" == "10" ] || [ "$VER" == "12" ] || [ "$VER" == "14" ] || [ "$VER" == "16" ]; then
|
|
||||||
travis_retry npm install -g node-gyp@7
|
|
||||||
else
|
|
||||||
travis_retry npm install -g node-gyp
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
"jsc")
|
|
||||||
travis_retry sudo apt-get install -qq libwebkitgtk-dev
|
|
||||||
;;
|
|
||||||
"v8")
|
|
||||||
travis_retry sudo apt-get install -qq libv8-dev
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
"guile")
|
|
||||||
travis_retry sudo apt-get -qq install guile-2.0-dev
|
|
||||||
;;
|
|
||||||
"lua")
|
|
||||||
if [[ -z "$VER" ]]; then
|
|
||||||
travis_retry sudo apt-get -qq install lua5.2 liblua5.2-dev
|
|
||||||
else
|
|
||||||
travis_retry sudo apt-get -qq install lua${VER} liblua${VER}-dev
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
"mzscheme")
|
|
||||||
travis_retry sudo apt-get -qq install racket
|
|
||||||
;;
|
|
||||||
"ocaml")
|
|
||||||
travis_retry sudo apt-get -qq install ocaml camlp4
|
|
||||||
;;
|
|
||||||
"octave")
|
|
||||||
travis_retry sudo apt-get -qq install liboctave-dev
|
|
||||||
;;
|
|
||||||
"php")
|
|
||||||
travis_retry sudo add-apt-repository -y ppa:ondrej/php
|
|
||||||
travis_retry sudo apt-get -qq update
|
|
||||||
travis_retry sudo apt-get -qq install php$VER-cli php$VER-dev
|
|
||||||
;;
|
|
||||||
"python")
|
|
||||||
pip install --user pycodestyle
|
|
||||||
if [[ "$PY3" ]]; then
|
|
||||||
travis_retry sudo apt-get install -qq python3-dev
|
|
||||||
fi
|
|
||||||
WITHLANG=$SWIGLANG$PY3
|
|
||||||
if [[ "$VER" ]]; then
|
|
||||||
travis_retry sudo add-apt-repository -y ppa:deadsnakes/ppa
|
|
||||||
travis_retry sudo apt-get -qq update
|
|
||||||
travis_retry sudo apt-get -qq install python${VER}-dev
|
|
||||||
WITHLANG=$SWIGLANG$PY3=$SWIGLANG$VER
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
"r")
|
|
||||||
travis_retry sudo apt-get -qq install r-base
|
|
||||||
;;
|
|
||||||
"ruby")
|
|
||||||
if [[ "$VER" == "2.7" || "$VER" == "3.0" ]]; then
|
|
||||||
# Ruby 2.7+ support is currently only rvm master (30 Dec 2019)
|
|
||||||
travis_retry rvm get master
|
|
||||||
rvm reload
|
|
||||||
rvm list known
|
|
||||||
fi
|
|
||||||
if [[ "$VER" ]]; then
|
|
||||||
travis_retry rvm install $VER
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
"scilab")
|
|
||||||
# Travis has the wrong version of Java pre-installed resulting in error using scilab:
|
|
||||||
# /usr/bin/scilab-bin: error while loading shared libraries: libjava.so: cannot open shared object file: No such file or directory
|
|
||||||
echo "JAVA_HOME was set to $JAVA_HOME"
|
|
||||||
unset JAVA_HOME
|
|
||||||
travis_retry sudo apt-get -qq install scilab
|
|
||||||
;;
|
|
||||||
"tcl")
|
|
||||||
travis_retry sudo apt-get -qq install tcl-dev
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
set +e # turn off exit on failure (same as +o errexit)
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue