-
Notifications
You must be signed in to change notification settings - Fork 14
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
181 additions
and
85 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -33,108 +33,204 @@ jobs: | |
echo "message=$COMMIT_MSG" >> $GITHUB_OUTPUT | ||
echo github.ref ${{ github.ref }} | ||
build_linux_wheels: | ||
name: Build Linux wheels for different versions of CPython on manylinux_x86_64 | ||
build_macos_wheels: | ||
name: build linux wheels for different versions of cpython on macos | ||
needs: get_commit_message | ||
if: >- | ||
contains(needs.get_commit_message.outputs.message, '[wheel build]') || | ||
(github.repository == 'TREX-CoE/trexio' && startsWith(github.ref, 'refs/tags/v')) | ||
runs-on: ubuntu-22.04 | ||
(github.repository == 'trex-coe/trexio' && startswith(github.ref, 'refs/tags/v')) | ||
runs-on: ${{ matrix.buildplat[0] }} | ||
strategy: | ||
# Ensure that a wheel builder finishes even if another fails | ||
fail-fast: false | ||
matrix: | ||
manylinux_tag: [2014_x86_64, 2_28_x86_64] | ||
# Github Actions doesn't support pairing matrix values together, let's improvise | ||
# https://github.com/github/feedback/discussions/7835#discussioncomment-1769026 | ||
buildplat: | ||
- [macos-13, macosx_x86_64] | ||
- [macos-14, macosx_arm64] | ||
# test config | ||
python: ["cp310", "cp312"] | ||
#python: ["cp38", "cp39", "cp310", "cp311", "cp312"] | ||
#exclude: | ||
# - buildplat: [macos-14, macosx_arm64] | ||
# python: "cp38" | ||
|
||
steps: | ||
- name: Checkout the branch | ||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | ||
|
||
- name: Set up Python | ||
uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f | ||
with: | ||
python-version: '3.10' | ||
- uses: actions/checkout@e2f20e631ae6d7dd3b768f56a5d2af784dd54791 | ||
|
||
- name: Install build dependencies | ||
run: python -m pip install -U setuptools | ||
|
||
- name: Compute the PYTREXIO_VERSION environment variable | ||
run: echo "PYTREXIO_VERSION=$(grep __version__ python/pytrexio/_version.py | cut -d\ -f3 | tr -d '"')" >> $GITHUB_ENV | ||
|
||
- name: Print the PYTREXIO_VERSION | ||
run: echo ${{ env.PYTREXIO_VERSION }} | ||
|
||
# Conventional download-artifact action does not work for artifact produced in a different workflow, | ||
# which is the case here (TREXIO CI produced the Python API distribution tarball) | ||
- name: Download the Python API distribution tarball | ||
uses: dawidd6/action-download-artifact@v2 | ||
- uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 | ||
with: | ||
# Specify the name of the workflow file which uploaded the tarball | ||
workflow: actions.yml | ||
workflow_conclusion: success | ||
name: pytrexio-source | ||
path: python | ||
|
||
# at the moment we have to pull the custom container with pre-installed HDF5 | ||
# the containers are built and stored in GitHub container registry ghcr.io/q-posev | ||
- name: Pull the manylinux Docker container with HDF5 | ||
run: docker pull ghcr.io/q-posev/hdf5_1_12_on_${{ matrix.manylinux_tag }}:latest | ||
|
||
- name: Build wheels for different versions of CPython inside the Docker container | ||
run: > | ||
docker run --rm | ||
--env PLAT=manylinux${{ matrix.manylinux_tag }} | ||
--volume `pwd`:/tmp | ||
--workdir /tmp | ||
ghcr.io/q-posev/hdf5_1_12_on_${{ matrix.manylinux_tag }} | ||
/bin/bash build_manylinux_wheels.sh trexio-${{ env.PYTREXIO_VERSION }}.tar.gz | ||
working-directory: python | ||
|
||
- name: Upload produced wheels as artifacts | ||
uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a | ||
python-version: "3.x" | ||
|
||
- name: Build wheels | ||
uses: pypa/cibuildwheel@bd033a44476646b606efccdd5eed92d5ea1d77ad # v2.20.0 | ||
env: | ||
CIBW_PRERELEASE_PYTHONS: False | ||
CIBW_FREE_THREADED_SUPPORT: False | ||
CIBW_BUILD: ${{ matrix.python }}-${{ matrix.buildplat[1] }} | ||
CIBW_BEFORE_ALL: > | ||
brew install [email protected] -y && | ||
brew install swig -y && | ||
brew install emacs -y && | ||
brew install automake -y && | ||
brew install libtool -y && | ||
./autogen.sh && | ||
./configure FC=gfortran-12 --enable-silent-rules && | ||
make -j3 | ||
CIBW_BEFORE_BUILD: > | ||
cd tools && | ||
./prepare_python.sh && | ||
cd ../python | ||
CIBW_BUILD_VERBOSITY: 1 | ||
CIBW_BUILD_FRONTEND: "build" | ||
CIBW_ENVIRONMENT_LINUX: H5_CFLAGS="-I$(brew --prefix hdf5)/include" H5_LDFLAGS="-L$(brew --prefix hdf5)/lib" | ||
CIBW_TEST_REQUIRES: pytest | ||
CIBW_TEST_COMMANDS: "pytest -v --all python/test/test_api.py" | ||
|
||
|
||
- uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 | ||
with: | ||
name: pytrexio-manylinux-${{ matrix.manylinux_tag }} | ||
path: ./python/wheelhouse/*.whl | ||
|
||
|
||
publish_wheels: | ||
name: Publish all wheels on PyPI | ||
needs: [build_linux_wheels] | ||
runs-on: ubuntu-22.04 | ||
name: ${{ matrix.python }}-${{ matrix.buildplat[1] }} | ||
path: ./wheelhouse/*.whl | ||
|
||
steps: | ||
- name: Checkout the branch | ||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | ||
- name: configure with autotools | ||
run: | | ||
./autogen.sh | ||
./configure FC=gfortran-12 --enable-silent-rules | ||
- name: Set up Python | ||
uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f | ||
with: | ||
python-version: '3.10' | ||
- name: compile TREXIO | ||
run: make -j3 | ||
|
||
- name: Install build dependencies | ||
run: python -m pip install -U setuptools twine | ||
- name: check TREXIO | ||
run: make -j3 check | ||
|
||
- name: create venv | ||
run: | | ||
python3 -m venv trexio-venv | ||
source trexio-venv/bin/activate | ||
- name: Download the build artifacts (wheels) of this workflow | ||
uses: actions/download-artifact@v4 | ||
with: | ||
path: dist | ||
- name: compile Python API | ||
run: | | ||
- name: Download the Python API distribution tarball | ||
uses: dawidd6/action-download-artifact@v2 | ||
with: | ||
workflow: actions.yml | ||
workflow_conclusion: success | ||
name: pytrexio-source | ||
path: dist | ||
|
||
# The artifacts have to be in dist/ directory so that | ||
# pypa/gh-action-pypi-publish action can discover them | ||
- name: Display and rearrange the downloaded artifacts | ||
- name: test Python API | ||
run: | | ||
ls -R | ||
mv pytrexio-manylinux-*/trexio-*.whl ./ | ||
rm -rf -- pytrexio-manylinux-*/ | ||
ls -sh -w 1 | ||
working-directory: dist | ||
source trexio-venv/bin/activate | ||
make python-test | ||
- name: Archive test log file | ||
if: failure() | ||
uses: actions/upload-artifact@82c141cc518b40d92cc801eee768e7aafc9c2fa2 | ||
with: | ||
name: test-report-macos | ||
path: test-suite.log | ||
|
||
|
||
|
||
# build_linux_wheels: | ||
# name: build linux wheels for different versions of cpython on manylinux_x86_64 | ||
# needs: get_commit_message | ||
# if: >- | ||
# contains(needs.get_commit_message.outputs.message, '[wheel build]') || | ||
# (github.repository == 'trex-coe/trexio' && startswith(github.ref, 'refs/tags/v')) | ||
# runs-on: ubuntu-22.04 | ||
# strategy: | ||
# matrix: | ||
# manylinux_tag: [2014_x86_64, 2_28_x86_64] | ||
# | ||
# steps: | ||
# - name: Checkout the branch | ||
# uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | ||
# | ||
# - name: Set up Python | ||
# uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f | ||
# with: | ||
# python-version: '3.10' | ||
# | ||
# - name: Install build dependencies | ||
# run: python -m pip install -U setuptools | ||
# | ||
# - name: Compute the PYTREXIO_VERSION environment variable | ||
# run: echo "PYTREXIO_VERSION=$(grep __version__ python/pytrexio/_version.py | cut -d\ -f3 | tr -d '"')" >> $GITHUB_ENV | ||
# | ||
# - name: Print the PYTREXIO_VERSION | ||
# run: echo ${{ env.PYTREXIO_VERSION }} | ||
# | ||
# # Conventional download-artifact action does not work for artifact produced in a different workflow, | ||
# # which is the case here (TREXIO CI produced the Python API distribution tarball) | ||
# - name: Download the Python API distribution tarball | ||
# uses: dawidd6/action-download-artifact@v2 | ||
# with: | ||
# # Specify the name of the workflow file which uploaded the tarball | ||
# workflow: actions.yml | ||
# workflow_conclusion: success | ||
# name: pytrexio-source | ||
# path: python | ||
# | ||
# # at the moment we have to pull the custom container with pre-installed HDF5 | ||
# # the containers are built and stored in GitHub container registry ghcr.io/q-posev | ||
# - name: Pull the manylinux Docker container with HDF5 | ||
# run: docker pull ghcr.io/q-posev/hdf5_1_12_on_${{ matrix.manylinux_tag }}:latest | ||
# | ||
# - name: Build wheels for different versions of CPython inside the Docker container | ||
# run: > | ||
# docker run --rm | ||
# --env PLAT=manylinux${{ matrix.manylinux_tag }} | ||
# --volume `pwd`:/tmp | ||
# --workdir /tmp | ||
# ghcr.io/q-posev/hdf5_1_12_on_${{ matrix.manylinux_tag }} | ||
# /bin/bash build_manylinux_wheels.sh trexio-${{ env.PYTREXIO_VERSION }}.tar.gz | ||
# working-directory: python | ||
# | ||
# - name: Upload produced wheels as artifacts | ||
# uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a | ||
# with: | ||
# name: pytrexio-manylinux-${{ matrix.manylinux_tag }} | ||
# path: ./python/wheelhouse/*.whl | ||
# | ||
# | ||
# publish_wheels: | ||
# name: Publish all wheels on PyPI | ||
# needs: [build_linux_wheels] | ||
# runs-on: ubuntu-22.04 | ||
# | ||
# steps: | ||
# - name: Checkout the branch | ||
# uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 | ||
# | ||
# - name: Set up Python | ||
# uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f | ||
# with: | ||
# python-version: '3.10' | ||
# | ||
# - name: Install build dependencies | ||
# run: python -m pip install -U setuptools twine | ||
# | ||
# - name: Download the build artifacts (wheels) of this workflow | ||
# uses: actions/download-artifact@v4 | ||
# with: | ||
# path: dist | ||
# | ||
# - name: Download the Python API distribution tarball | ||
# uses: dawidd6/action-download-artifact@v2 | ||
# with: | ||
# workflow: actions.yml | ||
# workflow_conclusion: success | ||
# name: pytrexio-source | ||
# path: dist | ||
# | ||
# # The artifacts have to be in dist/ directory so that | ||
# # pypa/gh-action-pypi-publish action can discover them | ||
# - name: Display and rearrange the downloaded artifacts | ||
# run: | | ||
# ls -R | ||
# mv pytrexio-manylinux-*/trexio-*.whl ./ | ||
# rm -rf -- pytrexio-manylinux-*/ | ||
# ls -sh -w 1 | ||
# working-directory: dist | ||
# | ||
- name: Publish distribution 📦 to Test PyPI | ||
uses: pypa/gh-action-pypi-publish@master | ||
with: | ||
|