Skip to content

Trying to fix PyPI wheels for Manylinux/ARM64. #97

Trying to fix PyPI wheels for Manylinux/ARM64.

Trying to fix PyPI wheels for Manylinux/ARM64. #97

Workflow file for this run

name: Assets
on:
release:
types:
- created
push:
branches:
- 'release**'
jobs:
macos-x64:
if: ${{ false }} # disable for now
name: 'PyPI wheels for MacOS/x64'
runs-on: macos-latest
strategy:
fail-fast: false
matrix:
python:
- '3.8'
- '3.9'
- '3.10'
- '3.11'
steps:
- uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python }}
- name: Install dependencies
run: |
brew install swig xquartz
python -m pip install --upgrade pip conan setuptools wheel
- name: Checkout
uses: actions/checkout@v3
- name: Build wheel
env:
NPROCS: 5
run: python setup.py bdist_wheel
- name: Wheel path
id: wheel
working-directory: pybuild/dist/
run: echo "{wheel}={$(ls *.whl)}" >> $GITHUB_OUTPUT
- uses: actions/upload-artifact@v3
with:
name: pypi-macos-py${{ matrix.python }}
path: pybuild/dist/${{ steps.wheel.outputs.wheel }}
- uses: actions/upload-release-asset@v1
if: ${{ github.event_name == 'release' && github.event.action == 'created' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: pybuild/dist/${{ steps.wheel.outputs.wheel }}
asset_name: ${{ steps.wheel.outputs.wheel }}
asset_content_type: application/zip
manylinux-x64:
#if: ${{ false }} # disable for now
name: 'PyPI wheels for Manylinux/x64'
runs-on: ubuntu-latest
container: quay.io/pypa/manylinux${{ matrix.manylinux }}_x86_64:latest
env:
SWIG_VERSION: ${{ matrix.swig_version }}
CMAKE_VERSION: '3.12'
strategy:
fail-fast: false
matrix:
manylinux:
- _2_28
cpython_version:
#- 'cp38-cp38'
#- 'cp39-cp39'
#- 'cp310-cp310'
- 'cp311-cp311'
include:
- manylinux: _2_28
swig_version: 'swig-3.0.12-19.module_el8.3.0+6167+838326ab'
steps:
- name: Install dependencies
run: |
dnf install -y $SWIG_VERSION
python_bin="/opt/python/${{ matrix.cpython_version }}/bin/python"
${python_bin} -m pip install auditwheel conan wheel-inspect
pip_installation_folder=$(${python_bin} -m pip show --files conan | grep 'Location:' | sed 's/Location: //')
conan_installation_folder_relative_path=$(${python_bin} -m pip show --files conan | grep '/bin/' | sed 's#\s\+\(.*\)/conan#\1#')
conan_installation_folder="${pip_installation_folder}/${conan_installation_folder_relative_path}"
echo "Conan installation folder: ${conan_installation_folder}"
echo "${conan_installation_folder}" >> $GITHUB_PATH
- name: Get latest CMake
uses: lukka/get-cmake@latest
- name: Checkout
uses: actions/checkout@v3
- name: Build wheel
env:
NPROCS: 5
run: |
/opt/python/${{ matrix.cpython_version }}/bin/python setup.py bdist_wheel
wheel2json pybuild/dist/*.whl
/opt/python/${{ matrix.cpython_version }}/bin/python -m auditwheel repair pybuild/dist/*.whl
shell: bash
- name: Wheel path
id: wheel
working-directory: wheelhouse
run: echo "{wheel}={$(ls *.whl)}" >> $GITHUB_OUTPUT
- uses: actions/upload-artifact@v3
with:
name: pypi-linux-${{ matrix.cpython_version }}
path: wheelhouse/${{ steps.wheel.outputs.wheel }}
- uses: actions/upload-release-asset@v1
if: ${{ github.event_name == 'release' && github.event.action == 'created' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: wheelhouse/${{ steps.wheel.outputs.wheel }}
asset_name: ${{ steps.wheel.outputs.wheel }}
asset_content_type: application/zip
manylinux-arm64:
name: 'PyPI wheels for Manylinux/ARM64'
runs-on: [self-hosted, ARM64, Linux]
container: quay.io/pypa/manylinux${{ matrix.manylinux }}_aarch64:latest
env:
BISON_VERSION: ${{ matrix.bison_version }}
FLEX_VERSION: ${{ matrix.flex_version }}
JAVA_VERSION: ${{ matrix.java_version }}
SWIG_VERSION: ${{ matrix.swig_version }}
CMAKE_VERSION: '3.12'
strategy:
fail-fast: false
matrix:
manylinux:
- _2_28
cpython_version:
#- 'cp38-cp38'
#- 'cp39-cp39'
#- 'cp310-cp310'
- 'cp311-cp311'
# We are having problems when using the m4 and zulu-opendjk Conan packages on an armv8 architecture
# m4 is required by flex/bison and zulu-openjdk provides the Java JRE required by the ANTLR generator
# So, for the time being, we are installing flex/bison and java manually for this platform
include:
- manylinux: _2_28
bison_version: 'bison-3.0.4-10.el8'
flex_version: 'flex-2.6.1-9.el8'
java_version: 'java-11-openjdk-11.0.20.0.8-3.el8'
swig_version: 'swig-3.0.12-19.module_el8.4.0+2254+838326ab'
steps:
- name: Install dependencies
run: |
dnf install -y $BISON_VERSION $FLEX_VERSION $JAVA_VERSION $SWIG_VERSION
python_bin="/opt/python/${{ matrix.cpython_version }}/bin/python"
${python_bin} -m pip install auditwheel conan wheel-inspect
pip_installation_folder=$(${python_bin} -m pip show --files conan | grep 'Location:' | sed 's/Location: //')
conan_installation_folder_relative_path=$(${python_bin} -m pip show --files conan | grep '/bin/' | sed 's#\s\+\(.*\)/conan#\1#')
conan_installation_folder="${pip_installation_folder}/${conan_installation_folder_relative_path}"
echo "Conan installation folder: ${conan_installation_folder}"
echo "${conan_installation_folder}" >> $GITHUB_PATH
- name: Get latest CMake
uses: lukka/get-cmake@latest
- name: Checkout
uses: actions/checkout@v3
- name: Build wheel
env:
NPROCS: 5
run: |
/opt/python/${{ matrix.cpython_version }}/bin/python setup.py bdist_wheel
wheel2json pybuild/dist/*.whl
/opt/python/${{ matrix.cpython_version }}/bin/python -m auditwheel repair pybuild/dist/*.whl
- name: Wheel path
id: wheel
working-directory: wheelhouse
run: echo "{wheel}={$(ls *.whl)}" >> $GITHUB_OUTPUT
- uses: actions/upload-artifact@v3
with:
name: pypi-linux-${{ matrix.cpython_version }}
path: wheelhouse/${{ steps.wheel.outputs.wheel }}
- uses: actions/upload-release-asset@v1
if: ${{ github.event_name == 'release' && github.event.action == 'created' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: wheelhouse/${{ steps.wheel.outputs.wheel }}
asset_name: ${{ steps.wheel.outputs.wheel }}
asset_content_type: application/zip
windows-x64:
if: ${{ false }} # disable for now
name: 'PyPI wheels for Windows/x64'
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
python:
- '3.8'
- '3.9'
- '3.10'
- '3.11'
steps:
- uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip conan setuptools wheel
- name: Checkout
uses: actions/checkout@v3
- name: Build wheel
env:
NPROCS: 5
run: python setup.py bdist_wheel
- name: Wheel path
id: wheel
working-directory: pybuild/dist/
run: echo "{wheel}={$(Get-ChildItem -name *.whl)}" >> $GITHUB_OUTPUT
- uses: actions/upload-artifact@v3
with:
name: pypi-windows-py${{ matrix.python }}
path: pybuild/dist/${{ steps.wheel.outputs.wheel }}
- uses: actions/upload-release-asset@v1
if: ${{ github.event_name == 'release' && github.event.action == 'created' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: pybuild/dist/${{ steps.wheel.outputs.wheel }}
asset_name: ${{ steps.wheel.outputs.wheel }}
asset_content_type: application/zip
publish:
name: Publish
if: ${{ false }} # disable for now
#if: ${{ github.event_name == 'release' && github.event.action == 'created' }}
needs:
- macos-x64
- manylinux-x64
- manylinux-arm64
- windows-x64
runs-on: ubuntu-latest
steps:
- name: Download artifacts
uses: actions/download-artifact@v3
id: download
- name: Publish to PyPI
uses: pypa/[email protected]
with:
user: __token__
password: ${{ secrets.PYPI_TOKEN }}
packages_dir: ${{ steps.download.outputs.download-path }}/pypi-*