Skip to content

Commit d84fb60

Browse files
committed
Fix wheel platform tag for PyPI upload
- Replace auditwheel with custom rename script - Preserves NEURON mechanisms while adding manylinux_2_17_x86_64 tag - Fixes 'unsupported platform tag linux_x86_64' error
1 parent 1ba6dca commit d84fb60

2 files changed

Lines changed: 17 additions & 6 deletions

File tree

.github/workflows/build-wheels.yml

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,20 @@ jobs:
5151
# Use manylinux2014 (manylinux_2_17)
5252
CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014
5353

54-
# Skip repair tools - NEURON mechanisms must be preserved
55-
# auditwheel (Linux) and delocate (macOS) strip the compiled mechanisms
56-
# Users must have system MPI and NEURON installed
57-
CIBW_REPAIR_WHEEL_COMMAND_LINUX: "cp {wheel} {dest_dir}/"
54+
# Custom repair to preserve NEURON mechanisms while adding proper platform tags
55+
# Standard tools (auditwheel/delocate) strip the architecture directories
56+
CIBW_REPAIR_WHEEL_COMMAND_LINUX: |
57+
python -c "
58+
import shutil, sys
59+
from pathlib import Path
60+
wheel = Path(sys.argv[1])
61+
dest = Path(sys.argv[2])
62+
# Rename to manylinux without modifying contents
63+
new_name = wheel.name.replace('linux_', 'manylinux_2_17_').replace('manylinux2014_', 'manylinux_2_17_')
64+
shutil.copy2(wheel, dest / new_name)
65+
" {wheel} {dest_dir}
66+
67+
# macOS: Just copy wheel as-is (already has correct platform tag)
5868
CIBW_REPAIR_WHEEL_COMMAND_MACOS: "cp {wheel} {dest_dir}/"
5969

6070
- name: Show built wheel names

CHANGELOG.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1111

1212
### Fixed
1313
- **CRITICAL: Compiled NEURON Mechanisms Missing from PyPI Wheels**: Fixed CI workflow to preserve compiled mechanisms in published wheels
14-
- Disabled `auditwheel repair` (Linux) and `delocate` (macOS) which were stripping out x86_64/ and arm64/ directories
15-
- Wheels now correctly include libnrnmech.so and all compiled NEURON mechanisms
14+
- Replaced `auditwheel repair` with custom wheel renaming that preserves x86_64/ and arm64/ directories
15+
- Wheels now correctly tagged as manylinux_2_17_x86_64 while including all compiled NEURON mechanisms
1616
- Resolves "NEURON mechanisms not found" errors when installing from PyPI
17+
- Resolves "unsupported platform tag 'linux_x86_64'" upload error to PyPI
1718
- Users can now successfully `pip install myogen` or `uv add MyoGen` without compilation errors
1819

1920
## [0.6.6] - 2025-12-16

0 commit comments

Comments
 (0)