name: TREXIO CI on: push: branches: - master tags: # After vMajor.Minor.Patch _anything_ is allowed (without "/") ! - v[0-9]+.[0-9]+.[0-9]+* pull_request: branches: [ master ] jobs: get_commit_message: name: Get commit message runs-on: ubuntu-22.04 outputs: message: ${{ steps.commit_message.outputs.message }} steps: - name: Checkout the repo uses: actions/checkout@e2f20e631ae6d7dd3b768f56a5d2af784dd54791 # Gets the correct commit message for pull request with: ref: ${{ github.event.pull_request.head.sha }} - name: Get commit message id: commit_message run: | set -xe COMMIT_MSG=$(git log --no-merges -1 --oneline) echo "message=$COMMIT_MSG" >> $GITHUB_OUTPUT echo github.ref ${{ github.ref }} trexio_ubuntu: name: x86 Ubuntu runs-on: ubuntu-22.04 needs: get_commit_message steps: - uses: actions/checkout@e2f20e631ae6d7dd3b768f56a5d2af784dd54791 - name: check versions run: | grep AC_INIT configure.ac | tr -d '[]' | awk -F, '{ print $2 }' > configure_v grep -w VERSION CMakeLists.txt | grep -v 'cmake_minimum_required' | awk '{ print $2 }' > cmake_v grep version python/pytrexio/_version.py | tr -d '"' | awk '{ print $3 }' > python_v grep version rust/trexio/Cargo.toml | grep -v features | tr -d '"' | awk '{ print $3 }' > rust_v grep version ocaml/trexio/dune-project | tr -d '()' | awk '{ print $2 }' > ocaml_v diff configure_v cmake_v diff configure_v python_v diff configure_v rust_v diff configure_v ocaml_v - name: install dependencies run: | sudo apt-get update sudo apt-get install libhdf5-dev emacs - name: configure with autotools run: | ./autogen.sh ./configure --enable-silent-rules - name: compile TREXIO run: make -j2 - name: check TREXIO run: make -j2 check - name: Archive test log file if: failure() uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 with: name: test-report-ubuntu path: test-suite.log - name: create venv run: | python3 -m venv trexio-venv source trexio-venv/bin/activate - name: install Python API run: | source trexio-venv/bin/activate make python-install - name: check Python API run: | source trexio-venv/bin/activate make python-test - name: build and move Python API distribution run: | source trexio-venv/bin/activate make python-sdist cp python/dist/trexio-*.tar.gz . - name: publish Python API distribution as an artifact if: >- contains(needs.get_commit_message.outputs.message, '[wheel build]') || github.event_name == 'release' uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 with: name: pytrexio-source path: ./trexio-*.tar.gz - name: maintainer clean run: make maintainer-clean - name: reconfigure with clang and AddressSanitizer run: | ./autogen.sh ./configure CC=clang-15 CFLAGS="-O2 -fsanitize=address -fno-omit-frame-pointer" LDFLAGS="-fsanitize=address" --enable-silent-rules - name: recompile TREXIO run: make -j2 - name: recheck TREXIO for memory leaks run: make -j2 check - name: Archive test log file if: failure() uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 with: name: test-report-ubuntu-memory path: test-suite.log - name: maintainer clean run: make maintainer-clean trexio_macos: name: x86 and arm64 MacOS strategy: # macos-13 = x86_64 ; macos-14 = aarch64 matrix: os: [macos-13, macos-14] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@e2f20e631ae6d7dd3b768f56a5d2af784dd54791 - name: install dependencies run: | brew install emacs brew install hdf5@1.14 brew install automake brew install libtool brew install swig brew --prefix hdf5 - name: configure with autotools run: | ./autogen.sh ./configure CC=gcc-12 FC=gfortran-12 --enable-silent-rules - name: compile TREXIO run: make -j3 - name: check TREXIO run: make -j3 check - name: create venv run: | python3 -m venv trexio-venv source trexio-venv/bin/activate - name: compile Python API run: | export H5_CFLAGS="-I$(brew --prefix hdf5)/include" export H5_LDFLAGS="-L$(brew --prefix hdf5)/lib" source trexio-venv/bin/activate make python-install - name: test Python API run: | source trexio-venv/bin/activate make python-test - name: Archive test log file if: failure() uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 with: name: test-report-${{ matrix.os }} path: test-suite.log - name: clean run: make clean