Uses precomputed logtg #346
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: | |
check-requests: | |
name: Checks whether tests and/or wheels are requested | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set UBUNTU tags env variables. | |
if: runner.os == 'Linux' | |
run: | | |
# Set "checking" variable to false by default. | |
# 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 "Tags are: ${commit_message[1]}" | |
# Add tags and overwrite "checking" variable to true if there are tags. | |
if [[ "${commit_message[1]}" == *"@notest"* ]]; then | |
echo "Seting test flags to FALSE" | |
echo "test=FALSE" >> $GITHUB_OUTPUT | |
else | |
echo "Seting test flags to TRUE" | |
echo "test=TRUE" >> $GITHUB_OUTPUT | |
fi | |
if [[ "${commit_message[1]}" == *"@nowheel"* ]]; then | |
echo "Seting wheel flags to FALSE" | |
echo "wheel=FALSE" >> $GITHUB_OUTPUT | |
else | |
echo "Seting wheel flags to TRUE" | |
echo "wheel=TRUE" >> $GITHUB_OUTPUT | |
fi | |
run-all-tests: | |
name: Runs test ${{ matrix.tests }} | |
runs-on: ubuntu-latest | |
needs: check-requests | |
if: needs.check-requests.outputs.test != 'TRUE' | |
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: Check branch and define test branch | |
env: | |
BRANCH_NAME: ${{ github.head_ref || github.ref_name }} | |
run: | | |
echo "Branch is:", $BRANCH_NAME | |
if [[ ${BRANCH_NAME} == *"master"* ]]; then | |
echo "testbranch=pytests" >> $GITHUB_ENV | |
echo "Using pytests test branch" | |
else | |
echo "testbranch=pytests-develop" >> $GITHUB_ENV | |
echo "Using pytests-develop test branch" | |
fi | |
- name: Echo test branch name | |
run: | | |
echo ${{ env.testbranch }} | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install pip dependencies | |
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 | |
run: | | |
python -m pip install . -C "--build-option=--serial" | |
- name: Switch to pytests branch | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ env.testbranch }} | |
repository: LLNL/UEDGE | |
- name: Test with pytest | |
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 }} | |
needs: [run-all-tests, check-requests] | |
if: needs.check-requests.outputs.wheels != 'TRUE' | |
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 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: ${{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 | |
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 |