Compare commits

..
21 Commits
Author SHA1 Message Date
Joe Rickerby d549a1301f Bump version 2017-09-10 22:46:27 +01:00
Joe Rickerby adef5445f7 Merge pull request #25 from joerick/python3-ci
Add CI runs for Python3 as well as Python2
2017-09-10 22:42:48 +01:00
Joe Rickerby e486a6551d Merge pull request #33 from YannickJadoul/readme-summary
Adding an overview of available options
2017-09-10 22:22:33 +01:00
Joe Rickerby 53b4ea5125 Maybe bitrise will run the macos builds! 2017-09-10 22:02:36 +01:00
Joe Rickerby a7f81b3c58 Use language: generic for Mac builds on Travis
https://github.com/travis-ci/travis-ci/issues/2312
2017-09-10 21:29:01 +01:00
Yannick Jadoul 52dba1cc83 Updating README with overview of available customizations 2017-09-08 00:15:11 +02:00
Joe Rickerby 986d56279e Update changelog 2017-09-07 23:06:08 +01:00
Joe Rickerby e413863531 Fix running command nodes on python 3 2017-09-07 22:38:52 +01:00
Joe Rickerby f4eafa901b Ignore some venv locations 2017-09-07 22:38:32 +01:00
Joe Rickerby 0cd8228db1 Use same python interpreter for running pytest 2017-09-07 21:59:04 +01:00
Joe Rickerby 510a6ce84a Only install python3 pip when doing that build 2017-09-07 21:50:48 +01:00
Joe Rickerby 7420e2a924 Use apt to install pip 2017-09-07 21:45:43 +01:00
Joe Rickerby 1cd65ccbb6 Add ensurepip for Linux build to ensure setuptools/pip are installed 2017-09-07 18:58:08 +01:00
Joe Rickerby 857644e391 Merge branch 'master' into python3-ci
* master: (28 commits)
  Update README to combine environment sections
  Update README
  os.path.samefile is not available on windows.
  Add shell-style execution on the Mac
  Use os.path.samefile to get around filename case insensitivity
  Add test for before_build executing in a shell
  Fix some linter warnings
  Add CIBW_ENVIRONMENT to README and reorder options
  Fix empty env string case
  Fix string splitting for the env string
  Making call from run_tests to run_test subprocess.check_call
  Fixing 'ValueError: Attempted relative import in non-package'
  Update README.md
  Reducing code duplication in bin/run_test.py and bin/run_tests.py
  Semicolons need quoting
  Ignore vscode project settings
  Windows uses a different pathsep so have to use that in the test
  Make shell evals work and add tests for that
  Use parse_environment in the main code
  Run the unit tests in CI
  ...

# Conflicts:
#	.travis.yml
#	appveyor.yml
#	run_tests.py
2017-09-07 18:55:33 +01:00
Joe Rickerby 4922c8c4ec Merge commit '92304597bd06531c0139db9dd8766562f38cf19e' into python3-ci
* commit '92304597bd06531c0139db9dd8766562f38cf19e':
  Replacing unbuffered 'os.fdopen' by proxy object to have a unbuffered stdout solution for Windows and AppVeyor that works on Python 3
2017-09-01 13:51:49 +01:00
Joe Rickerby 267e566c43 Add language: python to the travis build 2017-09-01 13:49:39 +01:00
Yannick Jadoul 92304597bd Replacing unbuffered 'os.fdopen' by proxy object to have a unbuffered stdout solution for Windows and AppVeyor that works on Python 3 2017-08-17 22:06:23 +02:00
Joe Rickerby 6abacb46e4 Run the tests with the same interpreter that runs run_tests.py 2017-08-14 23:37:06 +01:00
Joe Rickerby f07979ec23 Actually fix syntax error 2017-08-14 23:23:15 +01:00
Joe Rickerby e66ab50909 Fix syntax error 2017-08-14 23:20:41 +01:00
Joe Rickerby 037cda5ef3 Add Python 3 CI runners 2017-08-14 23:19:39 +01:00
13 changed files with 97 additions and 17 deletions
+3
View File
@@ -85,7 +85,10 @@ celerybeat-schedule
# virtualenv
.venv
venv/
venv3/
ENV/
env/
env3/
# Spyder project settings
.spyderproject
+33 -4
View File
@@ -1,17 +1,46 @@
language: generic
matrix:
include:
# Linux Python 2
- sudo: required
language: python
services:
- docker
env:
- "PYTHON=python2"
# Linux Python 3
- sudo: required
language: python
services:
- docker
env:
- "PYTHON=python3"
before_install:
- sudo apt-get -qq update
- sudo apt-get install -y python3-pip
# macOS Python 2
- os: osx
env:
- "PYTHON=python2"
# macOS Python 3
- os: osx
env:
- "PYTHON=python3"
before_install:
- brew update
- brew install python3
script:
- |
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
pip install -r requirements-dev.txt
python ./bin/run_tests.py
$PYTHON -m pip install -r requirements-dev.txt
$PYTHON ./bin/run_tests.py
else
# linux test requires root to clean up the wheelhouse (docker runs as root)
sudo pip install -r requirements-dev.txt
sudo python ./bin/run_tests.py
sudo $PYTHON -m pip install -r requirements-dev.txt
sudo $PYTHON ./bin/run_tests.py
fi
+22 -2
View File
@@ -44,7 +44,7 @@ Usage
- os: osx
script:
- pip install cibuildwheel==0.5.0
- pip install cibuildwheel==0.5.1
- cibuildwheel --output-dir wheelhouse
```
@@ -54,7 +54,7 @@ Usage
```
build_script:
- pip install cibuildwheel==0.5.0
- pip install cibuildwheel==0.5.1
- cibuildwheel --output-dir wheelhouse
artifacts:
- path: "wheelhouse\\*.whl"
@@ -69,6 +69,21 @@ All being well, you should get wheels delivered to you in a few minutes.
> ⚠️ Got an error? Check the [checklist](#it-didnt-work) below.
### Configuration overview
`cibuildwheel` allows for easy customization of the various phases of the build process demonstrated above:
| | Option | |
|---|---|---|
| **Target wheels** | `CIBW_PLATFORM` | Override the auto-detected target platform |
| | `CIBW_SKIP` | Skip certain Python versions |
| **Build environment** | `CIBW_ENVIRONMENT` | Set environment variables needed during the build |
| | `CIBW_BEFORE_BUILD` | Execute a shell command preparing each wheel's build |
| **Tests** | `CIBW_TEST_COMMAND` | Execute a shell command to test all built wheels |
| | `CIBW_TEST_REQUIRES` | Install Python dependencies before running the tests |
A more detailed description of the options, the allowed values, and some examples can be found in the [Options](#options) section.
Options
-------
@@ -269,6 +284,11 @@ Since `cibuildwheel` runs the wheel through delocate or auditwheel, it will auto
Changelog
=========
### 0.5.0
- `CIBW_ENVIRONMENT` added. You can now set environment variables for each build, even within the Docker container on Linux. This is a big one! (#21)
- `CIBW_BEFORE_BUILD` now runs in a system shell on all platforms. You can now do things like `CIBW_BEFORE_BUILD="cmd1 && cmd2"`. (#32)
### 0.4.1
- Fixed a bug on Windows where subprocess' output was hidden (#23)
+7 -2
View File
@@ -1,5 +1,10 @@
environment:
matrix:
- PYTHON: "C:\\Python27\\python.exe"
- PYTHON: "C:\\Python35\\python.exe"
build_script:
- pip install -r requirements-dev.txt
- "%PYTHON% -m pip install -r requirements-dev.txt"
# the '-u' flag is required so the output is in the correct order.
# See https://github.com/joerick/cibuildwheel/pull/24 for more info.
- python -u ./bin/run_tests.py
- "%PYTHON% -u ./bin/run_tests.py"
+1 -1
View File
@@ -17,7 +17,7 @@ def single_run(test_project):
project_env = {str(k): str(v) for k, v in project_env.items()} # unicode not allowed in env
env.update(project_env)
print('Building %s with environment %s' % (test_project, project_env))
subprocess.check_call(['cibuildwheel', test_project], env=env)
subprocess.check_call([sys.executable, '-m', 'cibuildwheel', test_project], env=env)
wheels = glob('wheelhouse/*.whl')
print('%s built successfully. %i wheels built.' % (test_project, len(wheels)))
+1 -1
View File
@@ -10,7 +10,7 @@ if __name__ == '__main__':
### run the unit tests
subprocess.check_call(['python', '-m', 'pytest', 'unit_test'])
subprocess.check_call([sys.executable, '-m', 'pytest', 'unit_test'])
### run the integration tests
+1 -1
View File
@@ -1 +1 @@
__version__ = '0.5.0'
__version__ = '0.5.1'
+2
View File
@@ -59,6 +59,8 @@ def main():
platform = 'macos'
elif 'APPVEYOR' in os.environ:
platform = 'windows'
elif 'BITRISE_BUILD_NUMBER' in os.environ:
platform = 'macos'
else:
print('cibuildwheel: Unable to detect platform. cibuildwheel should run on your CI server, '
'Travis CI and Appveyor are supported. You can run on your development '
+6 -2
View File
@@ -1,4 +1,4 @@
import subprocess, shlex
import subprocess, shlex, sys
from collections import namedtuple
import bashlex
@@ -60,8 +60,12 @@ def evaluate_word_node(node, context):
def evaluate_command_node(node, context):
words = [evaluate_node(part, context=context) for part in node.parts]
command = ' '.join(words)
return subprocess.check_output(shlex.split(command), env=context.environment)
output = subprocess.check_output(shlex.split(command), env=context.environment)
if sys.version_info[0] >= 3:
return output.decode('utf8', 'replace')
else:
return output
def evaluate_parameter_node(node, context):
return context.environment.get(node.value, '')
+17
View File
@@ -22,3 +22,20 @@ class BuildSkipper(object):
def __repr__(self):
return 'BuildSkipper(%r)' % ' '.join(self.patterns)
# Taken from https://stackoverflow.com/a/107717
class Unbuffered(object):
def __init__(self, stream):
self.stream = stream
def write(self, data):
self.stream.write(data)
self.stream.flush()
def writelines(self, datas):
self.stream.writelines(datas)
self.stream.flush()
def __getattr__(self, attr):
return getattr(self.stream, attr)
+2 -2
View File
@@ -7,13 +7,13 @@ except ImportError:
from collections import namedtuple
from glob import glob
from .util import prepare_command
from .util import prepare_command, Unbuffered
def build(project_dir, package_name, output_dir, test_command, test_requires, before_build, skip, environment):
# Python under AppVeyor/Windows seems to be buffering by default, giving problems interleaving subprocess call output with unflushed calls to 'print'
sys.stdout.flush()
sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
sys.stdout = Unbuffered(sys.stdout)
# run_with_env is a cmd file that sets the right environment variables to
run_with_env = os.path.join(tempfile.gettempdir(), 'appveyor_run_with_env.cmd')
+1 -1
View File
@@ -1,5 +1,5 @@
[bumpversion]
current_version = 0.5.0
current_version = 0.5.1
commit = True
tag = True
message = Bump version
+1 -1
View File
@@ -8,7 +8,7 @@ except ImportError:
setup(
name='cibuildwheel',
version='0.5.0',
version='0.5.1',
install_requires=['bashlex'],
description="Build Python wheels on CI with minimal configuration.",
long_description='For readme please see http://github.com/joerick/cibuildwheel',