name: Linux on: push: paths-ignore: - 'docs/**' - '.github/workflows/**' - '!.github/workflows/test_linux.yml' pull_request: jobs: build: strategy: fail-fast: false matrix: cfg: #-------- Operating Systems ---------------- - { os: ubuntu, tag: 18.04, arch: debian } # EOL April 2023 - { os: ubuntu, tag: 20.04, arch: debian } # EOL April 2025 - { os: debian, tag: 10, arch: debian } # EOL 2024 - { os: centos, tag: 7, arch: rhel } # EOL June 2024 - { os: centos, tag: 8, arch: rhel } # 8 as of April 2020 - { os: rockylinux, tag: latest, arch: rhel} # - { os: fedora, tag: latest, arch: rhel } # 31 as of April 2020 # - { os: fedora, tag: 33, arch: rhel } # feeling confident? # - { os: fedora, tag: rawhide, arch: rhel } # for thrill-seekers only #-------- Defaults -------------------------- include: - cfg: {} deps: >- bison clang flex git llvm make maven cmake zip install_gtest: echo gtest already installed conf_pkg: echo package manager already configured install_cmd: install -y #-------- Debian-based Dependencies ---------------- - cfg: { arch: debian } pkg_mgr: apt-get conf_pkg: apt-get update arch_deps: >- swig curl g++ libx11-dev libxml2-dev libxt-dev libmotif-common libmotif-dev python2.7-dev zlib1g-dev llvm-dev libclang-dev libudunits2-dev libgtest-dev install_gtest: cd /usr/src/gtest && cmake . && make && cp libgtest* /usr/lib/ #-------- RHEL Dependencies ---------------- - cfg: { arch: rhel } arch_deps: >- clang-devel gcc gcc-c++ java-11-openjdk-devel libxml2-devel llvm-devel llvm-static ncurses-devel openmotif openmotif-devel perl perl-Digest-MD5 udunits2 udunits2-devel which zlib-devel gtest-devel #-------- Ubuntu Only Dependencies ---------------- - cfg: { os: ubuntu } os_deps: >- openjdk-11-jdk #-------- Debian OS Only Dependencies ---------------- - cfg: { os: debian } os_deps: >- openjdk-11-jdk #-------- CentOS Only Dependencies ---------------- - cfg: { os: centos } pkg_mgr: yum conf_pkg: yum -y install epel-release && yum -y update os_deps: >- libX11-devel libXt-devel #-------- Fedora Only Dependencies ---------------- # - cfg: { os: fedora } # pkg_mgr: dnf # os_deps: >- # swig # perl-Text-Balanced # python-devel # diffutils #-------- Version Specific Dependencies ---------------- - cfg: { os: ubuntu, tag: 20.04 } conf_pkg: DEBIAN_FRONTEND=noninteractive && apt-get update && apt-get install -y tzdata install_gtest: cd /usr/src/gtest && cmake . && make && cp lib/libgtest* /usr/lib/ tag_deps: >- python3.8-dev - cfg: { os: centos, tag: 7 } tag_deps: >- swig3 python-devel - cfg: { os: centos, tag: 8 } pkg_mgr: dnf conf_pkg: > sed -i -e "s|mirrorlist=|#mirrorlist=|g" -e "s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g" /etc/yum.repos.d/CentOS-Linux-* && dnf -y install epel-release && dnf -y update && dnf install -y 'dnf-command(config-manager)' && dnf config-manager --enable powertools tag_deps: >- swig python3-devel diffutils - cfg: { os: rockylinux } pkg_mgr: dnf conf_pkg: > dnf -y install epel-release && dnf -y update && dnf install -y 'dnf-command(config-manager)' && dnf config-manager --enable powertools tag_deps: >- swig python3-devel diffutils #-------- Job definition ---------------- runs-on: ubuntu-18.04 container: docker://${{matrix.cfg.os}}:${{matrix.cfg.tag}} steps: - name: Update Package Manager run: ${{matrix.conf_pkg}} - name: Install Dependencies run: | ${{matrix.pkg_mgr}} ${{matrix.install_cmd}} ${{matrix.deps}} ${{matrix.arch_deps}} ${{matrix.os_deps}} ${{matrix.tag_deps}} - name: Install GTest run: ${{matrix.install_gtest}} - name: Checkout repository uses: actions/checkout@master - name: Build trick run: | export MAKEFLAGS=-j`nproc` ./configure make - name: Test run: make test