Fixes syntax #288
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: Build and test UEDGE - write wheel files if tests pass | |
on: [push, pull_request] | |
jobs: | |
run-all-tests: | |
name: Runs test ${{ matrix.tests }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: [3.11] | |
tests: [fulltests, unittests/D+C, unittests/D_mols, unittests/D_only, unittests/slab_D_only] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set UBUNTU tags env variables. | |
if: runner.os == 'Linux' | |
run: | | |
# Set "checking" variable to false by default. | |
echo "has_tags=false" >> $GITHUB_ENV | |
# Get your last commit message, not the merge commit. | |
text=$(git log -1 --no-merges --pretty=%B) | |
# Read the commit message into an array split by "#". | |
readarray -d "#" -t commit_message <<< "$text" | |
# Sanity check. | |
echo "the tags are: ${commit_message[1]}" | |
# Add tags and overwrite "checking" variable to true if there are tags. | |
if [[ "${commit_message[1]}" == *"@"* ]]; then | |
echo "spec_tags=${commit_message[1]}" >> $GITHUB_ENV | |
fi | |
- name: Set macOS tags env variables. | |
if: runner.os == 'macOS' | |
run: | | |
# Set "checking" variable to false by default. | |
echo "has_tags=false" >> $GITHUB_ENV | |
# Get your last commit message, not the merge commit. | |
text=$(git log -1 --no-merges --pretty=%B) | |
# Read the commit message into an array split by "#". | |
echo $(echo $text|tr -d '\n') | |
commit_args=${text#*#} | |
# Sanity check. | |
echo "the tags are: ${commit_message[1]}" | |
# Add tags and overwrite "checking" variable to true if there are tags. | |
if [[ "${commit_args}" == *"@"* ]]; then | |
echo "spec_tags=${commit_args}" >> $GITHUB_ENV | |
fi | |
- name: Set up Python ${{ matrix.python-version }} | |
if: ${{ ! contains(env.spec_tags, '@notest') }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install pip dependencies | |
if: ${{ ! contains(env.spec_tags, '@notest') }} | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install forthon>=0.10.7 numpy==1.26.4 h5py | |
python -m pip install flake8 | |
python -m pip install pytest-isolate pytest-xdist | |
- name: Build UEDGE | |
if: ${{ ! contains(env.spec_tags, '@notest') }} | |
run: | | |
python -m pip install . -C "--build-option=--serial" | |
- name: Return to pytests branch | |
if: ${{ ! contains(env.spec_tags, '@notest') }} | |
uses: actions/checkout@v4 | |
with: | |
ref: pytests-develop | |
repository: LLNL/UEDGE | |
- name: Test with pytest | |
if: ${{ ! contains(env.spec_tags, '@notest') }} | |
run: | | |
# Create a clean UEDGE instance for every test | |
pytest --isolate --tb=long pytests/${{ matrix.tests }} -s | |
build_wheels: | |
name: Build wheels on ${{ matrix.os }} for Python ${{ matrix.pyver }} | |
# if: github.event_name == 'pull_request' | |
# needs: run-all-tests | |
runs-on: ${{ matrix.os }} | |
continue-on-error: true | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, macos-13, macos-14] | |
pyver: [cp38, cp39, cp310, cp311, cp312] | |
steps: | |
- name: Checks out repo | |
uses: actions/checkout@v4 | |
- name: Set UBUNTU tags env variables. | |
if: runner.os == 'Linux' | |
run: | | |
# Set "checking" variable to false by default. | |
echo "has_tags=false" >> $GITHUB_ENV | |
# Get your last commit message, not the merge commit. | |
text=$(git log -1 --no-merges --pretty=%B) | |
# Read the commit message into an array split by "#". | |
readarray -d "#" -t commit_message <<< "$text" | |
# Sanity check. | |
echo "the tags are: ${commit_message[1]}" | |
# Add tags and overwrite "checking" variable to true if there are tags. | |
if [[ "${commit_message[1]}" == *"@"* ]]; then | |
echo "spec_tags=${commit_message[1]}" >> $GITHUB_ENV | |
fi | |
- name: Set macOS tags env variables. | |
if: runner.os == 'macOS' | |
run: | | |
# Set "checking" variable to false by default. | |
echo "has_tags=false" >> $GITHUB_ENV | |
# Get your last commit message, not the merge commit. | |
text=$(git log -1 --no-merges --pretty=%B) | |
# Read the commit message into an array split by "#". | |
echo $(echo $text|tr -d '\n') | |
commit_args=${text#*#} | |
# Sanity check. | |
echo "the tags are: ${commit_message[1]}" | |
# Add tags and overwrite "checking" variable to true if there are tags. | |
if [[ "${commit_args}" == *"@"* ]]; then | |
echo "spec_tags=${commit_args}" >> $GITHUB_ENV | |
fi | |
- name: Set up macOS-specific paths and libraries | |
if: ${{ ((runner.os == 'macOS') && (! contains(env.spec_tags, '@nowheel'))) }} | |
run: | | |
# Symlink the correct gfortran compiler | |
ln -s $(brew --prefix)/bin/gfortran-13 $(brew --prefix)/bin/gfortran | |
# Install OMP libraries | |
brew install libomp | |
# Link environments to env for later us with cibuildwheel | |
echo "LIBOMPPATH=$(brew --prefix libomp)" >> $GITHUB_ENV | |
echo "LLVMCLANG=$(brew --prefix llvm@15)" >> $GITHUB_ENV | |
- name: Build wheels | |
if: ${{ ! contains(env.spec_tags, '@nowheel') }} | |
uses: pypa/[email protected] | |
env: | |
CIBW_BUILD: ${{matrix.pyver}}-* | |
CIBW_SKIP: "pp37-* cp37-* *-win32 *-manylinux_i686" | |
CIBW_ARCHS_LINUX: auto | |
CIBW_BEFORE_BUILD: pip install numpy 'forthon>=0.10.7' 'build<0.10.0' | |
CC: ${{ env.LLVMCLANG }}/bin/clang | |
LDFLAGS: "-L${{env.LIBOMPPATH }}/lib" | |
- name: Upload Artifacts | |
if: ${{ ! contains(env.spec_tags, '@nowheel') }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: cibw-wheels-${{ matrix.os }}-${{ matrix.pyver }}-${{ strategy.job-index }} | |
path: ./wheelhouse/*.whl | |
build_wheels_pypy: | |
name: Build PyPy wheels on ${{ matrix.os }} | |
if: false | |
# if: github.event_name == 'pull_request' | |
# needs: run-all-tests | |
runs-on: ${{ matrix.os }} | |
continue-on-error: true | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, macos-13, macos-14] | |
steps: | |
- name: Checks out repo | |
uses: actions/checkout@v4 | |
- name: Set up macOS-specific paths and libraries | |
if: runner.os == 'macOS' | |
run: | | |
# Symlink the correct gfortran compiler | |
ln -s $(brew --prefix)/bin/gfortran-13 $(brew --prefix)/bin/gfortran | |
# Install OMP libraries | |
brew install libomp | |
# Link environments to env for later us with cibuildwheel | |
echo "LIBOMPPATH=$(brew --prefix libomp)" >> $GITHUB_ENV | |
echo "LLVMCLANG=$(brew --prefix llvm@15)" >> $GITHUB_ENV | |
- name: Build wheels | |
uses: pypa/[email protected] | |
env: | |
CIBW_BUILD: pp* | |
CIBW_SKIP: "pp37-* cp37-* *-win32 *-manylinux_i686" | |
CIBW_BEFORE_BUILD: pip install numpy 'forthon>=0.10.7' 'build<0.10.0' | |
CC: ${{ env.LLVMCLANG }}/bin/clang | |
LDFLAGS: "-L${{env.LIBOMPPATH }}/lib" | |
- name: Upload Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: cibw-wheels-pyp-${{ matrix.os }}-${{ strategy.job-index }} | |
path: ./wheelhouse/*.whl | |
build_wheels_cross: | |
name: Build Linux cross-wheels | |
if: false | |
# needs: run-all-tests | |
runs-on: ubuntu-latest | |
continue-on-error: true | |
strategy: | |
fail-fast: false | |
matrix: | |
pyver: [cp38, cp39, cp310, cp311, cp312] | |
arch: [aarch64, ppc64le] | |
steps: | |
- name: Checks out repo | |
uses: actions/checkout@v4 | |
- name: Set up QEMU for multi-arch build | |
uses: docker/setup-qemu-action@v2 | |
- name: Build wheels | |
uses: pypa/[email protected] | |
env: | |
CIBW_BUILD: ${{matrix.pyver}}-* | |
IBW_SKIP: cp37-* | |
CIBW_ARCHS: ${{matrix.arch}} | |
CIBW_BEFORE_BUILD: pip install numpy 'forthon>=0.10.7' 'build<0.10.0' | |
- name: Upload Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: cibw-cross-wheels-${{ matrix.arch }}-${{ matrix.pyver }}-${{ strategy.job-index }} | |
path: ./wheelhouse/*.whl | |
build_wheels_cross_pypy: | |
name: Build Linux PyPy cross-wheels | |
if: false | |
# needs: run-all-tests | |
runs-on: ubuntu-latest | |
continue-on-error: true | |
strategy: | |
fail-fast: false | |
steps: | |
- name: Checks out repo | |
uses: actions/checkout@v4 | |
- name: Set up QEMU for multi-arch build | |
uses: docker/setup-qemu-action@v2 | |
- name: Build wheels | |
uses: pypa/[email protected] | |
env: | |
CIBW_BUILD: pp* | |
CIBW_SKIP: "pp37-* cp37-* *-win32 *-manylinux_i686" | |
CIBW_BEFORE_BUILD: pip install numpy 'forthon>=0.10.7' 'build<0.10.0' | |
- name: Upload Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: cibw-cross-wheels-pypy-${{ strategy.job-index }} | |
path: ./wheelhouse/*.whl | |
gather_wheels: | |
name: Gather built wheels | |
needs: [build_wheels] #, build_wheels_pypy] | |
# if: github.event_name == 'pull_request' | |
runs-on: ubuntu-latest | |
steps: | |
- name: Download all Artifacts and merges them | |
uses: actions/download-artifact@v4 | |
with: | |
path: wheels | |
merge-multiple: true | |
- name: Upload all Artifacts in a single Archive | |
uses: actions/upload-artifact@v4 | |
with: | |
name: all_wheels | |
path: wheels |