Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[next] Wheel build fixes: manylinux1, trigger upload on release, Linux AArch64... #2444

Merged
merged 9 commits into from
Aug 19, 2024
11 changes: 8 additions & 3 deletions .github/workflows/python-publish-release.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: RELEASE BUILD - PyPI 📦 Distribution

on: [release, workflow_dispatch]
on: [push, pull_request, release, workflow_dispatch]

jobs:
build_wheels:
Expand All @@ -26,7 +26,7 @@ jobs:
uses: pypa/[email protected]
env:
CIBW_ARCHS_MACOS: "x86_64 universal2 arm64"
CIBW_ARCHS_LINUX: "x86_64 i686" # ppc64le s390x really slow
CIBW_ARCHS_LINUX: "x86_64 i686 aarch64" # ppc64le s390x really slow
CIBW_ARCHS_WINDOWS: "AMD64" # ARM64 Seems ARM64 will rebuild amd64 wheel for unknow reason.
CIBW_BUILD: "cp38-* cp39-* cp310-* cp311-* cp312-*"
CIBW_SKIP: ""
Expand Down Expand Up @@ -69,17 +69,22 @@ jobs:
publish:
needs: [build_wheels]
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags')
if: github.event_name == 'release' && github.event.prerelease == false && github.event.action == 'published'
Rot127 marked this conversation as resolved.
Show resolved Hide resolved
permissions:
id-token: write
steps:
- uses: actions/download-artifact@v4
with:
merge-multiple: true
path: dist

- name: Show downloaded artifacts
run: ls -laR dist

- name: Publish distribution 📦 to PyPI
if: ${{ success() }}
uses: pypa/gh-action-pypi-publish@release/v1
with:
verbose: true
user: __token__
password: ${{ secrets.pypi_pass }}
85 changes: 0 additions & 85 deletions .github/workflows/python-publish.yml

This file was deleted.

13 changes: 10 additions & 3 deletions bindings/python/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -203,12 +203,19 @@ def run(self):
print("Proper 'develop' support unavailable.")

if 'bdist_wheel' in sys.argv and '--plat-name' not in sys.argv:
# Inject the platform identifier into argv.
# Platform tags are described here:
# https://packaging.python.org/en/latest/specifications/platform-compatibility-tags
#
# I couldn't really find out in time why we need to inject the platform here?
# The cibuildwheel doesn't need it for the Windows job. But for Mac and Linux.
# This here is very dirty and will maybe break in the future.
# Sorry if this is the case and you read this.
# See: https://github.com/capstone-engine/capstone/issues/2445
idx = sys.argv.index('bdist_wheel') + 1
sys.argv.insert(idx, '--plat-name')
name = get_platform()
pyversion = platform.python_version()
major_version, minor_version = map(int, pyversion.split('.')[:2])
sys.argv.insert(idx + 1, name.replace('.', '_').replace('-', '_') + "_" + str(major_version) + str(minor_version))
sys.argv.insert(idx + 1, name.replace('.', '_').replace('-', '_'))

setup(
provides=['capstone'],
Expand Down
3 changes: 2 additions & 1 deletion suite/check_wheel_bin_arch.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
filename = {
"macosx": "libcapstone.dylib",
"manylinux": "libcapstone.so",
"musllinux": "libcapstone.so",
"win": "capstone.dll",
}

Expand All @@ -45,7 +46,7 @@
continue
wheel_seen = True
target = re.search(r"py3-none-(.+).whl", f"{f}").group(1)
platform = re.search("^(win|manylinux|macosx)", target).group(1)
platform = re.search("^(win|manylinux|musllinux|macosx)", target).group(1)

arch = re.search(
"(universal2|x86_64|arm64|aarch64|i686|win32|amd64)$", target
Expand Down
Loading