Skip to content

Fix build for Cython v3.0.0 #39

Fix build for Cython v3.0.0

Fix build for Cython v3.0.0 #39

Workflow file for this run

# Python: "3.8", "3.9", "3.10"
# Older version do not support f-strings
# OS: ubuntu-20.04, ubuntu-latest
# OS: macOS-10.15, macos-11 (, macos-latest)
# OS: windows-2019
name: Python package
on:
push:
branches: [ deploy ]
pull_request:
banches: [ deploy ]
jobs:
# Explore-GitHub-Actions:
# runs-on: ubuntu-latest
# steps:
# - run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event."
# - run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by GitHub!"
# - run: echo "🔎 The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}."
# - name: Check out repository code
# uses: actions/checkout@v2
# - run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner."
# - run: echo "🖥️ The workflow is now ready to test your code on the runner."
# - name: List files in the repository
# run: |
# ls ${{ github.workspace }}
# - run: echo "🍏 This job's status is ${{ job.status }}."
# # Does not produce manylinux that is required for twine
# build_unix:
# name: Build wheels on ${{ matrix.os }}
# runs-on: ${{ matrix.os }}
# strategy:
# fail-fast: true
# matrix:
# # os: [ubuntu-20.04,ubuntu-18.04]
# # python-version: ["3.8","3.9","3.10"]
# os: [ubuntu-18.04]
# python-version: ["3.9"]
# steps:
# - uses: actions/checkout@v2
# - name: Set up Python ${{ matrix.python-version }}
# uses: actions/setup-python@v2
# with:
# python-version: ${{ matrix.python-version }}
# - name: Install dependencies
# run: |
# python -m pip install --upgrade pip
# python -m pip install pytest pytest-benchmark build
# python -m pip install numpy scipy matplotlib>=3.0.0
# if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
# - name: Compile and install
# run: |
# python -m pip install . -v
# ls ${{ github.workspace }}/build || true
# - name: Test installation
# run : |
# mv dtaidistance dtaidistance_pkg
# python ./util/check_installation.py
# mv dtaidistance_pkg dtaidistance
# - name: Test with pytest
# run: |
# mv dtaidistance dtaidistance_pkg
# pytest --ignore=venv --benchmark-skip
# mv dtaidistance_pkg dtaidistance
# - name: Build
# run: |
# python -m build
# - name: Store wheels
# uses: actions/upload-artifact@v2
# with:
# name: wheels
# path: dist/*.whl
build_unix:
name: Build wheels on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: true
matrix:
# os: [ubuntu-20.04,ubuntu-18.04]
# python-version: ["3.8","3.9","3.10"]
os: [ubuntu-18.04]
# cibuildwheel will automatically provide all Python versions
python-version: ["3.9"]
steps:
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install cibuildwheel==2.3.1
- name: Build wheel
run: |
pwd
ls
python -m cibuildwheel --output-dir dist/
env:
CIBW_BUILD_VERBOSITY: 2
# cp36-* and cp37-* do not support f-strings
CIBW_SKIP: cp36-* cp37-* pp* *-manylinux_i686 *-musllinux_i686 *-musllinux_x86_64
CIBW_TEST_EXTRAS: "dev"
CIBW_TEST_COMMAND: pytest --ignore=venv --benchmark-skip {project}/tests
- name: Store wheels
uses: actions/upload-artifact@v2
with:
name: wheels
path: dist/*.whl
build_macos:
name: Build wheels on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: true
matrix:
os: [macos-11]
python-version: ["3.8","3.9","3.10"]
steps:
- uses: actions/checkout@v2
- name: Install OpenMP
run: |
# OpenMP libraries are not installed by default on macos
clang --version
clang --version | grep "13\."
# hardcoded, not ideal
# https://mac.r-project.org/openmp/
curl -O https://mac.r-project.org/openmp/openmp-13.0.0-darwin21-Release.tar.gz
sudo tar fvxz openmp-13.0.0-darwin21-Release.tar.gz -C /
ls /usr/local/lib
ls /usr/local/include
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install pytest pytest-benchmark build
python -m pip install numpy scipy matplotlib>=3.0.0
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: Compile and install
run: |
export LDFLAGS="-L/usr/local/lib"
export CPPFLAGS="-I/usr/local/include"
python -m pip install . -v
ls ${{ github.workspace }}/build || true
- name: Test installation
run : |
mv dtaidistance dtaidistance_pkg
python ./util/check_installation.py
mv dtaidistance_pkg dtaidistance
- name: Test with pytest
run: |
export LDFLAGS="-L/usr/local/lib"
export CPPFLAGS="-I/usr/local/include"
mv dtaidistance dtaidistance_pkg
pytest --ignore=venv --benchmark-skip
mv dtaidistance_pkg dtaidistance
- name: Build
run: |
python -m build
- name: Store wheels
uses: actions/upload-artifact@v2
with:
name: wheels
path: dist/*.whl
build_windows:
name: Build wheels on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: true
matrix:
os: [windows-2019]
python-version: ["3.8","3.9","3.10"]
steps:
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install pytest pytest-benchmark pytest-env build cython
python -m pip install numpy scipy matplotlib>=3.0.0
- name: Compile and install
run: |
python -m pip install . -v
ls ${{ github.workspace }}/build || true
- name: Test installation
run : |
mv dtaidistance dtaidistance_pkg
python ./util/check_installation.py
mv dtaidistance_pkg dtaidistance
- name: Test with pytest
run: |
mv dtaidistance dtaidistance_pkg
pytest --ignore=venv --benchmark-skip
mv dtaidistance_pkg dtaidistance
- name: Build
run: |
python -m build
- name: Store wheels
uses: actions/upload-artifact@v2
with:
name: wheels
path: dist/*.whl
build_sdist:
name: Prepare source distribution
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Setup Python
uses: actions/setup-python@v2
with:
python-version: '3.9'
- name: Build
run: |
python -m pip install build
python -m build --sdist
- name: Store artifacts
uses: actions/upload-artifact@v2
with:
name: wheels
path: dist/*.tar.gz
upload_wheels:
name: Upload wheels to PyPi
runs-on: ubuntu-latest
# upload to PyPI on every tag starting with 'v'
# if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/v')
needs: [build_unix,build_macos,build_windows,build_sdist]
steps:
- uses: actions/download-artifact@v2
with:
name: wheels
path: dist
- name: Publish package to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
packages_dir: dist/
# test_upload_wheels:
# name: Upload wheels to TestPyPi
# runs-on: ubuntu-latest
# # upload to PyPI on every tag starting with 'v'
# # if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/v')
# needs: [build_unix,build_macos,build_windows,build_sdist]
# # needs: [build_unix]
# steps:
# - uses: actions/download-artifact@v2
# with:
# name: wheels
# path: dist
# - name: Publish package to TestPyPI
# uses: pypa/gh-action-pypi-publish@release/v1
# with:
# user: __token__
# password: ${{ secrets.TEST_PYPI_API_TOKEN_TEST }}
# repository_url: https://test.pypi.org/legacy/