Skip to content

Build Wheels

Build Wheels #127

Workflow file for this run

name: Build Wheels
on:
push:
branches:
- main
tags:
- 'v*'
workflow_dispatch:
jobs:
build_wheels:
name: Build wheels on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-22.04, windows-2022, macOS-14]
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v7
with:
python-version: '3.13'
- name: Install dependencies (Windows)
if: runner.os == 'Windows'
run: |
Invoke-WebRequest https://nmap.org/npcap/dist/npcap-sdk-1.16.zip -OutFile npcap-sdk.zip
Expand-Archive npcap-sdk.zip
echo "NPCAP_SDK=$(Resolve-Path npcap-sdk)" >> $env:GITHUB_ENV
- name: Build sdist
if: matrix.os == 'ubuntu-22.04'
run: |
pip install build
python -m build --sdist
- name: Build wheels
uses: pypa/cibuildwheel@v4.2.0
env:
CIBW_SKIP: '*-musllinux*'
CIBW_ARCHS_MACOS: universal2
CIBW_BEFORE_ALL_LINUX: >
yum install -y flex bison libnl3-devel bluez-libs-devel &&
curl https://www.tcpdump.org/release/libpcap-1.10.6.tar.gz -O &&
tar xf libpcap-1.10.6.tar.gz &&
cd libpcap-1.10.6 &&
./configure &&
make -j2 &&
make install
CIBW_ENVIRONMENT_WINDOWS: NPCAP_SDK=$NPCAP_SDK
CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: delvewheel repair -w {dest_dir} -v {wheel} --exclude wpcap.dll
with:
output-dir: dist
- uses: actions/upload-artifact@v7
with:
name: wheels-${{ matrix.os }}
path: dist
publish:
name: Publish
needs: [build_wheels]
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
permissions:
contents: write
id-token: write
environment:
name: pypi
url: https://pypi.org/p/cypcap
steps:
- uses: actions/download-artifact@v8
with:
pattern: wheels-*
merge-multiple: true
path: dist
- name: Publish release distributions to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
packages-dir: dist
- name: Release
uses: softprops/action-gh-release@v3
with:
files: dist