Skip to content

Commit

Permalink
Merge pull request #70 from jcapriot/wheel_building
Browse files Browse the repository at this point in the history
Wheel building
  • Loading branch information
jcapriot committed Nov 2, 2023
2 parents 74f5ddd + 611ea0a commit 27fc5dd
Show file tree
Hide file tree
Showing 7 changed files with 282 additions and 114 deletions.
223 changes: 223 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,223 @@
name: Release
on:
push:
# Sequence of patterns matched against refs/tags
tags:
- 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10

jobs:
build_manylinux_x86_64_wheels:
name: Build manylinux_x86_64
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- name: Build wheels
uses: pypa/[email protected]
env:
CIBW_BUILD: "*manylinux_x86_64"
CIBW_ARCHS_LINUX: x86_64
- uses: actions/upload-artifact@v3
with:
path: ./wheelhouse/*.whl
- name: Upload wheels to pypi
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
skip_existing: true
packages-dir: ./wheelhouse/

build_manylinux_aarch64_wheels:
name: Build manylinux_aarch64
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
platforms: all
- name: Build wheels
uses: pypa/[email protected]
env:
CIBW_ARCHS_LINUX: aarch64
CIBW_BUILD: "*manylinux_aarch64"
- uses: actions/upload-artifact@v3
with:
path: ./wheelhouse/*.whl
- name: Upload wheels to pypi
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
skip_existing: true
packages-dir: ./wheelhouse/

build_musllinux_x86_64_wheels:
name: Build musllinux_x86_64 wheels
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- name: Build wheels
uses: pypa/[email protected]
env:
CIBW_BUILD: "*musllinux_x86_64"
CIBW_ARCHS_LINUX: x86_64
- uses: actions/upload-artifact@v3
with:
path: ./wheelhouse/*.whl
- name: Upload wheels to pypi
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
skip_existing: true
packages-dir: ./wheelhouse/

build_mac_wheels:
name: Build macos wheels
runs-on: macos-11
steps:
- uses: actions/checkout@v4
- name: Build wheels
uses: pypa/[email protected]
env:
CIBW_ARCHS_MACOS: x86_64 arm64
- uses: actions/upload-artifact@v3
with:
path: ./wheelhouse/*.whl
- name: Upload wheels to pypi
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
skip_existing: true
packages-dir: ./wheelhouse/

build_windows_wheels:
name: Build Windows wheels
runs-on: windows-2019
steps:
- uses: actions/checkout@v4
- name: Build wheels
uses: pypa/[email protected]
env:
CIBW_ARCHS_WINDOWS: AMD64
- uses: actions/upload-artifact@v3
with:
path: ./wheelhouse/*.whl
- name: Upload wheels to pypi
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
skip_existing: true
packages-dir: ./wheelhouse/

# Don't upload this one to pypi, otherwise it will be preferred over every compiled one
# We can host it here on github though for those that need it (re: jupyter-light).
pure_python:
name: Create pure-python wheel
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: 3.11
- name: Build pure python wheel and install
run: |
python -m pip install --user --upgrade build
python -m build
find ./dist/*.whl | xargs pip install
python -c "import geoana; geoana.show_config()"
- uses: actions/upload-artifact@v3
with:
path: ./dist/geoana*.whl

distribute:
name: distribute source and documentation
runs-on: ubuntu-latest
defaults:
run:
shell: bash -l {0}
steps:
- uses: actions/checkout@v2
- name: Setup environment
uses: mamba-org/setup-micromamba@v1
with:
environment-name: geoana-test
create-args: >-
python=3.11
numpy>=1.20
scipy>=1.8
libdlf
cython
setuptools_scm
meson-python>=0.14.0
meson
ninja
build
discretize
numba
matplotlib
jupyter
utm
pytest
pytest-cov
sphinx
sphinx-gallery>=0.1.13
pydata-sphinx-theme=0.13.3
numpydoc>=1.5
graphviz
pillow
cache-environment: true
- name: Prepare source distribution
run: |
python -m build --no-isolation --skip-dependency-check --sdist .
- name: Publish package
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
skip_existing: true
- name: Install Our Package
run: |
pip install --no-build-isolation --editable . --config-settings=setup-args="-Dwith_extensions=true"
- name: Build documentation
run: |
cd docs
make html
cd ..
- name: GitHub Pages
uses: crazy-max/[email protected]
with:
build_dir: docs/_build/html
fqdn: geoana.simpeg.xyz
jekyll: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}


release:
name: Create Release
needs: [
build_manylinux_x86_64_wheels,
build_manylinux_aarch64_wheels,
build_musllinux_x86_64_wheels,
build_mac_wheels,
build_windows_wheels,
pure_python
]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v3
name: Retrieve assets
with:
name: artifact
path: dist
- name: Release to github
uses: softprops/action-gh-release@v1
with:
files: dist/*
generate_release_notes: true
prerelease: false
92 changes: 1 addition & 91 deletions .github/workflows/test_with_conda.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
name: TestingWithConda
name: Testing With Conda

on:
push:
branches:
- '*'
tags:
- 'v*'
pull_request:
branches:
- '*'
Expand Down Expand Up @@ -70,91 +68,3 @@ jobs:
with:
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: true
distribute:
name: Publish Source to Pypi
needs: build_and_test
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
runs-on: ubuntu-latest
defaults:
run:
shell: bash -l {0}
steps:
- uses: actions/checkout@v2
- name: Setup environment
uses: mamba-org/setup-micromamba@v1
with:
environment-name: geoana-test
create-args: >-
python=3.10
numpy>=1.20
scipy>=1.8
libdlf
cython
setuptools_scm
meson-python>=0.14.0
meson
ninja
build
discretize
matplotlib
jupyter
utm
numba
pytest
pytest-cov
sphinx
sphinx-gallery>=0.1.13
pydata-sphinx-theme=0.13.3
numpydoc>=1.5
graphviz
pillow
cache-environment: true
- name: Prepare source distribution
run: |
python -m build --no-isolation --skip-dependency-check --sdist . --config-settings=setup-args="-Dwith_extensions=true"
- name: Publish package
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
skip_existing: true
- name: Install package
run: |
pip install --no-build-isolation --editable . --config-settings=setup-args="-Dwith_extensions=true"
- name: Build documentation
run: |
cd docs
make html
cd ..
- name: GitHub Pages
# You may pin to the exact commit or the version.
uses: crazy-max/[email protected]
with:
# Git domain (default github.com)
# domain: # optional, default is github.com
# GitHub repository where assets will be deployed (default $GITHUB_REPOSITORY)
# repo: # optional
# Git branch where assets will be deployed
# target_branch: # optional, default is gh-pages
# Create incremental commit instead of doing push force
# keep_history: # optional, default is false
# Allow an empty commit to be created
# allow_empty_commit: # optional, default is true
# Build directory to deploy
build_dir: docs/_build/html
# The committer name and email address
# committer: # optional
# The author name and email address
# author: # optional
# Commit message
# commit_message: # optional
# Write the given domain name to the CNAME file
fqdn: geoana.simpeg.xyz
# Allow Jekyll to build your site
jekyll: false # optional, default is true
# If enabled, nothing will be pushed
# dry_run: true # optional, default is false
# Enable verbose output
# verbose: true # optional, default is false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
15 changes: 15 additions & 0 deletions geoana/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,18 @@
from datetime import datetime

__version__ = "unknown-" + datetime.today().strftime("%Y%m%d")


try:
import geoana.kernels._extensions.rTE
import geoana.kernels._extensions.potential_field_prism
compiled = True
except ImportError:
compiled = False
def show_config():
info_dict = {
'version': __version__,
'compiled': compiled,
}
print(info_dict)
return info_dict
2 changes: 1 addition & 1 deletion geoana/kernels/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ py.install_sources(
subdir: 'geoana/kernels'
)

with_extensions = get_option('with_extensions')

if with_extensions
subdir('_extensions')
endif
Loading

0 comments on commit 27fc5dd

Please sign in to comment.