Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Introduces pyproject.toml, adds wheel build jobs to workflow, makes isfniycbozero more flexible #77

Merged
merged 2 commits into from
Mar 21, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading