diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml new file mode 100644 index 0000000..523dc81 --- /dev/null +++ b/.github/workflows/build-wheels.yml @@ -0,0 +1,92 @@ +name: Build Wheels + +on: + push: + branches: + - master + pull_request: + branches: + - master + release: + types: [created] + +jobs: + # TODO: Test before wheel building + test: + name: Test + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest] + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Install admesh + # TODO: Do I need to install wget? + run: | + if [ ! -f admesh-$ADMESH/.libs/admesh ]; then + wget https://github.com/admesh/admesh/releases/download/v$ADMESH/admesh-$ADMESH.tar.gz; + tar -zxf admesh-$ADMESH.tar.gz; + cd admesh-$ADMESH; + "./configure"; + make; + mkdir src/admesh; + cp src/stl.h src/admesh/stl.h; + cd ..; + fi + + python -m pip install tox Cython + LD_LIBRARY_PATH=$PWD/admesh-$ADMESH/.libs LDFLAGS=-L$PWD/admesh-$ADMESH/.libs CFLAGS=-I$PWD/admesh-$ADMESH/src tox + + build_wheels: + name: Build wheels on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest] + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Install system build dependencies + run: | + if [[ "$RUNNER_OS" == "Linux" ]]; then + sudo apt update + sudo apt install -y build-essential wget tar cmake + elif [[ "$RUNNER_OS" == "macOS" ]]; then + brew install wget cmake + fi + + - name: Build wheels using cibuildwheel + uses: pypa/cibuildwheel@v2.22.0 + env: + # Build CPython and PyPy wheels for x86_64 linux + CIBW_BUILD: "*p3*-manylinux_x86_64" + CIBW_BEFORE_BUILD_LINUX: | + rpm -q admesh-devel || yum install -y --nogpgcheck /project/travis/*.x86_64.rpm; pip install Cython + CIBW_TEST_REQUIRES: "pytest" + CIBW_TEST_COMMAND: "pytest -v {project}/test" + + - name: Upload built wheels as artifact + uses: actions/upload-artifact@v4 + with: + name: cibw-wheels-${{ matrix.os }} + path: ./wheelhouse/*.whl + + #publish_pypi: + # name: Publish to PyPI + # needs: build_wheels + # runs-on: ubuntu-latest + # if: github.event_name == 'release' + + # steps: + # - name: Download built wheels + # uses: actions/download-artifact@v4 + # with: + # path: dist + + # - name: Publish to PyPI + # uses: pypa/gh-action-pypi-publish@release/v1 + # with: + # password: ${{ secrets.PYPI_API_TOKEN }} diff --git a/setup.py b/setup.py index 0f003dd..f06f433 100755 --- a/setup.py +++ b/setup.py @@ -41,6 +41,11 @@ def _autogen(*args, **kwargs): 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', + 'Programming Language :: Python :: 3.8', + 'Programming Language :: Python :: 3.9', + 'Programming Language :: Python :: 3.10', + 'Programming Language :: Python :: 3.11', + 'Programming Language :: Python :: 3.12', 'Topic :: Multimedia :: Graphics :: 3D Modeling', ], )