fix(deb): move flavor suffix after version number in DEB filename (ve… #84
This file contains hidden or 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
| # CI: build and test both backends on every push/PR. | |
| # | |
| # Two jobs run in parallel: | |
| # test-bitexact — NUMPYCPP_STD_ONLY=OFF (default) | |
| # All 900 tests verify IEEE-754 bit-identical results vs numpy. | |
| # Requires: numpy .so loaded (OpenBLAS + SVML dlsym), AVX-512 capable CPU. | |
| # | |
| # test-std — NUMPYCPP_STD_ONLY=ON | |
| # Same API, pure <cmath> + C++ loops. Tests run with atol/rtol tolerance. | |
| # No external math dependencies. | |
| # | |
| # DEB packaging (flavor appears after version number in filename): | |
| # cmake -DNUMPYCPP_STD_ONLY=OFF → numpycpp-dev-<ver>-bitexact-Linux.deb | |
| # cmake -DNUMPYCPP_STD_ONLY=ON → numpycpp-dev-<ver>-std-Linux.deb | |
| name: CI | |
| on: | |
| push: | |
| branches: [ main ] | |
| pull_request: | |
| branches: [ main ] | |
| jobs: | |
| # ── Job 1: bit-exact backend ───────────────────────────────────────────────── | |
| test-bitexact: | |
| name: bitexact / Python ${{ matrix.python }} | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python: ["3.10", "3.11", "3.12"] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python ${{ matrix.python }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python }} | |
| - name: Install Python dependencies | |
| run: pip install "numpy>=1.23,<2.0" pybind11 pytest cmake | |
| - name: Install system dependencies | |
| run: | | |
| sudo apt-get update -qq | |
| sudo apt-get install -y libeigen3-dev | |
| - name: Diagnose numpy symbols | |
| run: | | |
| python diagnose_numpy.py | |
| grep -q avx512f /proc/cpuinfo && echo "AVX-512: present in cpuinfo" || echo "AVX-512: NOT in cpuinfo" | |
| working-directory: tests | |
| - name: Configure (bitexact) | |
| run: cmake -S tests -B tests/build -DCMAKE_BUILD_TYPE=Release -DNUMPYCPP_STD_ONLY=OFF | |
| - name: Build | |
| run: cmake --build tests/build -j$(nproc) | |
| - name: Run 900 bit-exact tests | |
| run: | | |
| cd tests | |
| python -m pytest test_all.py -q --tb=short --no-header | |
| # ── Job 2: std / performance-first backend ─────────────────────────────────── | |
| test-std: | |
| name: std / Python ${{ matrix.python }} | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python: ["3.10", "3.11", "3.12"] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python ${{ matrix.python }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python }} | |
| - name: Install Python dependencies | |
| run: pip install "numpy>=1.23,<2.0" pybind11 pytest cmake | |
| - name: Install system dependencies | |
| run: | | |
| sudo apt-get update -qq | |
| sudo apt-get install -y libeigen3-dev | |
| - name: Configure (std) | |
| run: cmake -S tests -B tests/build_std -DCMAKE_BUILD_TYPE=Release -DNUMPYCPP_STD_ONLY=ON | |
| - name: Build | |
| run: cmake --build tests/build_std -j$(nproc) | |
| - name: Run API-compatibility tests (std mode) | |
| # std mode: skip tests that require bit-exact transcendental / BLAS results. | |
| # All structural, reduction, manipulation, io, comparison, astype, | |
| # and advanced-indexing tests still run (~423 / 900). | |
| # test_unary_math — transcendental element-wise (exp/log/sin/…) | |
| # test_dot/norm/matmul — linalg (BLAS vs C++ loops) | |
| # TestEinsum — einsum (BLAS vs loops) | |
| # test_avx512_boundary — AVX-512 path not present in std build | |
| # nan/domain/signed_zero/_inf — transcendental edge cases | |
| run: | | |
| cd tests | |
| python -m pytest test_all.py -q --tb=short --no-header -k "not (test_unary_math or test_dot or test_norm or test_matmul or TestEinsum or test_avx512_boundary or test_nan_passthrough or test_nan_mixed or test_domain or signed_zero or _inf or test_sign_inf)" | |
| # ── Job 3: package both DEBs ───────────────────────────────────────────────── | |
| package: | |
| name: Package DEBs | |
| runs-on: ubuntu-latest | |
| needs: [test-bitexact, test-std] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Build bitexact DEB | |
| run: | | |
| cmake -S . -B build_bitexact -DNUMPYCPP_STD_ONLY=OFF | |
| cmake --build build_bitexact --target deb | |
| ls build_bitexact/numpycpp-dev-*-bitexact-*.deb | |
| - name: Build std DEB | |
| run: | | |
| cmake -S . -B build_std_deb -DNUMPYCPP_STD_ONLY=ON | |
| cmake --build build_std_deb --target deb | |
| ls build_std_deb/numpycpp-dev-*-std-*.deb | |
| - name: Upload DEBs as artifacts | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: numpycpp-debs | |
| path: | | |
| build_bitexact/*.deb | |
| build_std_deb/*.deb |