From 57b9350b258b667f132f4690a83e8433e97e4957 Mon Sep 17 00:00:00 2001 From: Simone Mosciatti Date: Mon, 17 Nov 2025 13:32:44 -0800 Subject: [PATCH 1/7] Add cibuildwheel workflow for Mac and Linux MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .github/workflows/build-wheels.yml | 44 ++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 .github/workflows/build-wheels.yml diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml new file mode 100644 index 0000000..c8ad2ff --- /dev/null +++ b/.github/workflows/build-wheels.yml @@ -0,0 +1,44 @@ +name: Build Wheels + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + release: + types: [ published ] + +jobs: + build_wheels: + name: Build wheels on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, macos-latest] + + steps: + - uses: actions/checkout@v4 + + - name: Install poppler (macOS) + if: runner.os == 'macOS' + run: brew install poppler + + - name: Install poppler (Linux) + if: runner.os == 'Linux' + run: | + sudo apt-get update + sudo apt-get install -y libpoppler-cpp-dev pkg-config + + - name: Build wheels + uses: pypa/cibuildwheel@v2.21.3 + env: + CIBW_SKIP: pp* *-musllinux* + CIBW_ARCHS_MACOS: x86_64 arm64 + CIBW_ARCHS_LINUX: x86_64 + CIBW_BEFORE_ALL_LINUX: yum install -y poppler-cpp-devel + CIBW_BEFORE_ALL_MACOS: brew install poppler + + - uses: actions/upload-artifact@v4 + with: + name: wheels-${{ matrix.os }} + path: ./wheelhouse/*.whl From 1973e724e10355ed241c101a3290c160678c345f Mon Sep 17 00:00:00 2001 From: Simone Mosciatti Date: Mon, 17 Nov 2025 14:12:18 -0800 Subject: [PATCH 2/7] Use manylinux_2_28 for wheel builds MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Switches from manylinux2014 (poppler 0.26.5) to manylinux_2_28 (poppler 20.11.0) to meet minimum poppler version requirement. Builds Python 3.11, 3.12, and 3.13 wheels. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .github/workflows/build-wheels.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index c8ad2ff..982d396 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -32,10 +32,12 @@ jobs: - name: Build wheels uses: pypa/cibuildwheel@v2.21.3 env: + CIBW_BUILD: cp311-* cp312-* cp313-* CIBW_SKIP: pp* *-musllinux* CIBW_ARCHS_MACOS: x86_64 arm64 CIBW_ARCHS_LINUX: x86_64 - CIBW_BEFORE_ALL_LINUX: yum install -y poppler-cpp-devel + CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28 + CIBW_BEFORE_ALL_LINUX: dnf install -y --enablerepo=powertools poppler-cpp-devel CIBW_BEFORE_ALL_MACOS: brew install poppler - uses: actions/upload-artifact@v4 From 3620a1783d2c27b0ad9dfadd66d50bd97e09d737 Mon Sep 17 00:00:00 2001 From: Simone Mosciatti Date: Mon, 17 Nov 2025 14:16:16 -0800 Subject: [PATCH 3/7] Set macOS deployment target to 13.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes delocate-wheel error with modern Homebrew dependencies. If this fails, may need to increase to 15.0. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .github/workflows/build-wheels.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 982d396..ed5792d 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -39,6 +39,7 @@ jobs: CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28 CIBW_BEFORE_ALL_LINUX: dnf install -y --enablerepo=powertools poppler-cpp-devel CIBW_BEFORE_ALL_MACOS: brew install poppler + MACOSX_DEPLOYMENT_TARGET: "13.0" - uses: actions/upload-artifact@v4 with: From 8580745ee82017b7160704fe46741f9983b8d1ff Mon Sep 17 00:00:00 2001 From: Simone Mosciatti Date: Mon, 17 Nov 2025 14:17:46 -0800 Subject: [PATCH 4/7] Remove unnecessary host poppler installations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Poppler is installed in build containers via CIBW_BEFORE_ALL_*, not needed on the GitHub Actions runner host. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .github/workflows/build-wheels.yml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index ed5792d..7eb20f9 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -19,16 +19,6 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Install poppler (macOS) - if: runner.os == 'macOS' - run: brew install poppler - - - name: Install poppler (Linux) - if: runner.os == 'Linux' - run: | - sudo apt-get update - sudo apt-get install -y libpoppler-cpp-dev pkg-config - - name: Build wheels uses: pypa/cibuildwheel@v2.21.3 env: From a940b9a6326cd77f7e593f1573b1ff1241288e17 Mon Sep 17 00:00:00 2001 From: Simone Mosciatti Date: Mon, 17 Nov 2025 14:20:44 -0800 Subject: [PATCH 5/7] Bump macOS deployment target to 15.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Homebrew dependencies require macOS 15.0 minimum. Wheels will only work on macOS Sequoia and later. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .github/workflows/build-wheels.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index 7eb20f9..aa59408 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -29,7 +29,7 @@ jobs: CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28 CIBW_BEFORE_ALL_LINUX: dnf install -y --enablerepo=powertools poppler-cpp-devel CIBW_BEFORE_ALL_MACOS: brew install poppler - MACOSX_DEPLOYMENT_TARGET: "13.0" + MACOSX_DEPLOYMENT_TARGET: "15.0" - uses: actions/upload-artifact@v4 with: From 8c7590f3197a5b1e80d2acfff7d4a39832b6a1d5 Mon Sep 17 00:00:00 2001 From: Simone Mosciatti Date: Mon, 17 Nov 2025 14:25:04 -0800 Subject: [PATCH 6/7] Add GitHub release upload for wheels MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Automatically uploads built wheels to GitHub releases when a new release is published. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .github/workflows/build-wheels.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index aa59408..db3d9e8 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -35,3 +35,23 @@ jobs: with: name: wheels-${{ matrix.os }} path: ./wheelhouse/*.whl + + upload_release: + name: Upload wheels to GitHub Release + needs: build_wheels + runs-on: ubuntu-latest + if: github.event_name == 'release' && github.event.action == 'published' + permissions: + contents: write + + steps: + - uses: actions/download-artifact@v4 + with: + pattern: wheels-* + merge-multiple: true + path: dist + + - name: Upload wheels to release + uses: softprops/action-gh-release@v1 + with: + files: dist/*.whl From a2fda74dd5f8107cdd4989921aa87dd4be523cab Mon Sep 17 00:00:00 2001 From: Simone Mosciatti Date: Fri, 21 Nov 2025 12:27:15 -0800 Subject: [PATCH 7/7] add linux arm --- .github/workflows/build-wheels.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml index db3d9e8..9d4739e 100644 --- a/.github/workflows/build-wheels.yml +++ b/.github/workflows/build-wheels.yml @@ -25,8 +25,9 @@ jobs: CIBW_BUILD: cp311-* cp312-* cp313-* CIBW_SKIP: pp* *-musllinux* CIBW_ARCHS_MACOS: x86_64 arm64 - CIBW_ARCHS_LINUX: x86_64 + CIBW_ARCHS_LINUX: x86_64 aarch64 CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28 + CIBW_MANYLINUX_AARCH64_IMAGE: manylinux_2_28 CIBW_BEFORE_ALL_LINUX: dnf install -y --enablerepo=powertools poppler-cpp-devel CIBW_BEFORE_ALL_MACOS: brew install poppler MACOSX_DEPLOYMENT_TARGET: "15.0"