Skip to content

Commit

Permalink
Rtree Wheel Infrastructure (#163)
Browse files Browse the repository at this point in the history
* first pass

* LSI install script

* try curl

* freaking sha256sum

* update manylinux cmake

* get deps on mac

* skip test for now

* rerun actions

* do some things to copy in shared library

* copy over shared library

* remove FileNotFoundError

* remove non-linux for testing

* build with tests

* add numpy to test_requires

* skip unicode filenames on python 2

* try different comparison test

* pass flake8

* skip cp27m

* missing wildcard

* skip broken test on python 2

* test_index passing flake8

* update finder and skip test

* add back awful hack

* skip pypy builds

* linux working add back windows and macos

* try building on windows with same script

* try bash scripting windows

* add imports to init

* make build dirs if they don't exist

* check before makedirs

* fix typo

* switch to batch file

* batch

* install out of script

* foolishly try make

* back

* pip to batch

* make?

* remove more

* ninja

* copy compiler

* try clang

* test whitespace

* clang?

* windows all use choco

* flake8

* clang-cl

* try gh clang

* try relative path

* windows paths

* escape

* convoluted llvm path

* hard paths

* set env in gh

* try fixing some cmake bugs

* change working directory

* cd doesnt work?

* use batch path tomfoolery

* try

* try msbuild

* copy dll

* windows finder logic

* typo

* try again

* finder logic

* try script relative copy

* use copy

* add debug dir

* add debug prints

* tuple

* build both 64 and 32?

* try override

* try release32?

* add force32

* typo

* skip 32 bit builds on windows

* re-enable other wheels

* typo

* tpr test

* skip test_tpr on windows

* try simpler copy strategy

* update copy

* absolute paths

* in too deep

* more paths

* finder changes working locally

* add repair_wheel override

* yaml typo

* mac uses bsd cp

* skip mac

* move to lib

* explicit copy for macos

* pass in target location

* what the heck

* paths are hard

* fix working copy

* set search on mac

* try

* try some magic

* different

* static

* linker

* copy cmake

* remove arg

* try static build

* try no rpath

* renable wheel repair on mac

* skip cleanup

* skip test on mac for wheel debugging

* fix path on windows

* delocate args

* fix extension

* don't copy everything

* change copy for mac

* delocate args

* get unrepaired wheel for testing

* more dylib

* try manual dylib repair

* remove build directories to make sure paths are OK

* minor fixes

* add windows search paths for conda

* add missed import

* install rtree in docs image

* docs pip3

* curl

* try python2 again

* apt

* use apt spatial for docs

* check windows/linux wheel repair

* right

* auditwheel

* don't repair windows wheels

* cd to test dir

* revert test command
  • Loading branch information
mikedh authored Dec 16, 2020
1 parent 3f5f8a1 commit 14fb3f0
Show file tree
Hide file tree
Showing 21 changed files with 835 additions and 601 deletions.
153 changes: 5 additions & 148 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,126 +78,19 @@ jobs:
run: |
python3 -m pytest --doctest-modules rtree tests
# linux-wheel:
# name: manylinux Wheel ${{ matrix.python-root }}
#
# runs-on: ubuntu-latest
# strategy:
# matrix:
# python-version: ['3.6','3.7','3.8']
#
# steps:
# - uses: actions/checkout@v2
# - name: Build
# shell: bash -l {0}
# run: |
# docker run -v $(pwd):/src quay.io/pypa/manylinux1_x86_64 /src/ci/build-wheel-linux.sh ${{ matrix.python-version }}
#
# - name: Setup Python
# uses: actions/setup-python@v1
# with:
# python-version: ${{ matrix.python-version }}
#
# - name: Display Python version
# run: python -c "import sys; print(sys.version)"
# - name: Test
# shell: bash -l {0}
# run: |
# ./ci/test-wheel-linux.sh ${{ matrix.python-version }}
#
# - uses: actions/upload-artifact@v1
# with:
# name: manylinux-${{ matrix.python-version }}-whl
# path: wheelhouse
#
# windows-wheel:
# name: Win64 ${{ matrix.python-version }} Wheel
#
# runs-on: ${{ matrix.os }}
# strategy:
# matrix:
# os: ['windows-latest']
# python-version: ['3.6','3.7','3.8']
# sidx-version: ['1.9.3']
# fail-fast: true
#
# steps:
# - uses: actions/checkout@v2
# - uses: goanpeca/[email protected]
# with:
# channels: conda-forge
# auto-update-conda: true
# python-version: ${{ matrix.python-version }}
# - name: Setup
# shell: bash -l {0}
# run: |
# conda install -c conda-forge compilers -y
# pip install cmake ninja
#
# - name: build
# shell: cmd /C CALL "{0}"
# run: |
# call .\ci\build-wheel.bat ${{ matrix.sidx-version }}
#
# - name: test
# shell: cmd /C CALL "{0}"
# run: |
# call .\ci\test-wheel.bat
#
# - uses: actions/upload-artifact@v1
# with:
# name: win64-${{matrix.python-version}}-whl
# path: dist
#
# osx-wheel:
# name: OSX ${{ matrix.python-version }} Wheel
#
# runs-on: ${{ matrix.os }}
# strategy:
# matrix:
# os: ['macos-latest']
# python-version: [3.6, 3.7, 3.8]
# fail-fast: true
#
# steps:
# - uses: actions/checkout@v2
# - name: Setup Python
# uses: actions/setup-python@v1
# with:
# python-version: ${{ matrix.python-version }}
#
# - name: Display Python version
# run: python -c "import sys; print(sys.version)"
#
# - name: Setup
# run: |
# python -m pip install cmake ninja
#
# - name: build
# run: |
# ./ci/build-wheel-osx.sh ${{ matrix.python-version }}
#
# - name: test
# run: |
# ./ci/test-wheel-osx.sh
#
# - uses: actions/upload-artifact@v1
# with:
# name: osx-${{matrix.python-version}}-whl
# path: wheels
#
docs:
name: Docs

runs-on: ubuntu-latest
strategy:
fail-fast: true
container: osgeo/proj-docs

steps:
- uses: actions/checkout@v2
- name: Run libspatialindex build
run: |
apt-get update -y
apt-get install -y -qq libspatialindex-dev
pip3 install --user .
- name: Print versions
shell: bash -l {0}
run: |
Expand Down Expand Up @@ -241,42 +134,6 @@ jobs:
export PATH=$PATH:/home/runner/.local/bin
python3 setup.py sdist
# - uses: actions/download-artifact@v1
# name: Linux 3.6 wheel
# with:
# name: manylinux-cp36-cp36m-whl
# path: dist
#
# - uses: actions/download-artifact@v1
# name: Linux 3.7 wheel
# with:
# name: manylinux-cp37-cp37m-whl
# path: dist
#
# - uses: actions/download-artifact@v1
# name: Linux 3.8 wheel
# with:
# name: manylinux-cp38-cp38-whl
# path: dist
#
# - uses: actions/download-artifact@v1
# name: Win64 3.6 wheel
# with:
# name: win64-3.6-wheel
# path: dist
#
# - uses: actions/download-artifact@v1
# name: Win64 3.7 wheel
# with:
# name: win64-3.7-wheel
# path: dist
#
# - uses: actions/download-artifact@v1
# name: Win64 3.8 wheel
# with:
# name: win64-3.8-wheel
# path: dist
- uses: pypa/gh-action-pypi-publish@master
name: Publish package
if: github.event_name == 'release' && github.event.action == 'published'
Expand Down
56 changes: 56 additions & 0 deletions .github/workflows/wheels.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: Build Wheels

on: [push, pull_request]

jobs:
build_wheels:
name: Build wheel on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
env:
CIBW_SKIP: pp* *-win32
CIBW_TEST_REQUIRES: pytest numpy
CIBW_TEST_COMMAND: "pytest -v {project}/tests"
# we are copying the shared libraries ourselves so skip magical copy
CIBW_REPAIR_WHEEL_COMMAND_MACOS: ""
CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: ""
CIBW_BEFORE_BUILD_LINUX: "pip install cmake; bash {project}/ci/install_libspatialindex.bash"
strategy:
matrix:
os: [windows-latest, ubuntu-latest, macos-latest]
steps:
- uses: actions/checkout@v1
- uses: actions/setup-python@v1
name: Install Python
with:
python-version: '3.7'
- name: Install cibuildwheel
run: |
python -m pip install cibuildwheel==1.6.4
- name: Run MacOS Preinstall Build
if: startsWith(matrix.os, 'macos')
run: |
# provides sha256sum
brew install coreutils
pip install cmake
bash ci/install_libspatialindex.bash
- name: Run Windows Preinstall Build
if: startsWith(matrix.os, 'windows')
run: |
choco install vcpython27 -f -y
ci\install_libspatialindex.bat
- name: Build wheels
run: |
python -m cibuildwheel --output-dir wheelhouse
- uses: actions/upload-artifact@v1
with:
name: wheels
path: ./wheelhouse
- name: Upload To PyPi
env:
TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }}
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
# TODO : remove `if false` statement after secrets are set in Github UI
if: false
run: |
pip install twine
twine upload ./wheelhouse/*
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,8 @@ Rtree
![Build](https://github.com/Toblerity/rtree/workflows/Build/badge.svg)
[![PyPI version](https://badge.fury.io/py/Rtree.svg)](https://badge.fury.io/py/Rtree)

Python bindings for libspatialindex 1.8.3.
RTree is a Python package with bindings for [libspatialindex](https://github.com/libspatialindex/libspatialindex). Wheels are available for most major platforms, and `rtree` with bundled `libspatialindex` can be installed via pip:
```
pip install rtree
```

Loading

0 comments on commit 14fb3f0

Please sign in to comment.