Build the release artifacts #32
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Build all the artifacts for a release (i.e. the source distribution file and the various wheels) | |
# https://docs.github.com/en/actions/using-jobs/choosing-the-runner-for-a-job | |
# https://raw.githubusercontent.com/actions/python-versions/main/versions-manifest.json | |
# https://cibuildwheel.readthedocs.io/en/stable/options/#options-summary | |
name: Build the release artifacts | |
# include "workflow_dispatch" so this workflow can be run manually from the Actions portal | |
on: [workflow_dispatch] | |
jobs: | |
build_sdist: | |
name: Build source distribution | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/[email protected] | |
- name: Install Python dependencies | |
run: python -m pip install --upgrade pip build | |
- name: Build sdist | |
run: python -m build --sdist --no-isolation | |
- name: Upload sdist | |
uses: actions/[email protected] | |
with: | |
name: sdist__${{ github.sha }} | |
path: ./dist/*.gz | |
build_windows_wheels: | |
name: Build wheels on Windows | |
runs-on: windows-2019 | |
steps: | |
- uses: actions/[email protected] | |
- name: Build wheels | |
uses: pypa/[email protected] | |
env: | |
CIBW_ARCHS_WINDOWS: "AMD64 x86" | |
# AMD64 and Intel32 wheels, but not ARM64 (yet) | |
CIBW_BUILD: "cp*-win_amd64* cp*-win32*" | |
- name: Upload wheels | |
uses: actions/[email protected] | |
with: | |
name: wheels_windows__${{ github.sha }} | |
path: ./wheelhouse/*.whl | |
build_ubuntu_wheels: | |
name: Build wheels on Ubuntu | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/[email protected] | |
- name: Set up QEMU | |
# QEMU is needed for Linux aarch64 wheels | |
uses: docker/[email protected] | |
- name: Build wheels | |
uses: pypa/[email protected] | |
env: | |
# based on CentOS 7; glibc 64-bit builds only; no bundled libraries | |
# https://github.com/pypa/manylinux#docker-images | |
CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014 | |
CIBW_ARCHS_LINUX: x86_64 aarch64 | |
# this installs unixODBC 2.3.1 which is quite old but it has the latest ABI so should be fine | |
CIBW_BEFORE_ALL_LINUX: yum -y install unixODBC-devel | |
# Intel64 and aarch64 wheels, but not i686 or musllinux (yet) | |
CIBW_BUILD: "cp*-manylinux_x86_64* cp*-manylinux_aarch64*" | |
# the raw wheel filename is not PyPi compliant so the wheel must be repaired but | |
# suppress the addition of unixODBC libs to the wheel with --exclude's | |
CIBW_REPAIR_WHEEL_COMMAND_LINUX: | |
auditwheel repair | |
--exclude libodbc.so.2 | |
--exclude libltdl.so.7 | |
--wheel-dir {dest_dir} | |
{wheel} | |
- name: Upload wheels | |
uses: actions/[email protected] | |
with: | |
name: wheels_ubuntu__${{ github.sha }} | |
path: ./wheelhouse/*.whl | |
build_macos_x86_wheels: | |
name: Build wheels on macOS x86_64 | |
# macos-12 is an Intel x86 runner | |
runs-on: macos-12 | |
steps: | |
- uses: actions/[email protected] | |
- name: Build wheels | |
uses: pypa/[email protected] | |
# https://cibuildwheel.readthedocs.io/en/stable/options/#options-summary | |
env: | |
CIBW_ARCHS_MACOS: x86_64 | |
CIBW_BUILD: "cp*macosx_x86_64*" | |
# suppress the inclusion of the unixODBC dynamic libraries by disabling the repair command | |
CIBW_REPAIR_WHEEL_COMMAND_MACOS: "" | |
- name: Upload wheels | |
uses: actions/[email protected] | |
with: | |
name: wheels_macos_x86__${{ github.sha }} | |
path: ./wheelhouse/*.whl | |
build_macos_arm64_wheels: | |
name: Build wheels on macOS ARM64 | |
# macos-14 is an ARM64 (M1) runner | |
runs-on: macos-14 | |
steps: | |
- uses: actions/[email protected] | |
- name: Install unixODBC | |
# unixODBC is necessary for the SQL C header files, e.g. sql.h, but doesn't appear | |
# to be pre-installed on macos-14, hence make sure it really is installed | |
run: brew install unixodbc | |
- name: Build wheels | |
uses: pypa/[email protected] | |
# https://cibuildwheel.readthedocs.io/en/stable/options/#options-summary | |
env: | |
CIBW_ARCHS_MACOS: arm64 | |
CIBW_BUILD: "cp*macosx_arm64*" | |
# suppress the inclusion of the unixODBC dynamic libraries by disabling the repair command | |
CIBW_REPAIR_WHEEL_COMMAND_MACOS: "" | |
- name: Upload wheels | |
uses: actions/[email protected] | |
with: | |
name: wheels_macos_arm64__${{ github.sha }} | |
path: ./wheelhouse/*.whl |