Build wheels (linux/windos/macos) and upload them to pypi.
This commit is contained in:
koide3 2024-05-11 01:08:22 +09:00 committed by GitHub
parent 308da3e371
commit 6206c44fc3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 97 additions and 9 deletions

77
.github/workflows/wheels.yml vendored Normal file
View File

@ -0,0 +1,77 @@
name: Build
on:
push:
branches: [ master ]
paths-ignore: '**.md'
jobs:
build_wheels:
name: Build wheels on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-14]
pyver: [cp38, cp39, cp310, cp311, cp312]
steps:
- uses: actions/checkout@v4
- name: Set up QEMU
if: runner.os == 'Linux'
uses: docker/setup-qemu-action@v3
with:
platforms: arm64
- if: runner.os == 'Windows'
uses: microsoft/setup-msbuild@v2
- uses: actions/setup-python@v5
- name: Install pytest and cibuildwheel
run: python -m pip install cibuildwheel==2.17.0
- name: Build wheels
run: python -m cibuildwheel --output-dir wheelhouse
env:
CIBW_BUILD: ${{ matrix.pyver }}-*
CIBW_ARCHS_LINUX: auto aarch64
# CIBW_ARCHS_LINUX: x86_64
- uses: actions/upload-artifact@v4
with:
name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }}
path: ./wheelhouse/*.whl
build_sdist:
name: Build source distribution
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build sdist
run: pipx run build --sdist
- uses: actions/upload-artifact@v4
with:
name: cibw-sdist
path: dist/*.tar.gz
upload_pypi:
needs: [build_wheels, build_sdist]
runs-on: ubuntu-latest
environment: pypi
permissions:
id-token: write
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
steps:
- uses: actions/download-artifact@v4
with:
# unpacks all CIBW artifacts into dist/
pattern: cibw-*
path: dist
merge-multiple: true
- uses: pypa/gh-action-pypi-publish@release/v1
with:
repository-url: https://pypi.org/legacy/

View File

@ -1,5 +1,5 @@
cmake_minimum_required(VERSION 3.16)
project(small_gicp VERSION 0.0.1 LANGUAGES C CXX)
project(small_gicp VERSION 0.0.6 LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 17)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
@ -51,7 +51,7 @@ if(NOT Eigen3_FOUND)
)
add_library(Eigen3::Eigen INTERFACE IMPORTED GLOBAL)
set_target_properties(Eigen3::Eigen PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_BINARY_DIR}/Eigen3-src"
INTERFACE_INCLUDE_DIRECTORIES "${eigen3_SOURCE_DIR}"
)
endif()
@ -141,7 +141,7 @@ endif()
# Python bindings
if(BUILD_PYTHON_BINDINGS)
find_package(Python COMPONENTS Interpreter Development REQUIRED)
find_package(Python COMPONENTS Interpreter Development)
find_package(pybind11 CONFIG REQUIRED)
pybind11_add_module(small_gicp_python

View File

@ -4,7 +4,7 @@ build-backend = "scikit_build_core.build"
[project]
name = "small_gicp"
version = "0.0.1"
version = "0.0.6"
authors = [{name = "Kenji Koide", email = "k.koide@aist.go.jp"}]
description = "Efficient and parallelized algorithms for fine point cloud registration"
readme = "README.md"
@ -14,9 +14,6 @@ requires-python = ">=3.7"
[project.urls]
Homepage = "https://github.com/koide3/small_gicp"
[project.optional-dependencies]
test = ["pytest>=6.0"]
[tool.setuptools]
zip_safe = false
@ -31,8 +28,22 @@ BUILD_PYTHON_BINDINGS = true
BUILD_HELPER = false
BUILD_SHARED_LIBS = false
[tool.cibuildwheel.linux]
before-all = "yum install -y libomp-devel"
[tool.cibuildwheel.macos]
before-all = "brew install eigen libomp"
environment = { OpenMP_ROOT="/opt/homebrew/opt/libomp" }
[tool.cibuildwheel.windows]
before-all = "choco install eigen -y"
test-command = "cd /d {project} && pytest {project}/src --color=yes -v"
[tool.cibuildwheel]
manylinux-x86_64-image = "manylinux_2_28"
manylinux-aarch64-image = "manylinux_2_28"
build = "*"
skip = "pp*" # Don't build for PyPy
test-command = "pytest {project}/src --color=yes -v"
skip = "pp* *-win32 *_i686 *musllinux*" # Don't build for PyPy, Win32, i686
test-requires = "pytest numpy scipy"
test-command = "cd {project} && pytest {project}/src --color=yes -v"
build-verbosity = 1