Skip to content

Commit

Permalink
Merge pull request #77 from LLNL/pyproject_toml
Browse files Browse the repository at this point in the history
Introduces pyproject.toml, adds wheel build jobs to workflow, makes isfniycbozero more flexible
  • Loading branch information
holm10 authored Mar 21, 2024
2 parents 9d6f536 + b24d529 commit 1fdc08c
Show file tree
Hide file tree
Showing 26 changed files with 457 additions and 313 deletions.
202 changes: 202 additions & 0 deletions .github/workflows/build-test-wheel.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,202 @@
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 mppl numpy h5py
python -m pip install flake8
python -m pip install pytest-isolate pytest-xdist
- name: Build UEDGE
run: |
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: github.event_name == 'pull_request'
needs: run-all-tests
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-13, macos-14]
pyver: [cp37, 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/[email protected]
env:
CIBW_BUILD: ${{matrix.pyver}}-*
CIBW_ARCHS_LINUX: auto
CIBW_BEFORE_BUILD: pip install numpy forthon '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: github.event_name == 'pull_request'
needs: run-all-tests
runs-on: ${{ matrix.os }}
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/[email protected]
env:
CIBW_BUILD: pp*
CIBW_BEFORE_BUILD: pip install numpy forthon '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
strategy:
fail-fast: false
matrix:
pyver: [cp37, 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}}-*
CIBW_ARCHS: ${{matrix.arch}}
CIBW_BEFORE_BUILD: pip install numpy forthon '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
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_BEFORE_BUILD: pip install numpy forthon '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
163 changes: 0 additions & 163 deletions .github/workflows/run_testsuite.yml

This file was deleted.

6 changes: 4 additions & 2 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
include *
recursive-include pyscripts *
recursive-include pytests *
recursive-include jupyter *
#recursive-include pytests *
#recursive-include jupyter *
recursive-include buildscripts *
recursive-include aph *
recursive-include api *
recursive-include bbb *
Expand All @@ -10,6 +11,7 @@ recursive-include flx *
recursive-include grd *
recursive-include svr *
recursive-include wdf *
recursive-include ncl *
#recursive-include dst *
#recursive-include idf *
#recursive-include psi *
Expand Down
2 changes: 1 addition & 1 deletion Makefile.Forthon
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ all: mppl2f90 $(BUILDDIR)/compydep $(BUILDDIR)/grdpydep $(BUILDDIR)/flxpydep $(B
rm -f uedgeC.so

mppl2f90:
(export PYTHONPATH=.:./pyscripts; $(MYPYTHON) convertor)
(export PYTHONPATH=.:./buildscripts; $(MYPYTHON) convertor)

$(BUILDDIR)/compydep: com/blasext.F com/brent.F com/comutil.F com/misc.F com/mnbrak.F com/dsum.f com/dummy_py.f com/error.f com/getmsg.f com/ssum.f com/$(PETSC-COM) com/com.v
$(FORTHON) -a $(INSTALLARGS) -a $(FCOMP) $(DEBUG) --interfacefile com/com.v -f com/blasext.F com com/brent.F com/comutil.F com/misc.F com/mnbrak.F com/dsum.f com/dummy_py.f com/error.f com/getmsg.f com/ssum.f $(PETSC-COM)
Expand Down
Loading

0 comments on commit 1fdc08c

Please sign in to comment.