Resurrect CI #518
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: CI | |
on: | |
schedule: | |
- cron: '0 2 * * 0' | |
push: | |
branches: | |
- master | |
pull_request: | |
branches: | |
- master | |
jobs: | |
pip: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, macos-latest] | |
python-version: ['3.9', '3.10', '3.11', '3.12'] | |
name: Pip install with Python ${{ matrix.python-version }} on ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v3 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install xraylib with pip | |
run: | | |
python -m pip install -U numpy pip | |
python -m pip install . -vv | |
- name: Test importing xraylib | |
run: | | |
python -c "import xraylib" | |
python -c "import xraylib_np" | |
visual-studio: | |
timeout-minutes: 60 | |
runs-on: windows-latest | |
strategy: | |
matrix: | |
python-version: ['3.9', '3.10', '3.11'] | |
compiler: | |
- cl | |
- clang-cl | |
name: Visual Studio with ${{matrix.compiler}} and Python ${{ matrix.python-version }} | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: conda-incubator/[email protected] | |
with: | |
auto-update-conda: true | |
channels: conda-forge | |
python-version: ${{ matrix.python-version }} | |
- name: Install meson, ninja, numpy and cython | |
run: | | |
conda install -q -y meson ninja numpy cython swig | |
- uses: ilammy/[email protected] | |
- name: Build with meson | |
run: | | |
meson setup meson-build --buildtype=release -Dpython=python -Dpython-bindings=enabled -Dpython-numpy-bindings=enabled | |
meson compile -C meson-build | |
meson test -C meson-build | |
# ninja -v -C meson-build dist | |
env: | |
CC: ${{ matrix.compiler }} | |
CXX: ${{ matrix.compiler }} | |
msys2: | |
timeout-minutes: 60 | |
strategy: | |
matrix: | |
buildsystem: | |
- autotools | |
- meson | |
cc: | |
- clang | |
- gcc | |
include: | |
- cc: clang | |
cxx: clang++ | |
- cc: gcc | |
cxx: g++ | |
runs-on: windows-latest | |
defaults: | |
run: | |
shell: msys2 {0} | |
steps: | |
# - uses: crazy-max/[email protected] | |
# with: | |
# args: install innosetup lazarus | |
# required for the lib command | |
- uses: ilammy/[email protected] | |
with: | |
arch: x64 | |
- uses: msys2/setup-msys2@v2 | |
with: | |
path-type: inherit | |
update: true | |
install: > | |
base-devel | |
git | |
mingw-w64-x86_64-gcc | |
mingw-w64-x86_64-gcc-fortran | |
mingw-w64-x86_64-libxml2 | |
mingw-w64-x86_64-clang | |
mingw-w64-x86_64-openmp | |
mingw-w64-x86_64-lld | |
mingw-w64-x86_64-pkg-config | |
mingw-w64-x86_64-curl | |
mingw-w64-x86_64-cython | |
mingw-w64-x86_64-python3-numpy | |
mingw-w64-x86_64-meson | |
automake | |
autoconf | |
libtool | |
make | |
patch | |
wget | |
tar | |
- uses: actions/checkout@v3 | |
- name: Primary build and test with Meson | |
if: matrix.buildsystem == 'meson' | |
run: | | |
set -ex | |
meson setup meson-build -Dpython-bindings=enabled -Dpython-numpy-bindings=enabled | |
meson compile -C meson-build | |
meson test -C meson-build || (cat meson-build/meson-logs/testlog.txt && exit 1) | |
set +ex | |
env: | |
CC: ${{matrix.cc}} | |
CXX: ${{matrix.cxx}} | |
- name: Primary build and test with Autotools | |
if: matrix.buildsystem == 'autotools' | |
run: | | |
set -ex | |
autoreconf -fi | |
./configure --disable-all-bindings CFLAGS="-std=c89 -pedantic" || (cat config.log && exit 1) | |
make | |
make check | |
make windows | |
make distclean | |
./configure --disable-all-bindings --disable-shared --enable-static | |
make | |
make check | |
make distclean | |
./configure --disable-python --disable-python-numpy --enable-fortran2003 --disable-ruby | |
make | |
make check | |
make distclean | |
./configure --enable-python --enable-python-numpy PYTHON=python3 --disable-ruby | |
make | |
make check | |
set +ex | |
env: | |
CC: ${{matrix.cc}} | |
CXX: ${{matrix.cxx}} | |
CYTHON: cython | |
PYTHON: python3 | |
macos: | |
timeout-minutes: 60 | |
runs-on: macos-latest | |
strategy: | |
matrix: | |
buildsystem: | |
- autotools | |
- meson | |
compiler: | |
- llvm | |
- gcc | |
include: | |
- ldflags: "" | |
- compiler: llvm | |
cc: /usr/local/opt/llvm/bin/clang | |
cxx: /usr/local/opt/llvm/bin/clang++ | |
ldflags: -L/usr/local/opt/llvm/lib | |
enable_ruby: enable | |
- compiler: gcc | |
cc: gcc-11 | |
cxx: g++-11 | |
# -fdeclspec is only supported by llvm's clang! | |
enable_ruby: disable | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install Homebrew dependencies | |
run: | | |
set -ex | |
rm -f /usr/local/bin/2to3 | |
brew uninstall -f bazel bazelisk mongodb-community | |
brew update | |
brew upgrade | |
brew install git autoconf automake libtool pkg-config [email protected] ${{ matrix.compiler }} swig ruby fpc lua bash numpy meson ninja | |
/usr/local/bin/python3 --version | |
ls -lh /usr/local/bin/python3 | |
/usr/local/bin/python3 -c 'import numpy' | |
set +ex | |
env: | |
HOMEBREW_CURL_RETRIES: 5 | |
- name: Install Cython | |
run: | | |
/usr/local/bin/pip3 install Cython | |
- name: Primary Build and test with Meson | |
if: matrix.buildsystem == 'meson' | |
run: | | |
set -ex | |
meson setup meson-build -Dpython=/usr/local/bin/python3 -Dpython-bindings=enabled -Dpython-numpy-bindings=enabled | |
meson compile -C meson-build | |
meson test -C meson-build | |
meson dist -C meson-build | |
set +ex | |
env: | |
CC: ${{matrix.cc}} | |
CXX: ${{matrix.cxx}} | |
LDFLAGS: ${{matrix.ldflags}} | |
- name: Secondary build with Autotools | |
if: matrix.buildsystem == 'meson' | |
run: | | |
set -ex | |
cd meson-build/meson-dist/ | |
TARBALL=$(ls *.tar.xz) | |
tar xfJ $TARBALL | |
cd ${TARBALL%.tar.xz} | |
autoreconf -fi | |
./configure --enable-python SHELL=${SHELL} PYTHON=/usr/local/bin/python3 | |
make | |
make check | |
set +ex | |
env: | |
CC: ${{matrix.cc}} | |
CXX: ${{matrix.cxx}} | |
SHELL: /usr/local/bin/bash | |
- name: Build with Autotools | |
if: matrix.buildsystem == 'autotools' | |
run: | | |
set -ex | |
autoreconf -fi | |
# Build without python | |
./configure --disable-python --disable-python-numpy --disable-perl --enable-lua --enable-pascal --disable-java --disable-php --${{matrix.enable_ruby}}-ruby SHELL=${SHELL} RUBY=/usr/local/opt/ruby/bin/ruby | |
make | |
make check | |
make distclean | |
# Build without bindings in ANSI-C | |
./configure --disable-all-bindings CFLAGS="-std=c89 -pedantic" SHELL=${SHELL} | |
make | |
make check | |
make distclean | |
# Build with Python3 bindings | |
./configure --disable-ruby --disable-perl --disable-lua --enable-python-numpy --enable-python PYTHON=${XRL_PYTHON3} SHELL=${SHELL} | |
make | |
make check | |
make distclean | |
# Build static library | |
./configure --disable-all-bindings --disable-shared --enable-static SHELL=${SHELL} | |
make | |
make check | |
make distclean | |
# Run make distcheck | |
./configure | |
make distcheck SHELL=${SHELL} PYTHON=${XRL_PYTHON3} DISTCHECK_CONFIGURE_FLAGS="--${{matrix.enable_ruby}}-ruby" RUBY=/usr/local/opt/ruby/bin/ruby | |
set +ex | |
env: | |
CC: ${{matrix.cc}} | |
CXX: ${{matrix.cxx}} | |
SHELL: /usr/local/bin/bash | |
XRL_PYTHON3: /usr/local/bin/python3 | |
- name: Secondary build with Meson | |
if: matrix.buildsystem == 'autotools' | |
run: | | |
set -ex | |
export PATH=${HOME}/.local/bin:${PATH} | |
TARBALL=$(ls *.tar.gz) | |
tar xfz $TARBALL | |
cd ${TARBALL%.tar.gz} | |
meson setup meson-build -Dpython-bindings=enabled -Dpython-numpy-bindings=enabled | |
meson compile -C meson-build | |
set +ex | |
env: | |
CC: ${{matrix.cc}} | |
CXX: ${{matrix.cxx}} | |
LDFLAGS: ${{matrix.ldflags}} | |
linux: | |
timeout-minutes: 60 | |
strategy: | |
fail-fast: false | |
matrix: | |
image: | |
- ubuntu:jammy | |
- debian:bookworm | |
- rockylinux:8 | |
- rockylinux:9 | |
- fedora:latest | |
cc: | |
- clang | |
- gcc | |
buildsystem: | |
- autotools | |
- meson | |
# exclude: | |
# - image: rockylinux:8 | |
# buildsystem: meson | |
include: | |
- cc: gcc | |
cxx: g++ | |
- cc: clang | |
cxx: clang++ | |
- fpc: enable | |
fortran: enable | |
python: enable | |
# - cc: clang | |
# image: rockylinux:8 | |
# libs: -stdlib=libstdc++ | |
# fortran: disable | |
# clang_cflags: -Qunused-arguments | |
# python: enable | |
- cc: clang | |
image: fedora:latest | |
python: disable | |
clang_cflags: -Qunused-arguments | |
- image: rockylinux:8 | |
lua: /usr/bin/lua | |
- image: fedora:latest | |
lua: /usr/bin/lua | |
runs-on: ubuntu-latest | |
container: | |
image: ${{ matrix.image }} | |
steps: | |
- name: Install Git | |
if: startsWith(matrix.image, 'ubuntu') || startsWith(matrix.image, 'debian') | |
run: | | |
set -ex | |
apt-get --yes --force-yes update | |
apt-get --yes --force-yes install git | |
set +ex | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
- name: Install Git | |
if: startsWith(matrix.image, 'rockylinux') || startsWith(matrix.image, 'fedora') | |
run: | | |
set -ex | |
yum install -y git | |
set +ex | |
- uses: actions/checkout@v3 | |
- name: Install ubuntu dependencies | |
if: startsWith(matrix.image, 'ubuntu') || startsWith(matrix.image, 'debian') | |
run: | | |
set -ex | |
apt-get --yes --force-yes update | |
apt-get --yes --force-yes install autoconf automake libtool python3-pip python3-all-dev python3-numpy fpc gfortran gcc swig lua5.3 liblua5.3-dev ruby-dev default-jdk clang | |
set +ex | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
- name: Install ubuntu dependencies Meson and Ninja | |
if: matrix.buildsystem == 'meson' && (startsWith(matrix.image, 'ubuntu') || startsWith(matrix.image, 'debian')) | |
run: | | |
set -ex | |
apt-get --yes --force-yes install meson ninja-build | |
set +ex | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
- name: Activate RockyLinux 8 PowerTools and EPEL repo | |
if: matrix.image == 'rockylinux:8' | |
run: | | |
set -ex | |
dnf install -y 'dnf-command(config-manager)' | |
dnf config-manager --set-enabled powertools | |
dnf install -y epel-release | |
set +ex | |
- name: Activate RockyLinux 9 PowerTools and EPEL repo | |
if: matrix.image == 'rockylinux:9' | |
run: | | |
set -ex | |
dnf install -y 'dnf-command(config-manager)' | |
dnf config-manager --set-enabled crb | |
dnf install -y epel-release | |
set +ex | |
- name: Install RHEL dependencies | |
if: startsWith(matrix.image, 'centos') || startsWith(matrix.image, 'fedora') || startsWith(matrix.image, 'rockylinux') | |
run: | | |
set -ex | |
yum update -y | |
yum install -y make autoconf automake libtool python3-setuptools python3-devel python3-numpy fpc gcc-gfortran gcc swig lua lua-devel ruby ruby-devel rubygem-minitest rubygem-test-unit java-1.8.0-openjdk java-1.8.0-openjdk-devel clang libstdc++-devel gcc-c++ which | |
java -version | |
which java | |
javac -version | |
which javac | |
set +ex | |
- name: Install RHEL dependencies Meson and Ninja | |
if: matrix.buildsystem == 'meson' && (startsWith(matrix.image, 'centos') || startsWith(matrix.image, 'fedora') || startsWith(matrix.image, 'rockylinux')) | |
run: | | |
set -ex | |
yum install -y meson ninja-build | |
set +ex | |
- name: Install Cython | |
run: | | |
python3 -m pip install --break-system-packages Cython | |
- name: Build and test with Meson | |
if: matrix.buildsystem == 'meson' | |
run: | | |
set -ex | |
git config --global --add safe.directory /__w/xraylib/xraylib | |
meson setup meson-build -Dpython-bindings=enabled -Dpython-numpy-bindings=enabled | |
meson compile -C meson-build | |
meson test -C meson-build | |
meson dist -C meson-build | |
set +ex | |
env: | |
CC: ${{matrix.cc}} | |
CXX: ${{matrix.cxx}} | |
# LIBS: ${{matrix.libs}} | |
- name: Build and test with Autotools | |
if: matrix.buildsystem == 'autotools' | |
run: | | |
set -ex | |
autoreconf -fi | |
# disable java for now | |
./configure --disable-python --disable-python-numpy --disable-perl --enable-lua --${FPC_ENABLE}-pascal --disable-java --disable-php --enable-ruby --${FORTRAN_ENABLE}-fortran2003 || (cat config.log && exit 1) | |
make | |
make check || (cat example/xrlexample12.sh.log && exit 1) | |
make distclean | |
./configure --disable-all-bindings CFLAGS="-std=c89 -pedantic $CFLAGS" | |
make | |
make check | |
make distclean | |
./configure --disable-ruby --disable-perl --disable-lua --disable-fortran2003 --${PYTHON_ENABLE}-python-numpy --${PYTHON_ENABLE}-python PYTHON=${XRL_PYTHON3} | |
make | |
make check | |
make distclean | |
./configure --disable-all-bindings --disable-shared --enable-static | |
make | |
make check | |
make distclean | |
./configure --disable-all-bindings | |
make distcheck PYTHON=${XRL_PYTHON3} | |
set +ex | |
env: | |
CC: ${{matrix.cc}} | |
CXX: ${{matrix.cxx}} | |
CXXFLAGS: -std=c++11 | |
# LIBS: ${{matrix.libs}} | |
XRL_PYTHON3: /usr/bin/python3 | |
LUA: ${{matrix.lua}} | |
JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8 | |
PYTHON_ENABLE: ${{matrix.python}} | |
FORTRAN_ENABLE: ${{matrix.fortran}} | |
FPC_ENABLE: ${{matrix.fpc}} | |
DISTCHECK_CONFIGURE_FLAGS: --${{matrix.fpc}}-pascal --enable-java --disable-perl --enable-lua --${{matrix.python}}-python --${{matrix.python}}-python-numpy --disable-php --enable-ruby --${{matrix.fortran}}-fortran2003 | |
CFLAGS: ${{matrix.clang_cflags}} |