Skip to content

Merge pull request #89 from LLNL/tg_rewrite_passing #124

Merge pull request #89 from LLNL/tg_rewrite_passing

Merge pull request #89 from LLNL/tg_rewrite_passing #124

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.9]
tests: [fulltests, unittests/D+C, unittests/D_mols, unittests/D_only, unittests/slab_D_only]
steps:
- uses: actions/checkout@v4
- 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 .
- name: Return to pytests branch
uses: actions/checkout@v4
with:
ref: pytests-develop
repository: LLNL/UEDGE
- name: Test with pytest
run: |
# Create a clean UEDGE instance for every test
pytest --isolate --tb=native pytests/${{ matrix.tests }}
build_wheels:
name: Build wheels on ${{ matrix.os }} for Python ${{ matrix.pyver }}
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]
pyver: [cp38, cp39, cp310, cp311, cp312]
steps:
- name: Checks out repo
uses: actions/checkout@v4
- name: Symlink gfortran for x86 macOS
if: matrix.os == 'macos-13'
run: |
# make sure gfortran is available
ln -s /usr/local/bin/gfortran-13 /usr/local/bin/gfortran
gfortran --version
- name: Symlink gfortran for ARM macOS
if: matrix.os == 'macos-14'
run: |
# make sure gfortran is available
ln -s /opt/homebrew/bin/gfortran-13 /opt/homebrew/bin/gfortran
gfortran --version
- name: Build wheels
if: ${{ !(matrix.os == 'macos-14' && matrix.pyver == 'cp37') }}
uses: pypa/cibuildwheel@v2.17.0
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'
- 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: Symlink gfortran for x86 macOS
if: matrix.os == 'macos-13'
run: |
# make sure gfortran is available
ln -s /usr/local/bin/gfortran-13 /usr/local/bin/gfortran
gfortran --version
- name: Symlink gfortran for ARM macOS
if: matrix.os == 'macos-14'
run: |
# make sure gfortran is available
ln -s /opt/homebrew/bin/gfortran-13 /opt/homebrew/bin/gfortran
gfortran --version
- name: Build wheels
uses: pypa/cibuildwheel@v2.17.0
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-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/cibuildwheel@v2.17.0
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/cibuildwheel@v2.17.0
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
if: false
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