Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: update maturin #6

Merged
merged 5 commits into from
Jan 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
227 changes: 103 additions & 124 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,163 +1,142 @@
name: Build

on: [ push, pull_request ]

env:
PACKAGE_NAME: fastcrc
PYTHON_VERSION: "3.6" # to build abi3 wheels
name: CI

on:
push:
branches:
- main
- master
tags:
- '*'
pull_request:
workflow_dispatch:

jobs:
test:
name: Test
runs-on: ubuntu-latest
strategy:
matrix:
os: [ ubuntu-latest ]
python-version: [ "3.6", "3.7", "3.8", "3.9", "3.10" ]

python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12']
steps:
- uses: actions/checkout@v2

- name: Setup Python ${{ matrix.python-version }} on ${{ matrix.os }}
uses: actions/setup-python@v1
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- uses: actions-rust-lang/setup-rust-toolchain@v1
- name: Install maturin
run: pip install maturin
- name: Build wheels
run: maturin build --release
- name: Install fastcrc
run: pip install target/wheels/fastcrc*.whl
- name: Test
run: python tests/test_fastcrc.py

- uses: actions-rs/toolchain@v1
linux:
name: Build wheels for Linux
runs-on: ubuntu-latest
needs: test
strategy:
matrix:
target: [x86_64, x86, aarch64, armv7, s390x, ppc64le]
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
toolchain: stable
override: true

- name: Run cargo check
uses: actions-rs/cargo@v1
python-version: '3.12'
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
command: check

- name: Install setuptools and setuptools-rust
run: |
python -m pip install --upgrade wheel setuptools setuptools-rust

- name: Install fastcrc
run: |
python setup.py install

- name: Run tests
run: |
cd tests
python test_fastcrc.py
target: ${{ matrix.target }}
args: --release --out dist --find-interpreter
sccache: 'true'
manylinux: auto
- name: Upload wheels
uses: actions/upload-artifact@v3
with:
name: wheels
path: dist

build_package:
# Adapted from https://github.com/pydantic/pydantic-core/blob/main/.github/workflows/ci.yml
name: build on ${{ matrix.platform || matrix.os }} (${{ matrix.target }} - ${{ matrix.manylinux || 'auto' }})
needs: [ test ]
windows:
runs-on: windows-latest
name: Build wheels for Windows
needs: test
strategy:
fail-fast: false
matrix:
os: [ubuntu, macos, windows]
target: [x86_64, aarch64]
manylinux: [auto]
include:
- os: ubuntu
platform: linux
- os: windows
ls: dir
- os: windows
ls: dir
target: i686
python-architecture: x86
- os: macos
target: aarch64
- os: ubuntu
platform: linux
target: i686
- os: ubuntu
platform: linux
target: aarch64
container: messense/manylinux_2_24-cross:aarch64
- os: ubuntu
platform: linux
target: armv7
container: messense/manylinux_2_24-cross:armv7
# musllinux
- os: ubuntu
platform: linux
target: x86_64
manylinux: musllinux_1_1
- os: ubuntu
platform: linux
target: aarch64
manylinux: musllinux_1_1
exclude:
# Windows on arm64 only supports Python 3.11+
- os: windows
target: aarch64

runs-on: ${{ matrix.os }}-latest
target: [x64, x86]
steps:
- uses: actions/checkout@v3

- name: set up python
uses: actions/setup-python@v4
- uses: actions/setup-python@v4
with:
python-version: ${{ env.PYTHON_VERSION }}
architecture: ${{ matrix.python-architecture || 'x64' }}

- name: build sdist
if: ${{ matrix.os == 'ubuntu' && matrix.target == 'x86_64' && matrix.manylinux == 'auto' }}
uses: messense/maturin-action@v1
python-version: '3.12'
architecture: ${{ matrix.target }}
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
command: sdist
args: --out dist
rust-toolchain: stable
target: ${{ matrix.target }}
args: --release --out dist --find-interpreter
sccache: 'true'
- name: Upload wheels
uses: actions/upload-artifact@v3
with:
name: wheels
path: dist

- name: build wheels
uses: messense/maturin-action@v1
macos:
runs-on: macos-latest
name: Build wheels for macOS
needs: test
strategy:
matrix:
target: [x86_64, aarch64]
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: '3.12'
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
manylinux: ${{ matrix.manylinux || 'auto' }}
container: ${{ matrix.container }}
args: --release --out dist
rust-toolchain: stable

- run: ${{ matrix.ls || 'ls -lh' }} dist/

- run: pip install -U twine

- run: twine check dist/*

args: --release --out dist --find-interpreter
sccache: 'true'
- name: Upload wheels
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
with:
name: wheels
path: dist

list-pypi-files:
needs: [ build_package ]
sdist:
runs-on: ubuntu-latest

name: Build sdist
needs: test
steps:
- uses: actions/checkout@v3

- name: get dist artifacts
uses: actions/download-artifact@v3
- name: Build sdist
uses: PyO3/maturin-action@v1
with:
command: sdist
args: --out dist
- name: Upload sdist
uses: actions/upload-artifact@v3
with:
name: wheels
path: dist

- run: ls -lh dist/
- run: echo "`ls dist | wc -l` files"

upload_pypi:
needs: [ build_package ]
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/v')
release:
name: Release
runs-on: ubuntu-latest
permissions:
id-token: write
if: "startsWith(github.ref, 'refs/tags/')"
needs: [linux, windows, macos, sdist]
steps:
- uses: actions/download-artifact@v2
- uses: actions/download-artifact@v3
with:
name: wheels
- name: Publish to PyPI
uses: messense/maturin-action@v1
env:
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}

- name: Publish package distributions to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
command: upload
args: --skip-existing *
skip-existing: true
packages-dir: wheels/
4 changes: 4 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ Change Log

This document records all notable changes to `fastcrc <https://github.com/overcat/fastcrc/>`_.

Pending
-------
* chore: drop support for Python 3.6. (`#6 <https://github.com/overcat/fastcrc/pull/6>`_)

0.2.1 (September 15, 2022)
---------------------
* feat: add `fastcrc.crc16.ibm_refin` and `fastcrc.crc32.reversed_reciprocal_refin`, these are two experimental functions that may be removed in the future.
Expand Down
Loading