Skip to content

Commit

Permalink
Merge pull request #18 from zopefoundation/more-wheels
Browse files Browse the repository at this point in the history
Also build manylinux and Mac OS wheels
  • Loading branch information
mgedmin committed Nov 12, 2019
2 parents e906781 + 3b8ab1e commit 84fa61d
Show file tree
Hide file tree
Showing 7 changed files with 123 additions and 12 deletions.
21 changes: 21 additions & 0 deletions .manylinux-install.sh
@@ -0,0 +1,21 @@
#!/usr/bin/env bash

set -e -x

# Compile wheels
for PYBIN in /opt/python/*/bin; do
if [[ "${PYBIN}" == *"cp27"* ]] || \
[[ "${PYBIN}" == *"cp35"* ]] || \
[[ "${PYBIN}" == *"cp36"* ]] || \
[[ "${PYBIN}" == *"cp37"* ]] || \
[[ "${PYBIN}" == *"cp38"* ]]; then
"${PYBIN}/pip" install -e /io/
"${PYBIN}/pip" wheel /io/ -w wheelhouse/
rm -rf /io/build /io/*.egg-info
fi
done

# Bundle external shared libraries into the wheels
for whl in wheelhouse/zope.i18nmessageid*.whl; do
auditwheel repair "$whl" -w /io/wheelhouse/
done
5 changes: 5 additions & 0 deletions .manylinux.sh
@@ -0,0 +1,5 @@
#!/usr/bin/env bash

set -e -x

docker run --rm -v "$(pwd)":/io $DOCKER_IMAGE $PRE_CMD /io/.manylinux-install.sh
93 changes: 83 additions & 10 deletions .travis.yml
@@ -1,27 +1,100 @@
language: python
dist: xenial

env:
global:
TWINE_USERNAME: zope.wheelbuilder
TWINE_PASSWORD:
secure: "VQxFZo+4W6XAX94+kJY8dx90uKnmsJIBLPHruK5Xz2E7bFM3t7MlcFN5A0v90fB7BJUiKyQpO67R+wF3XIaqd7UDcI0NVcNihKkzkP8rE4CLsHIhjWU9lKuO0juXegv+0p8ztHV9anvSXN3WbaYk7elXiv4CXxpTeVBy77KK8gE="

python:
- 2.7
- 3.5
- 3.6
- 3.7
- pypy2.7-6.0.0
- pypy3.5-6.0.0
script:
- coverage run -m zope.testrunner --test-path=src --auto-color --auto-progress
- 3.8
- pypy
- pypy3

after_success:
- coveralls
notifications:
email: false
jobs:
include:

# manylinux wheel builds
- name: 64-bit manylinux wheels (all Pythons)
services: docker
env: DOCKER_IMAGE=quay.io/pypa/manylinux2010_x86_64
install: docker pull $DOCKER_IMAGE
script: bash .manylinux.sh

- name: 32-bit manylinux wheels (all Pythons)
services: docker
env: DOCKER_IMAGE=quay.io/pypa/manylinux2010_i686 PRE_CMD=linux32
install: docker pull $DOCKER_IMAGE
script: bash .manylinux.sh

# It's important to use 'macpython' builds to get the least
# restrictive wheel tag. It's also important to avoid
# 'homebrew 3' because it floats instead of being a specific version.
- name: Python 2.7 wheels for MacOS
os: osx
language: generic
env: TERRYFY_PYTHON='macpython 2.7.17'
- name: Python 3.5 wheels for MacOS
os: osx
language: generic
env: TERRYFY_PYTHON='macpython 3.5'
- name: Python 3.6 wheels for MacOS
os: osx
language: generic
env: TERRYFY_PYTHON='macpython 3.6.0'
- name: Python 3.7 wheels for MacOS
os: osx
language: generic
env: TERRYFY_PYTHON='macpython 3.7.0'

before_install:
- |
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
git clone https://github.com/MacPython/terryfy
source terryfy/travis_tools.sh
get_python_environment $TERRYFY_PYTHON venv
fi
install:
- pip install -U pip setuptools
- pip install -U coveralls coverage zope.testrunner
- pip install -U -e ".[test]"

script:
- python --version
- coverage run -m zope.testrunner --test-path=src --auto-color --auto-progress
- python setup.py -q bdist_wheel

cache: pip
after_success:
- coveralls
- |
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
# macpython 3.5 doesn't support recent TLS protocols which causes twine
# upload to fail, so we use the system Python to run twine
/usr/bin/python -m ensurepip --user
/usr/bin/python -m pip install --user -U pip
/usr/bin/python -m pip install --user -U -I twine
/usr/bin/python -m twine check dist/*
if [[ $TRAVIS_TAG ]]; then
/usr/bin/python -m twine upload --skip-existing dist/*
fi
fi
- |
if [[ -n "$DOCKER_IMAGE" ]]; then
pip install twine
twine check wheelhouse/*
if [[ $TRAVIS_TAG ]]; then
twine upload --skip-existing wheelhouse/*
fi
fi
notifications:
email: false

cache: pip
before_cache:
- rm -f $HOME/.cache/pip/log/debug.log
2 changes: 2 additions & 0 deletions CHANGES.rst
Expand Up @@ -7,6 +7,8 @@

- Drop support for Python 3.4.

- Add support for Python 3.8.


4.3.1 (2018-10-19)
==================
Expand Down
11 changes: 10 additions & 1 deletion appveyor.yml
Expand Up @@ -13,9 +13,18 @@ environment:
- python: 36-x64
- python: 37
- python: 37-x64
- python: 38
- python: 38-x64

install:
- "SET PATH=C:\\Python%PYTHON%;c:\\Python%PYTHON%\\scripts;%PATH%"
- ps: |
$env:PYTHON = "C:\\Python${env:PYTHON}"
if (-not (Test-Path $env:PYTHON)) {
curl -o install_python.ps1 https://raw.githubusercontent.com/matthew-brett/multibuild/11a389d78892cf90addac8f69433d5e22bfa422a/install_python.ps1
.\install_python.ps1
}
- ps: if (-not (Test-Path $env:PYTHON)) { throw "No $env:PYTHON" }
- echo "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /x64 > "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\vcvars64.bat"
- pip install -e .

Expand All @@ -31,6 +40,6 @@ artifacts:
name: wheel

deploy_script:
- ps: if ($env:APPVEYOR_REPO_TAG -eq $TRUE) { pip install twine; twine upload dist/* }
- ps: if ($env:APPVEYOR_REPO_TAG -eq $TRUE) { pip install twine; twine upload --skip-existing dist/* }

deploy: on
1 change: 1 addition & 0 deletions setup.py
Expand Up @@ -123,6 +123,7 @@ def _unavailable(self, e):
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: Implementation :: CPython',
'Programming Language :: Python :: Implementation :: PyPy',
'Natural Language :: English',
Expand Down
2 changes: 1 addition & 1 deletion tox.ini
@@ -1,6 +1,6 @@
[tox]
envlist =
py27,py35,py36,py37,pypy,pypy3,coverage,docs
py27,py35,py36,py37,py38,pypy,pypy3,coverage,docs

[testenv]
deps =
Expand Down

0 comments on commit 84fa61d

Please sign in to comment.