this will stay like this for now #235
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: JavaScript CI | |
on: | |
push: | |
branches: | |
- '*' | |
- '!main' | |
paths-ignore: | |
- 'CHANGES*' | |
- 'Doc/**' | |
- 'appveyor.yml' | |
permissions: | |
contents: read | |
jobs: | |
build: | |
# When continue-on-error is true for an individual build, that build can fail (it'll show red), | |
# but it won't fail the overall build | |
continue-on-error: ${{ matrix.continue-on-error || false }} | |
runs-on: ${{ matrix.os || 'ubuntu-20.04' }} | |
# By default, the name of the build is the language used and SWIG options, but matrix entries | |
# can define the additional "desc" field with any additional information to include in the name. | |
name: ${{ matrix.SWIGLANG || 'none' }}${{ matrix.PY2 }}${{matrix.ASAN && ' ASAN'}} ${{ matrix.ENGINE}} ${{ matrix.VER }} ${{ matrix.SWIG_FEATURES }} ${{ (matrix.compiler || 'gcc') }}${{ matrix.GCC }} ${{ matrix.CPPSTD }} ${{ matrix.CSTD }} ${{ matrix.EXTRA_CXXFLAGS }} ${{ matrix.desc }} ${{ matrix.continue-on-error && '(can fail)' }} | |
strategy: | |
matrix: | |
include: | |
- SWIGLANG: "" | |
CPPFLAGS: "-DDOH_POISON" | |
- SWIGLANG: "" | |
GCC: 7 | |
- SWIGLANG: "" | |
GCC: 8 | |
- SWIGLANG: "" | |
GCC: 9 | |
- SWIGLANG: "" | |
GCC: 10 | |
- SWIGLANG: "" | |
GCC: 11 | |
- SWIGLANG: "" | |
GCC: 12 | |
os: ubuntu-22.04 | |
- SWIGLANG: "" | |
GCC: 13 | |
os: ubuntu-22.04 | |
- SWIGLANG: "" | |
compiler: clang | |
os: ubuntu-22.04 | |
- SWIGLANG: csharp | |
- SWIGLANG: d | |
VER: 'ldc' | |
CPPSTD: c++14 | |
- SWIGLANG: d | |
VER: 'gdmd' | |
CPPSTD: c++11 | |
- SWIGLANG: d | |
VER: '2.103.1' | |
CPPSTD: c++17 | |
- SWIGLANG: go | |
VER: '1.6' | |
CSTD: gnu11 | |
- SWIGLANG: go | |
VER: '1.8' | |
- SWIGLANG: go | |
VER: '1.12' | |
CSTD: gnu11 | |
- SWIGLANG: go | |
VER: '1.17' | |
- SWIGLANG: guile | |
- SWIGLANG: guile | |
VER: '2.2' | |
- SWIGLANG: guile | |
VER: '3.0' | |
- SWIGLANG: java | |
- SWIGLANG: javascript | |
ENGINE: jsc | |
VER: '4.0' | |
- SWIGLANG: javascript | |
ENGINE: napi | |
VER: '18' | |
CPPSTD: c++11 | |
- SWIGLANG: javascript | |
ENGINE: napi | |
VER: '18' | |
CPPSTD: c++11 | |
ASAN: 1 | |
- SWIGLANG: javascript | |
ENGINE: node | |
VER: '12' | |
CPPSTD: c++11 | |
- SWIGLANG: javascript | |
ENGINE: napi | |
VER: '18' | |
CPPSTD: c++14 | |
SWIG_FEATURES: -async -w470 | |
desc: Async | |
cacheid: -napi-async | |
- SWIGLANG: javascript | |
ENGINE: napi | |
VER: '18' | |
CPPSTD: c++14 | |
SWIG_FEATURES: -async -async-locking -DSWIG_NAPI_FULL_LOCKING=1 | |
ASAN: 1 | |
desc: Async+ASAN | |
cacheid: -napi-async-locked-asan | |
- SWIGLANG: javascript | |
ENGINE: napi | |
VER: '18' | |
CPPSTD: c++14 | |
SWIG_FEATURES: -async -async-locking -DSWIG_NAPI_FULL_LOCKING=1 | |
desc: Async w/ locking | |
cacheid: -napi-async-locked | |
- SWIGLANG: javascript | |
ENGINE: napi | |
VER: '18' | |
CPPSTD: c++14 | |
SWIG_FEATURES: -typescript | |
desc: TypeScript | |
cacheid: -napi-typescript | |
- SWIGLANG: javascript | |
ENGINE: napi | |
VER: '18' | |
CPPSTD: c++14 | |
SWIG_FEATURES: -typescript -async -w470 | |
desc: TypeScript w/ async | |
cacheid: -napi-typescript-async | |
- SWIGLANG: javascript | |
ENGINE: napi | |
VER: '18' | |
CPPSTD: c++14 | |
SWIG_FEATURES: -split | |
desc: Code splitting | |
cacheid: -napi-splitting | |
- SWIGLANG: javascript | |
ENGINE: napi | |
VER: '18' | |
CPPSTD: c++14 | |
SWIG_FEATURES: -split -async -async-locking -DSWIG_NAPI_FULL_LOCKING=1 | |
desc: Async w/ splitting & locking | |
cacheid: -napi-splitting-async | |
- SWIGLANG: javascript | |
ENGINE: napi | |
VER: '18' | |
CPPSTD: c++14 | |
COMPILER: emscripten | |
desc: WASM | |
cacheid: -napi-wasm | |
- SWIGLANG: javascript | |
ENGINE: napi | |
VER: '18' | |
CPPSTD: c++14 | |
COMPILER: emscripten | |
SWIG_FEATURES: -async -async-locking -DSWIG_NAPI_FULL_LOCKING=1 | |
desc: WASM w/ async & locking | |
cacheid: -napi-wasm-async | |
- SWIGLANG: lua | |
- SWIGLANG: octave | |
CPPSTD: c++11 | |
- SWIGLANG: perl5 | |
- SWIGLANG: php | |
VER: '8.3' | |
- SWIGLANG: python | |
PY2: 2 | |
- SWIGLANG: python | |
VER: '3.10' | |
- SWIGLANG: python | |
VER: '3.12' | |
CSTD: gnu99 | |
- SWIGLANG: python | |
PY2: 2 | |
SWIG_FEATURES: -builtin | |
- SWIGLANG: r | |
- SWIGLANG: ruby | |
VER: '2.0' | |
- SWIGLANG: scilab | |
VER: '6.0.2' | |
- SWIGLANG: tcl | |
# c++11 testing | |
- SWIGLANG: csharp | |
CPPSTD: c++11 | |
- SWIGLANG: go | |
VER: '1.17' | |
CPPSTD: c++11 | |
CSTD: gnu11 | |
- SWIGLANG: guile | |
CPPSTD: c++11 | |
- SWIGLANG: java | |
CPPSTD: c++11 | |
- SWIGLANG: javascript | |
ENGINE: jsc | |
VER: '4.1' | |
os: ubuntu-22.04 | |
CPPSTD: c++11 | |
- SWIGLANG: javascript | |
ENGINE: node | |
VER: '14' | |
CPPSTD: c++11 | |
- SWIGLANG: javascript | |
ENGINE: node | |
VER: '16' | |
CPPSTD: c++14 | |
- SWIGLANG: java | |
CPPSTD: c++17 | |
GCC: 13 | |
- SWIGLANG: javascript | |
ENGINE: node | |
VER: '18' | |
CPPSTD: c++17 | |
GCC: 13 | |
- SWIGLANG: javascript | |
ENGINE: node | |
VER: '20' | |
CPPSTD: c++20 | |
GCC: 13 | |
os: ubuntu-22.04 | |
# Experimental languages (these are allowed to fail) | |
- SWIGLANG: mzscheme | |
continue-on-error: true | |
#- SWIGLANG: ocaml | |
# CPPSTD: c++17 | |
# GCC: 13 | |
# continue-on-error: true | |
# os: ubuntu-18.04 # ocaml-4.08 in ubuntu-20.04 not yet working | |
# Run all of them, as opposed to aborting when one fails | |
fail-fast: false | |
env: | |
SWIGLANG: ${{ matrix.SWIGLANG }} | |
PY2: ${{ matrix.PY2 }} | |
VER: ${{ matrix.VER }} | |
ENGINE: ${{ matrix.ENGINE }} | |
SWIG_FEATURES: ${{ matrix.SWIG_FEATURES }} | |
GCC: ${{ matrix.GCC }} | |
CSTD: ${{ matrix.CSTD }} | |
CPPSTD: ${{ matrix.CPPSTD }} | |
CPPFLAGS: ${{ matrix.CPPFLAGS }} | |
EXTRA_CXXFLAGS: ${{ matrix.EXTRA_CXXFLAGS }} | |
COMPILER: ${{ matrix.compiler || 'gcc' }} | |
ASAN: ${{ matrix.ASAN }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Install CCache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: ${{ matrix.os || 'ubuntu-20.04' }}-${{ matrix.compiler || 'gcc' }}${{ matrix.GCC }}${{ matrix.cacheid }} | |
# Uncomment to debug via ssh, see https://github.com/mxschmitt/action-tmate | |
# - name: Setup tmate session | |
# uses: mxschmitt/action-tmate@v3 | |
- name: Install Dependencies | |
run: | | |
set -x | |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" | |
echo PATH="$PATH" >> $GITHUB_ENV | |
source $GITHUB_WORKSPACE/Tools/GHA-linux-install.sh | |
echo WITHLANG="$WITHLANG" >> $GITHUB_ENV | |
case $(uname) in | |
Linux) | |
cpu_count=$(nproc) | |
;; | |
Darwin) | |
cpu_count=$(sysctl -n hw.ncpu) | |
;; | |
*) | |
cpu_count=1 | |
;; | |
esac | |
if [[ $cpu_count != 1 ]]; then | |
echo SWIGJOBS=-j$cpu_count >> $GITHUB_ENV | |
fi | |
if test '${{ matrix.compiler }}' = 'clang'; then | |
CC="clang" | |
CXX="clang++" | |
CFLAGS="$CFLAGS -fPIE" | |
CXXFLAGS="$CXXFLAGS -fPIE" | |
elif test '${{ matrix.compiler }}' = 'emscripten'; then | |
git clone https://github.com/emscripten-core/emsdk.git | |
( | |
cd emsdk | |
git pull | |
sh ./emsdk install latest | |
sh ./emsdk activate latest | |
) | |
source $GITHUB_WORKSPACE/emsdk/emsdk_env.sh | |
echo EMSDK=$EMSDK >> $GITHUB_ENV | |
echo EMCC_LOGGING=0 >> $GITHUB_ENV | |
TARGET_CC="emcc" | |
TARGET_CXX="em++" | |
CC="cc" | |
CXX="c++" | |
elif test -n "$GCC"; then | |
CC="gcc-$GCC" | |
CXX="g++-$GCC" | |
else | |
CC="gcc" | |
CXX="g++" | |
fi | |
[ -z "$TARGET_CC" ] && TARGET_CC="$CC" | |
[ -z "$TARGET_CXX" ] && TARGET_CXX="$CXX" | |
export CC CXX TARGET_CC TARGET_CXX | |
echo CC="$CC" >> $GITHUB_ENV | |
echo CXX="$CXX" >> $GITHUB_ENV | |
echo TARGET_CC="$TARGET_CC" >> $GITHUB_ENV | |
echo TARGET_CXX="$TARGET_CXX" >> $GITHUB_ENV | |
ls -la $(which $CC) $(which $CXX) $(which $TARGET_CC) $(which $TARGET_CXX) | |
$CC --version | |
$CXX --version | |
$TARGET_CC --version | |
$TARGET_CXX --version | |
- name: Configure | |
run: | | |
source $GITHUB_WORKSPACE/Tools/CI-linux-environment.sh | |
set -x | |
if [[ -z "$CSTD" ]]; then | |
case "$CPPSTD" in | |
c++11) export CSTD=c11 ;; | |
c++14) export CSTD=c11 ;; | |
c++17) export CSTD=c17 ;; | |
c++20) export CSTD=c17 ;; | |
esac | |
echo CSTD="$CSTD" >> $GITHUB_ENV | |
fi | |
if test -z "$CPPSTD"; then CONFIGOPTS+=("--disable-cpp11-testing"); fi | |
if test -n "$CPPSTD"; then CONFIGOPTS+=("CXXFLAGS=-std=$CPPSTD $CXXFLAGS"); fi | |
if test -n "$CSTD"; then CONFIGOPTS+=("CFLAGS=-std=$CSTD $CFLAGS"); 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 | |
working-directory: build/build | |
run: | | |
set -x | |
make -s $SWIGJOBS | |
./swig -version && ./swig -pcreversion | |
- name: Test | |
working-directory: build/build | |
run: | | |
source $GITHUB_WORKSPACE/Tools/CI-linux-environment.sh | |
set -x | |
if test -z "$SWIGLANG"; then | |
make $SWIGJOBS check-ccache | |
make $SWIGJOBS check-errors-test-suite | |
else | |
case "$SWIGLANG" in | |
javascript) | |
case "$ENGINE" in | |
v8 | jsc) | |
# Running tests using v8 or jsc involves creating a custom | |
# interpreter in Tools/javascript, which is currently broken | |
# for parallel builds (we attempt to update this interpreter | |
# while running, resulting in "Text file busy" error). | |
unset SWIGJOBS | |
esac | |
;; | |
esac | |
# Stricter compile flags for examples. Various headers and SWIG generated code prevents full use of -pedantic. | |
cflags="$($GITHUB_WORKSPACE/Tools/testflags.py --language $SWIGLANG --cflags --std=$CSTD --compiler=$CC) $EXTRA_CFLAGS" | |
cxxflags="$($GITHUB_WORKSPACE/Tools/testflags.py --language $SWIGLANG --cxxflags --std=$CPPSTD --compiler=$CC) $EXTRA_CXXFLAGS" | |
make check-$SWIGLANG-version | |
make check-$SWIGLANG-enabled | |
#make $SWIGJOBS check-$SWIGLANG-examples CFLAGS="$cflags" CXXFLAGS="$cxxflags" | |
make $SWIGJOBS check-$SWIGLANG-test-suite CC="$TARGET_CC" CXX="$TARGET_CXX" CFLAGS="$cflags" CXXFLAGS="$cxxflags" | |
fi | |
- name: Install | |
working-directory: build/build | |
run: | | |
set -x | |
if test -z "$SWIGLANG"; then sudo make install && swig -version && ccache-swig -V; fi | |
- name: Clean | |
working-directory: build/build | |
run: | | |
set -x | |
make check-maintainer-clean && ../../configure |