Skip to content

Commit 89939c5

Browse files
committed
Fix wheel building: create one fat wheel with all platform binaries
- Changed from multiple platform-specific wheels to one universal wheel - Downloads all onion binaries (Linux x86_64, macOS Intel, macOS ARM64) into single build - Python wrapper selects correct binary at runtime - Fixes BadZipFile error from merging multiple wheels with same name
1 parent ff77863 commit 89939c5

2 files changed

Lines changed: 32 additions & 34 deletions

File tree

.github/workflows/release.yml

Lines changed: 30 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -48,21 +48,10 @@ jobs:
4848
path: dalla_data_processing/deduplication/bin/onion-*
4949
if-no-files-found: error
5050

51-
build-wheels:
52-
name: Build wheels on ${{ matrix.os }}
51+
build-wheel:
52+
name: Build universal wheel with all platform binaries
5353
needs: build-onion
54-
runs-on: ${{ matrix.os }}
55-
strategy:
56-
matrix:
57-
include:
58-
- os: ubuntu-latest
59-
onion_artifact: onion-linux-x86_64
60-
- os: macos-13
61-
onion_artifact: onion-darwin-x86_64
62-
- os: macos-14
63-
onion_artifact: onion-darwin-arm64
64-
- os: windows-latest
65-
onion_artifact: none
54+
runs-on: ubuntu-latest
6655

6756
steps:
6857
- uses: actions/checkout@v4
@@ -71,24 +60,30 @@ jobs:
7160

7261
- name: Create bin directory
7362
run: mkdir -p dalla_data_processing/deduplication/bin
74-
shell: bash
7563

76-
- name: Download Onion binary
77-
if: matrix.onion_artifact != 'none'
64+
- name: Download Linux binary
65+
uses: actions/download-artifact@v4
66+
with:
67+
name: onion-linux-x86_64
68+
path: dalla_data_processing/deduplication/bin/
69+
70+
- name: Download macOS Intel binary
71+
uses: actions/download-artifact@v4
72+
with:
73+
name: onion-darwin-x86_64
74+
path: dalla_data_processing/deduplication/bin/
75+
76+
- name: Download macOS ARM binary
7877
uses: actions/download-artifact@v4
7978
with:
80-
name: ${{ matrix.onion_artifact }}
79+
name: onion-darwin-arm64
8180
path: dalla_data_processing/deduplication/bin/
8281

8382
- name: Set binary permissions
84-
if: matrix.onion_artifact != 'none'
8583
run: chmod +x dalla_data_processing/deduplication/bin/onion-*
86-
shell: bash
8784

88-
- name: List binary files
89-
if: matrix.onion_artifact != 'none'
85+
- name: List all binaries
9086
run: ls -lah dalla_data_processing/deduplication/bin/
91-
shell: bash
9287

9388
- name: Set up Python
9489
uses: actions/setup-python@v5
@@ -105,13 +100,16 @@ jobs:
105100

106101
- name: List wheel contents
107102
run: |
108-
python -m zipfile -l dist/*.whl | head -50
103+
echo "=== Wheel contents (binaries) ==="
104+
python -m zipfile -l dist/*.whl | grep onion-
105+
echo "=== Wheel info ==="
106+
ls -lh dist/
109107
110-
- name: Upload wheels
108+
- name: Upload wheel
111109
uses: actions/upload-artifact@v4
112110
with:
113-
name: wheels-${{ matrix.os }}
114-
path: dist/*
111+
name: wheel
112+
path: dist/*.whl
115113

116114
build-sdist:
117115
name: Build source distribution
@@ -140,16 +138,15 @@ jobs:
140138

141139
publish-pypi:
142140
name: Publish to PyPI
143-
needs: [build-wheels, build-sdist]
141+
needs: [build-wheel, build-sdist]
144142
runs-on: ubuntu-latest
145143
environment: release
146144

147145
steps:
148-
# Download all platform-specific wheels
146+
# Download the universal wheel with all platform binaries
149147
- uses: actions/download-artifact@v4
150148
with:
151-
pattern: wheels-*
152-
merge-multiple: true
149+
name: wheel
153150
path: dist/
154151

155152
- uses: actions/download-artifact@v4
@@ -173,7 +170,7 @@ jobs:
173170

174171
create-release:
175172
name: Create GitHub Release
176-
needs: [build-wheels, build-sdist]
173+
needs: [build-wheel, build-sdist]
177174
runs-on: ubuntu-latest
178175

179176
steps:
@@ -183,8 +180,7 @@ jobs:
183180

184181
- uses: actions/download-artifact@v4
185182
with:
186-
pattern: wheels-*
187-
merge-multiple: true
183+
name: wheel
188184
path: dist/
189185

190186
- uses: actions/download-artifact@v4

pyproject.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ Repository = "https://github.com/U4RASD/dalla-data-processing"
7979
packages = ["dalla_data_processing", "dalla_data_processing.core", "dalla_data_processing.deduplication", "dalla_data_processing.packing", "dalla_data_processing.stemming", "dalla_data_processing.quality", "dalla_data_processing.readability", "dalla_data_processing.utils"]
8080
include-package-data = true
8181

82+
zip-safe = false
83+
8284
[tool.setuptools.package-data]
8385
dalla_data_processing = ["py.typed"]
8486
"dalla_data_processing.stemming" = ["data/*.txt"]

0 commit comments

Comments
 (0)