Skip to content

Commit f9450ba

Browse files
Publish ARM Linux wheels (#3909)
* `python-packaging`: rm `continue-on-error: true` from Test PyPI publish That was masking failures to upload to test.pypi.org (due to 10GB space quota being full), e.g. https://github.com/single-cell-data/TileDB-SOMA/actions/runs/13913129586/job/38931629454 * Publish manylinux aarch64 wheels * Audit/Factor `cibuildwheel` env vars * rm unused `cc`/`cxx` smoke-test matrix vars * add 3.9 smoke-test jobs * rm unused `CIBW_BEFORE_BUILD` hook
1 parent 1c6a057 commit f9450ba

File tree

1 file changed

+22
-26
lines changed

1 file changed

+22
-26
lines changed

.github/workflows/python-packaging.yml

Lines changed: 22 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,17 @@ jobs:
5151
strategy:
5252
matrix:
5353
python-version: [ '39', '310', '311', '312', '313' ]
54-
cibw_build: [ manylinux_x86_64, macosx_x86_64, macosx_arm64 ]
54+
cibw_build: [ manylinux_x86_64, manylinux_aarch64, macosx_x86_64, macosx_arm64 ]
5555
include:
5656
- cibw_build: manylinux_x86_64
5757
os: ubuntu-24.04
58-
wheel-name: manylinux_2_28
58+
wheel-name: manylinux_2_28-x86_64
59+
- cibw_build: manylinux_aarch64
60+
os: ubuntu-24.04-arm
61+
wheel-name: manylinux_2_28-aarch64
62+
CIBW_BEFORE_BUILD_LINUX: dnf install -y ninja-build perl-IPC-Cmd zip
63+
# vcpkg source build requires this on ARM, for some reason; cf. https://github.com/NixOS/nixpkgs/issues/335868
64+
CIBW_ENVIRONMENT_LINUX: VCPKG_FORCE_SYSTEM_BINARIES=1
5965
- cibw_build: macosx_x86_64
6066
os: macos-latest
6167
cibw_archs_macos: x86_64
@@ -90,27 +96,18 @@ jobs:
9096
with:
9197
xcode-version: '15.4'
9298
- name: Build wheels
93-
uses: pypa/cibuildwheel@v2.22.0
99+
uses: pypa/cibuildwheel@v2.23.2
94100
with:
95101
package-dir: tiledbsoma.tar.gz
96102
only: cp${{ matrix.python-version }}-${{ matrix.cibw_build }}
97103
env:
98-
CIBW_BUILD: ${{ matrix.cibw_build }}
99104
CIBW_BUILD_VERBOSITY: 1
100-
CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28
101-
CIBW_BEFORE_BUILD_LINUX: yum -y remove gcc-toolset-12\*; yum -y install gcc-toolset-13; bash -x -c 'rm -rf tiledbsoma*/dist_links/dist/lib*'
102-
# ^ Delete lib folder that apis/python/setup.py:find_or_build() looks for in deciding to
103-
# run CMake build or not. Otherwise it'll keep reusing the library file built in the
104-
# first iteration of cibuildwheel's outer loop, resulting in wheels with the library
105-
# built for the wrong python version.
106-
CIBW_BEFORE_BUILD: bash -x -c 'rm -rf tiledbsoma*/dist_links/dist/lib*'
107-
# ^ Delete lib folder that apis/python/setup.py:find_or_build() looks for in deciding to
108-
# run CMake build or not. Otherwise it'll keep reusing the library file built in the
109-
# first iteration of cibuildwheel's outer loop, resulting in wheels with the library
110-
# built for the wrong python version.
105+
CIBW_BEFORE_BUILD_LINUX: ${{ matrix.CIBW_BEFORE_BUILD_LINUX || '' }}
106+
CIBW_ENVIRONMENT_LINUX: ${{ matrix.CIBW_ENVIRONMENT_LINUX || '' }}
107+
# Most recent tags with no listed security issues at https://quay.io/repository/pypa/manylinux_2_28_aarch64?tab=tags, ca. 2025-04-03
108+
CIBW_MANYLINUX_X86_64_IMAGE: quay.io/pypa/manylinux_2_28_x86_64:2025.03.22-2
109+
CIBW_MANYLINUX_AARCH64_IMAGE: quay.io/pypa/manylinux_2_28_aarch64:2025.03.22-2
111110
CIBW_ARCHS_MACOS: ${{ matrix.cibw_archs_macos }}
112-
CIBW_ENVIRONMENT_LINUX : CC=/opt/rh/gcc-toolset-13/root/usr/bin/gcc CXX=/opt/rh/gcc-toolset-13/root/usr/bin/g++
113-
CIBW_TEST_SKIP: "*_arm64"
114111
CMAKE_OSX_ARCHITECTURES: ${{ matrix.cibw_archs_macos }}
115112
MACOSX_DEPLOYMENT_TARGET: "13.3"
116113

@@ -128,6 +125,8 @@ jobs:
128125
strategy:
129126
matrix:
130127
python:
128+
- undotted-version: '39'
129+
dotted-version: '3.9'
131130
- undotted-version: '310'
132131
dotted-version: '3.10'
133132
- undotted-version: '311'
@@ -137,25 +136,23 @@ jobs:
137136
- undotted-version: '313'
138137
dotted-version: '3.13'
139138
wheel-name:
140-
- manylinux_2_28
139+
- manylinux_2_28-x86_64
140+
- manylinux_2_28-aarch64
141141
- macos-x86_64
142142
- macos-arm64
143143
include:
144-
- wheel-name: manylinux_2_28
144+
- wheel-name: manylinux_2_28-x86_64
145145
os: ubuntu-24.04
146146
arch: x86_64
147-
cc: gcc-13
148-
cxx: g++-13
147+
- wheel-name: manylinux_2_28-aarch64
148+
os: ubuntu-24.04-arm
149+
arch: aarch64
149150
- wheel-name: macos-x86_64
150151
os: macos-13
151152
arch: x86_64
152-
cc: clang
153-
cxx: clang++
154153
- wheel-name: macos-arm64
155154
os: macos-14
156155
arch: arm64
157-
cc: clang
158-
cxx: clang++
159156
fail-fast: false
160157
steps:
161158
- name: Set up Python ${{ matrix.python.dotted-version }}
@@ -211,7 +208,6 @@ jobs:
211208
ls -l dist
212209
- name: Publish packages to TestPyPI
213210
uses: pypa/gh-action-pypi-publish@release/v1
214-
continue-on-error: true
215211
with:
216212
repository-url: https://test.pypi.org/legacy/
217213
packages_dir: dist

0 commit comments

Comments
 (0)