Skip to content

restore linux and mac wheels #81

restore linux and mac wheels

restore linux and mac wheels #81

name: Python (geoarrow.proj) Wheels
on:
push:
# tags:
# - "python-core-v*"
jobs:
build-wheel-manylinux2014:
name: "Build manylinux2014 wheels"
runs-on: ubuntu-latest
container: quay.io/pypa/manylinux2014_x86_64
defaults:
run:
working-directory: python/geoarrow-proj
# NOTE: We abstain from most reusable github actions given that this is running in a docker
# image
steps:
- uses: actions/checkout@v3
with:
submodules: "recursive"
- name: Install latest stable rust
run: |
curl --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --profile minimal --default-toolchain stable -y
- name: Install python dependencies
run: |
export PATH="/opt/python/cp38-cp38/bin/:$PATH"
pip install -U pip
pip install maturin
- name: Install clang
run: |
# Install clang via yum to fix error:
# error: 'stddef.h' file not found
# Not sure why I can't get this to work via pixi. Am I missing a dependency?
yum update
yum install -y clang
yum install -y llvm-toolset-7
- name: Install Pixi
run: |
curl -fsSL https://pixi.sh/install.sh | bash
- name: Install build requirements
run: |
export PATH="$HOME/.pixi/bin:$PATH"
cd build
pixi install
- name: Build Python wheel
run: |
source $HOME/.cargo/env
export PATH="/opt/python/cp38-cp38/bin/:$PATH"
export PATH="$HOME/.pixi/bin:$PATH"
export LD_LIBRARY_PATH="$(pwd)/build/.pixi/env/lib:$LD_LIBRARY_PATH"
export PKG_CONFIG_PATH="$(pwd)/build/.pixi/env/lib/pkgconfig:$PKG_CONFIG_PATH"
export LIBCLANG_PATH="$(pwd)/build/.pixi/env/lib"
# export RUSTFLAGS="-I$(pwd)/build/.pixi/env/include"
# pixi run --manifest-path build/pixi.toml
maturin build --strip --interpreter /opt/python/cp38-cp38/bin/python --manylinux 2014 -o wheels
- name: List wheels
run: find ./wheels
# Have to set path from root
# https://github.com/actions/upload-artifact/issues/232#issuecomment-964235360
- uses: actions/upload-artifact@v2
with:
path: python/geoarrow-proj/wheels/*.whl
build-wheels-mac-x86:
runs-on: macos-latest
defaults:
run:
working-directory: python/geoarrow-proj
steps:
- uses: actions/checkout@v3
with:
submodules: "recursive"
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.8"
- name: Install Pixi
run: |
curl -fsSL https://pixi.sh/install.sh | bash
echo "$HOME/.pixi/bin" >> $GITHUB_PATH
- name: Install build requirements
run: |
cd build
pixi install
- name: Set native dependency paths
run: |
echo "LD_LIBRARY_PATH=$(pwd)/build/.pixi/env/lib" >> "$GITHUB_ENV"
echo "PKG_CONFIG_PATH=$(pwd)/build/.pixi/env/lib/pkgconfig" >> "$GITHUB_ENV"
- name: Install Python dependencies
run: |
python -V
pip install maturin
- name: Build
run: |
maturin build --strip -o wheels
- name: Include shared libraries
run: |
pip install delocate
# TODO: delocate shared lib
- name: List wheels
run: find ./wheels
# Have to set path from root
# https://github.com/actions/upload-artifact/issues/232#issuecomment-964235360
- uses: actions/upload-artifact@v2
with:
path: python/geoarrow-proj/wheels/*.whl
build-wheel-windows:
runs-on: windows-latest
defaults:
run:
working-directory: python/geoarrow-proj
strategy:
fail-fast: false
matrix:
include:
- os: "windows-2019"
arch: "auto64"
triplet: "x64-windows"
vcpkg_cache: "c:\\vcpkg\\installed"
vcpkg_logs: "c:\\vcpkg\\buildtrees\\**\\*.log"
steps:
- uses: actions/checkout@v3
with:
submodules: "recursive"
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Install Pixi
run: |
iwr -useb https://pixi.sh/install.ps1 | iex
- name: Add pixi to PATH
shell: bash
run: |
echo "C:/Users/runneradmin/AppData/Local/pixi/bin" >> $GITHUB_PATH
- name: Install build requirements
shell: bash
run: |
cd build
pixi install
- name: Copy pkg-config polyfills
shell: bash
run: |
cp -n build/pkgconfig/* ./build/.pixi/env/Library/lib/pkgconfig/
- name: Set native dependency paths
shell: bash
run: |
echo "$(pwd)/build/.pixi/env/Library/bin" >> $GITHUB_PATH
echo "LD_LIBRARY_PATH=$(pwd)/build/.pixi/env/Library/lib" >> "$GITHUB_ENV"
echo "PKG_CONFIG_PATH=$(pwd)/build/.pixi/env/Library/lib/pkgconfig" >> "$GITHUB_ENV"
# We manually pass in a checksum because it appears to be flaky on CI, occasionally
# downloading from sourceforge via insecure http without a checksum
# We also have to force powershell to use TLS1.2
# https://stackoverflow.com/a/41618979
- name: Install pkg-config
run: |
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
choco install pkgconfiglite -y --checksum 6004df17818f5a6dbf19cb335cc92702
- name: Install Python dependencies
shell: bash
run: |
python -V
python -m pip install maturin delvewheel
- name: Build
shell: bash
run: |
pixi run --manifest-path build/pixi.toml cd .. && maturin build --strip -o wheels-pre-repair
- name: Repair wheel
shell: bash
run: |
python -m delvewheel repair --add-path "$(pwd)/build/.pixi/env" --add-path "$(pwd)/build/.pixi/env/Library/bin" --namespace-pkg geoarrow --wheel-dir wheels wheels-pre-repair/*
- name: List wheels
shell: bash
run: find ./wheels
# Have to set path from root
# https://github.com/actions/upload-artifact/issues/232#issuecomment-964235360
- uses: actions/upload-artifact@v2
with:
path: python/geoarrow-proj/wheels/*.whl
build_sdist:
name: Build source distribution
runs-on: ubuntu-latest
defaults:
run:
working-directory: python/geoarrow-proj
steps:
- uses: actions/checkout@v3
with:
submodules: "recursive"
- uses: actions/setup-python@v2
name: Install Python
with:
python-version: "3.8"
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Build sdist
run: |
pip install -U build
python -m build --sdist
# Have to set path from root
# https://github.com/actions/upload-artifact/issues/232#issuecomment-964235360
- uses: actions/upload-artifact@v2
with:
path: python/geoarrow-proj/dist/*.tar.gz
# upload_pypi:
# needs:
# [
# build-wheel-manylinux2014,
# build-wheels-mac-x86,
# build-wheel-windows,
# build_sdist,
# ]
# runs-on: ubuntu-latest
# # Make sure we only run this on new tags/release
# if: startsWith(github.event.ref, 'refs/tags') || github.event_name == 'release'
# steps:
# - uses: actions/download-artifact@v2
# with:
# name: artifact
# path: dist
# - uses: pypa/gh-action-pypi-publish@release/v1
# with:
# user: __token__
# password: ${{ secrets.PYPI_PASSWORD }}
# # To test: repository_url: https://test.pypi.org/legacy/