diff --git a/.github/workflows/pip.yml b/.github/workflows/pip.yml index 19836dd..cdb491f 100644 --- a/.github/workflows/pip.yml +++ b/.github/workflows/pip.yml @@ -15,18 +15,18 @@ jobs: matrix: platform: [ubuntu-latest] python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] - + runs-on: ${{ matrix.platform }} - + steps: - uses: actions/checkout@v4 with: submodules: true - + - uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - + - name: Install system dependencies run: | sudo apt-get update @@ -36,16 +36,15 @@ jobs: build-essential \ cmake \ ninja-build - + - name: Add requirements run: python -m pip install --upgrade pip wheel setuptools - + - name: Build and install run: pip install --verbose .[test] - + - name: Test import run: python -c "import pylibbpf; print('Import successful')" - + - name: Test run: python -m pytest -v - \ No newline at end of file diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index 0dcd081..26a99e9 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -18,13 +18,13 @@ jobs: - uses: actions/checkout@v4 with: submodules: true - + - name: Build SDist run: pipx run build --sdist - + - name: Check metadata run: pipx run twine check dist/* - + - uses: actions/upload-artifact@v4 with: name: cibw-sdist @@ -38,46 +38,46 @@ jobs: matrix: # Build for both x86_64 and aarch64 arch: [x86_64, aarch64] - + steps: - uses: actions/checkout@v4 with: submodules: true - + # Set up QEMU for aarch64 emulation - name: Set up QEMU if: matrix.arch == 'aarch64' uses: docker/setup-qemu-action@v3 with: platforms: arm64 - + - name: Build wheels uses: pypa/cibuildwheel@v2.17 env: # Only build for Linux CIBW_PLATFORM: linux CIBW_ARCHS_LINUX: ${{ matrix.arch }} - + # Python versions to build for CIBW_BUILD: "cp38-* cp39-* cp310-* cp311-* cp312-*" CIBW_SKIP: "*-musllinux*" # Skip musl builds, focus on glibc - + # Install system dependencies before building CIBW_BEFORE_ALL_LINUX: > yum install -y epel-release && yum install -y libbpf-devel kernel-headers || (apt-get update && apt-get install -y libbpf-dev linux-headers-generic) - + # Test the built wheels CIBW_TEST_COMMAND: "python -c 'import pylibbpf; print(f\"pylibbpf {pylibbpf.__version__} imported successfully\")'" - + # Skip testing on emulated architectures (too slow) CIBW_TEST_SKIP: "*-linux_aarch64" - + - name: Verify clean directory run: git diff --exit-code shell: bash - + - name: Upload wheels uses: actions/upload-artifact@v4 with: @@ -95,7 +95,7 @@ jobs: environment: name: pypi # url: https://pypi.org/project/pylibbpf/${{ github.event.release.name }} - + steps: - name: Download all artifacts uses: actions/download-artifact@v4 @@ -103,7 +103,7 @@ jobs: pattern: cibw-* path: dist merge-multiple: true - + - name: Publish to PyPI uses: pypa/gh-action-pypi-publish@release/v1 with: diff --git a/setup.py b/setup.py index 4a6e20f..6e995a7 100644 --- a/setup.py +++ b/setup.py @@ -1,5 +1,4 @@ import os -import re import subprocess import sys from pathlib import Path @@ -50,7 +49,7 @@ class CMakeBuild(build_ext): f"-DCMAKE_BUILD_TYPE={cfg}", # not used on MSVC, but no harm ] build_args = [] - + # Adding CMake arguments set as environment variable # (needed e.g. to build for ARM OSx on conda-forge) if "CMAKE_ARGS" in os.environ: diff --git a/tests/test_basic.py b/tests/test_basic.py index f0417db..1d63b64 100644 --- a/tests/test_basic.py +++ b/tests/test_basic.py @@ -1,5 +1,6 @@ import pylibbpf as m + def test_main(): assert m.__version__ == "0.0.1" assert m.add(1, 2) == 3