forked from aiortc/aioquic
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This massive undertaking will make qh3 more usable by the broader community and ease the "http3" as default via Niquests and urllib3-future. The work done here allows us to bump to our first major.
- Loading branch information
Showing
85 changed files
with
4,571 additions
and
5,319 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,275 @@ | ||
# This file is autogenerated by maturin v1.2.3 | ||
# To update, run | ||
# | ||
# maturin generate-ci github | ||
# | ||
name: CI | ||
|
||
on: | ||
push: | ||
branches: | ||
- main | ||
tags: | ||
- '*' | ||
workflow_dispatch: | ||
pull_request: | ||
|
||
permissions: | ||
contents: read | ||
|
||
concurrency: | ||
group: ci-${{ github.ref_name }} | ||
cancel-in-progress: true | ||
|
||
jobs: | ||
|
||
lint: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: actions/setup-python@v4 | ||
with: | ||
python-version: '3.10' | ||
- run: pip install pre-commit | ||
name: Install pre-commit | ||
- run: pre-commit run --all | ||
name: Run pre-commit checks | ||
|
||
test: | ||
timeout-minutes: 20 | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
os: [ubuntu-latest, macos-latest, windows-latest ] # windows-latest | ||
python_version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', 'pypy-3.9', 'pypy-3.10'] | ||
exclude: | ||
# circumvent wierd issue with qh3.asyncio+windows+proactor loop... | ||
- python_version: pypy-3.9 | ||
os: windows-latest | ||
- python_version: pypy-3.10 | ||
os: windows-latest | ||
runs-on: ${{ matrix.os }} | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: actions/setup-python@v4 | ||
with: | ||
python-version: ${{ matrix.python_version }} | ||
- name: Setup dependencies | ||
run: pip install --upgrade pip pytest | ||
- name: Set up Clang (Linux) | ||
if: matrix.os == 'ubuntu-latest' | ||
run: sudo apt-get install clang | ||
- name: Set up Clang (Cygwin) | ||
if: matrix.os == 'windows-latest' | ||
run: choco install llvm nasm -y | ||
- name: Build wheels (Unix, Linux) | ||
if: matrix.os != 'windows-latest' | ||
uses: PyO3/maturin-action@v1 | ||
with: | ||
args: --release --out dist --interpreter ${{ matrix.python_version }} | ||
sccache: 'true' | ||
manylinux: auto | ||
before-script-linux: | | ||
sudo apt-get update || echo "no apt support" | ||
sudo apt-get upgrade -y || echo "no apt support" | ||
sudo apt-get install -y libclang libclang-dev || echo "no apt support" | ||
sudo apt-get install -y linux-headers-generic || echo "no apt support" | ||
sudo apt-get install -y libc6-dev || echo "no apt support" | ||
yum install -y llvm-toolset-7-clang || echo "not yum based" | ||
source /opt/rh/llvm-toolset-7/enable || echo "not yum based" | ||
- name: Build wheels (NT) | ||
if: matrix.os == 'windows-latest' | ||
uses: PyO3/[email protected] | ||
with: | ||
args: --release --out dist | ||
sccache: 'true' | ||
target: x64 | ||
- run: pip install --find-links=./dist qh3 | ||
name: Install built package | ||
- name: Disable firewall and configure compiler | ||
if: matrix.os == 'macos-latest' | ||
run: | | ||
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off | ||
echo "AIOQUIC_SKIP_TESTS=chacha20" >> $GITHUB_ENV | ||
- name: Ensure test target (NT) | ||
if: matrix.os == 'windows-latest' | ||
run: Remove-Item -Path qh3 -Force -Recurse | ||
- name: Ensure test target (Linux, Unix) | ||
if: matrix.os != 'windows-latest' | ||
run: rm -fR qh3 | ||
- run: python -m pip install -r dev-requirements.txt | ||
name: Install dev requirements | ||
- run: python -m unittest discover -v | ||
name: Run tests | ||
|
||
linux: | ||
runs-on: ubuntu-latest | ||
needs: | ||
- test | ||
- lint | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
target: [ x86_64, s390x, aarch64, armv7l ] | ||
python_version: [ '3.10', 'pypy-3.7', 'pypy-3.8', 'pypy-3.9', 'pypy-3.10' ] | ||
manylinux: [ 'manylinux2014', 'musllinux_1_1' ] | ||
exclude: | ||
- manylinux: musllinux_1_1 | ||
target: s390x | ||
|
||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: actions/setup-python@v4 | ||
with: | ||
python-version: ${{ matrix.python_version }} | ||
- name: Build wheels | ||
uses: PyO3/maturin-action@v1 | ||
env: | ||
CFLAGS_aarch64_unknown_linux_gnu: "-D__ARM_ARCH=8" | ||
with: | ||
target: ${{ matrix.target }} | ||
args: --release --out dist --interpreter ${{ matrix.python_version }} | ||
sccache: 'true' | ||
manylinux: ${{ matrix.manylinux }} | ||
before-script-linux: | | ||
sudo apt-get update || echo "no apt support" | ||
sudo apt-get upgrade -y || echo "no apt support" | ||
sudo apt-get install -y libclang libclang-dev || echo "no apt support" | ||
sudo apt-get install -y linux-headers-generic || echo "no apt support" | ||
sudo apt-get install -y libc6-dev "libc6-dev-*-cross" || echo "no apt support" | ||
sudo apt-get install -y gcc-multilib || echo "no apt support" | ||
yum install -y llvm-toolset-7-clang || echo "not yum based" | ||
source /opt/rh/llvm-toolset-7/enable || echo "not yum based" | ||
- name: Upload wheels | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: wheels | ||
path: dist | ||
|
||
windows: | ||
needs: | ||
- test | ||
- lint | ||
runs-on: windows-latest | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
target: [ x64, ] | ||
python_version: [ '3.10', 'pypy-3.7', 'pypy-3.8', 'pypy-3.9', 'pypy-3.10' ] | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: actions/setup-python@v4 | ||
with: | ||
python-version: ${{ matrix.python_version }} | ||
architecture: ${{ matrix.target }} | ||
- name: Set up Clang (Cygwin) | ||
run: choco install llvm nasm -y | ||
- name: Build wheels | ||
uses: PyO3/maturin-action@v1 | ||
with: | ||
target: ${{ matrix.target }} | ||
args: --release --out dist | ||
sccache: 'true' | ||
- name: Upload wheels | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: wheels | ||
path: dist | ||
|
||
macos: | ||
needs: | ||
- test | ||
- lint | ||
runs-on: macos-latest | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
target: [ x86_64, aarch64 ] | ||
python_version: [ '3.10', 'pypy-3.7', 'pypy-3.8', 'pypy-3.9', 'pypy-3.10' ] | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: actions/setup-python@v4 | ||
with: | ||
python-version: ${{ matrix.python_version }} | ||
- name: Build wheels | ||
uses: PyO3/maturin-action@v1 | ||
with: | ||
target: ${{ matrix.target }} | ||
args: --release --out dist --interpreter ${{ matrix.python_version }} | ||
sccache: 'true' | ||
- name: Upload wheels | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: wheels | ||
path: dist | ||
|
||
sdist: | ||
needs: | ||
- test | ||
- lint | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@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 | ||
|
||
checksum: | ||
name: Compute hashes | ||
runs-on: ubuntu-latest | ||
needs: [windows, macos, linux, sdist] | ||
if: "startsWith(github.ref, 'refs/tags/')" | ||
outputs: | ||
hashes: ${{ steps.compute.outputs.hashes }} | ||
steps: | ||
- uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 | ||
- name: Download distributions | ||
uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2 | ||
with: | ||
name: wheels | ||
path: dist | ||
- name: Collected dists | ||
run: | | ||
tree dist | ||
- name: Generate hashes | ||
id: compute # needs.checksum.outputs.hashes | ||
working-directory: ./dist | ||
run: echo "hashes=$(sha256sum * | base64 -w0)" >> $GITHUB_OUTPUT | ||
|
||
provenance: | ||
needs: checksum | ||
if: "startsWith(github.ref, 'refs/tags/')" | ||
uses: "slsa-framework/slsa-github-generator/.github/workflows/[email protected]" | ||
permissions: | ||
actions: read | ||
id-token: write | ||
contents: write | ||
with: | ||
base64-subjects: ${{ needs.checksum.outputs.hashes }} | ||
upload-assets: true | ||
compile-generator: true | ||
|
||
release: | ||
name: Release | ||
runs-on: ubuntu-latest | ||
if: "startsWith(github.ref, 'refs/tags/')" | ||
needs: provenance | ||
environment: pypi | ||
permissions: | ||
id-token: write | ||
steps: | ||
- uses: actions/download-artifact@v3 | ||
with: | ||
name: wheels | ||
- name: Publish to PyPI | ||
uses: PyO3/[email protected] | ||
with: | ||
command: upload | ||
args: --non-interactive --skip-existing * |
Oops, something went wrong.