Release candidate v1.0.0 #66
Workflow file for this run
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 Publish | |
on: | |
workflow_dispatch: | |
pull_request: | |
push: | |
branches: | |
- main | |
release: | |
types: | |
- published | |
jobs: | |
build_sdist: | |
name: Build SDist | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Build SDist | |
run: pipx run build --sdist | |
- name: Check metadata | |
run: pipx run twine check dist/* | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-sdist | |
path: dist/*.tar.gz | |
build_wheels: | |
name: Wheels on ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- uses: actions/setup-python@v3 | |
- name: Install cibuildwheel | |
run: python -m pip install cibuildwheel==2.16.5 | |
- name: Build wheels | |
run: python -m cibuildwheel --output-dir wheelhouse | |
env: | |
CIBW_ENVIRONMENT: CMAKE_ARGS="-DSDTN_ENABLE_ARCH_FLAGS=OFF -DSDTN_ENABLE_OPENMP=ON -DSDTN_DISABLE_OPENMP=OFF" | |
CIBW_TEST_COMMAND: pytest {project}/tests && python -c "from sparse_dot_topn import _has_openmp_support;assert _has_openmp_support" | |
# only build for x86_64; ARM wheels are build seperately | |
CIBW_ARCHS_MACOS: "x86_64" | |
CIBW_ENVIRONMENT_MACOS: MACOSX_DEPLOYMENT_TARGET="10.14" CMAKE_ARGS="-DSDTN_ENABLE_ARCH_FLAGS=OFF -DSDTN_ENABLE_OPENMP=ON -DSDTN_DISABLE_OPENMP=OFF" | |
- name: Verify clean directory | |
run: git diff --exit-code | |
shell: bash | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-${{ matrix.os }} | |
path: wheelhouse/*.whl | |
build_arm_wheels: | |
name: MacOS ARM wheels | |
runs-on: macos-latest | |
strategy: | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Cache OpenMP repo | |
id: clone-openmp | |
uses: actions/cache@v4 | |
with: | |
path: llvm-project | |
key: macos-arm-openmp | |
- name: Clone OpenMP repo | |
if: steps.clone-openmp.outputs.cache-hit != 'true' | |
run: | | |
git clone --depth 1 --branch llvmorg-17.0.6 https://github.com/llvm/llvm-project | |
- name: Build OpenMP | |
shell: bash | |
run: | | |
mv llvm-project/openmp ./openmp | |
mv llvm-project/cmake ./cmake | |
rm -rf llvm-project | |
mkdir openmp_build | |
cmake -S openmp -B openmp_build \ | |
-DCMAKE_OSX_ARCHITECTURES="arm64" \ | |
-DCMAKE_OSX_DEPLOYMENT_TARGET="10.14" \ | |
-DCMAKE_BUILD_TYPE=Release \ | |
-DCMAKE_C_COMPILER=clang \ | |
-DCMAKE_CXX_COMPILER=clang++ \ | |
-DCMAKE_INSTALL_PREFIX="/usr/local" | |
cmake --build openmp_build --target install --config Release | |
- uses: pypa/[email protected] | |
env: | |
# only build for ARM; x86_64wheels are build seperately | |
CIBW_ARCHS: "arm64" | |
CIBW_ENVIRONMENT_MACOS: MACOSX_DEPLOYMENT_TARGET="10.14" CMAKE_ARGS="-DSDTN_ENABLE_ARCH_FLAGS=OFF -DSDTN_ENABLE_OPENMP=ON -DSDTN_DISABLE_OPENMP=OFF -DOpenMP_ROOT=/usr/local" | |
- name: Verify clean directory | |
run: git diff --exit-code | |
shell: bash | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: artifact-macos-arm | |
path: wheelhouse/*.whl | |
upload_all: | |
name: Upload if release | |
needs: [build_sdist, build_wheels, build_arm_wheels] | |
runs-on: ubuntu-latest | |
if: github.event_name == 'release' && github.event.action == 'published' | |
steps: | |
- uses: actions/setup-python@v4 | |
- uses: actions/download-artifact@v4 | |
with: | |
pattern: artifact-* | |
merge-multiple: true | |
path: dist | |
- uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
user: ${{ secrets.PYPI_USER }} | |
password: ${{ secrets.PYPI_PASS }} |