Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d93547d8be | ||
|
|
a863e21b14 | ||
|
|
b4c0150d43 | ||
|
|
c8019dac1d | ||
|
|
e6fa70a910 | ||
|
|
b19e8b76f3 | ||
|
|
23ab1f780e | ||
|
|
eedcd62753 | ||
|
|
8d9d970874 | ||
|
|
c563bca054 |
@@ -15,7 +15,7 @@ What does it do?
|
|||||||
| | macOS 10.6+ | manylinux i686 | manylinux x86_64 | Windows 32bit | Windows 64bit |
|
| | macOS 10.6+ | manylinux i686 | manylinux x86_64 | Windows 32bit | Windows 64bit |
|
||||||
|---|---|---|---|---|---|
|
|---|---|---|---|---|---|
|
||||||
| Python 2.7 | ✅ | ✅ | ✅ | ✅ | ✅ |
|
| Python 2.7 | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||||
| Python 3.3 | | ✅ | ✅ | ✅ | ✅ |
|
| Python 3.3 | | | | ✅ | ✅ |
|
||||||
| Python 3.4 | ✅ | ✅ | ✅ | ✅ | ✅ |
|
| Python 3.4 | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||||
| Python 3.5 | ✅ | ✅ | ✅ | ✅ | ✅ |
|
| Python 3.5 | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||||
| Python 3.6 | ✅ | ✅ | ✅ | ✅ | ✅ |
|
| Python 3.6 | ✅ | ✅ | ✅ | ✅ | ✅ |
|
||||||
@@ -49,7 +49,7 @@ Usage
|
|||||||
env: PIP=pip2
|
env: PIP=pip2
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- $PIP install cibuildwheel==0.7.2
|
- $PIP install cibuildwheel==0.8.0
|
||||||
- cibuildwheel --output-dir wheelhouse
|
- cibuildwheel --output-dir wheelhouse
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -59,7 +59,7 @@ Usage
|
|||||||
|
|
||||||
```
|
```
|
||||||
build_script:
|
build_script:
|
||||||
- pip install cibuildwheel==0.7.2
|
- pip install cibuildwheel==0.8.0
|
||||||
- cibuildwheel --output-dir wheelhouse
|
- cibuildwheel --output-dir wheelhouse
|
||||||
artifacts:
|
artifacts:
|
||||||
- path: "wheelhouse\\*.whl"
|
- path: "wheelhouse\\*.whl"
|
||||||
@@ -82,6 +82,7 @@ All being well, you should get wheels delivered to you in a few minutes.
|
|||||||
|---|---|---|
|
|---|---|---|
|
||||||
| **Target wheels** | `CIBW_PLATFORM` | Override the auto-detected target platform |
|
| **Target wheels** | `CIBW_PLATFORM` | Override the auto-detected target platform |
|
||||||
| | `CIBW_SKIP` | Skip certain Python versions |
|
| | `CIBW_SKIP` | Skip certain Python versions |
|
||||||
|
| **Build parameters** | `CIBW_BUILD_VERBOSITY` | Increase or decrease the output of `pip wheel` |
|
||||||
| **Build environment** | `CIBW_ENVIRONMENT` | Set environment variables needed during the build |
|
| **Build environment** | `CIBW_ENVIRONMENT` | Set environment variables needed during the build |
|
||||||
| | `CIBW_BEFORE_BUILD` | Execute a shell command preparing each wheel's build |
|
| | `CIBW_BEFORE_BUILD` | Execute a shell command preparing each wheel's build |
|
||||||
| | `CIBW_MANYLINUX1_X86_64_IMAGE` | Specify an alternative manylinx1 x86_64 docker image |
|
| | `CIBW_MANYLINUX1_X86_64_IMAGE` | Specify an alternative manylinx1 x86_64 docker image |
|
||||||
@@ -166,6 +167,16 @@ Examples:
|
|||||||
- Skip Python 3.6 on Linux: `cp36-manylinux*`
|
- Skip Python 3.6 on Linux: `cp36-manylinux*`
|
||||||
- Only build on Python 3.6: `cp27-* cp34-* cp35-*`
|
- Only build on Python 3.6: `cp27-* cp34-* cp35-*`
|
||||||
|
|
||||||
|
| Environment variable: `CIBW_BUILD_VERBOSITY`
|
||||||
|
| ---
|
||||||
|
|
||||||
|
Optional.
|
||||||
|
|
||||||
|
An number from 1 to 3 to increase the level of verbosity (corresponding to invoking pip with `-v`, `-vv`, and `-vvv`), between -1 and -3 (`-q`, `-qq`, and `-qqq`), or just 0 (default verbosity). These flags are useful while debugging a build when the output of the actual build invoked by `pip wheel` is required.
|
||||||
|
|
||||||
|
Platform-specific variants also available:
|
||||||
|
`CIBW_BUILD_VERBOSITY_MACOS` | `CIBW_BUILD_VERBOSITY_WINDOWS` | `CIBW_BUILD_VERBOSITY_LINUX`
|
||||||
|
|
||||||
| Environment variable: `CIBW_ENVIRONMENT`
|
| Environment variable: `CIBW_ENVIRONMENT`
|
||||||
| ---
|
| ---
|
||||||
|
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
__version__ = '0.7.2'
|
__version__ = '0.8.0'
|
||||||
|
|||||||
@@ -74,9 +74,15 @@ def main():
|
|||||||
test_requires = os.environ.get('CIBW_TEST_REQUIRES', '').split()
|
test_requires = os.environ.get('CIBW_TEST_REQUIRES', '').split()
|
||||||
project_dir = args.project_dir
|
project_dir = args.project_dir
|
||||||
before_build = get_option_from_environment('CIBW_BEFORE_BUILD', platform=platform)
|
before_build = get_option_from_environment('CIBW_BEFORE_BUILD', platform=platform)
|
||||||
|
build_verbosity = get_option_from_environment('CIBW_BUILD_VERBOSITY', platform=platform) or ''
|
||||||
skip_config = os.environ.get('CIBW_SKIP', '')
|
skip_config = os.environ.get('CIBW_SKIP', '')
|
||||||
environment_config = get_option_from_environment('CIBW_ENVIRONMENT', platform=platform) or ''
|
environment_config = get_option_from_environment('CIBW_ENVIRONMENT', platform=platform) or ''
|
||||||
|
|
||||||
|
try:
|
||||||
|
build_verbosity = min(3, max(-3, int(build_verbosity)))
|
||||||
|
except ValueError:
|
||||||
|
build_verbosity = 0
|
||||||
|
|
||||||
try:
|
try:
|
||||||
environment = parse_environment(environment_config)
|
environment = parse_environment(environment_config)
|
||||||
except (EnvironmentParseError, ValueError) as e:
|
except (EnvironmentParseError, ValueError) as e:
|
||||||
@@ -118,6 +124,7 @@ def main():
|
|||||||
test_command=test_command,
|
test_command=test_command,
|
||||||
test_requires=test_requires,
|
test_requires=test_requires,
|
||||||
before_build=before_build,
|
before_build=before_build,
|
||||||
|
build_verbosity=build_verbosity,
|
||||||
skip=skip,
|
skip=skip,
|
||||||
environment=environment,
|
environment=environment,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
from __future__ import print_function
|
from __future__ import print_function
|
||||||
import os, subprocess, sys
|
import os, subprocess, sys
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
from .util import prepare_command
|
from .util import prepare_command, get_build_verbosity_extra_flags
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from shlex import quote as shlex_quote
|
from shlex import quote as shlex_quote
|
||||||
@@ -9,7 +9,7 @@ except ImportError:
|
|||||||
from pipes import quote as shlex_quote
|
from pipes import quote as shlex_quote
|
||||||
|
|
||||||
|
|
||||||
def build(project_dir, package_name, output_dir, test_command, test_requires, before_build, skip, environment, manylinux1_images):
|
def build(project_dir, package_name, output_dir, test_command, test_requires, before_build, build_verbosity, skip, environment, manylinux1_images):
|
||||||
try:
|
try:
|
||||||
subprocess.check_call(['docker', '--version'])
|
subprocess.check_call(['docker', '--version'])
|
||||||
except:
|
except:
|
||||||
@@ -22,13 +22,11 @@ def build(project_dir, package_name, output_dir, test_command, test_requires, be
|
|||||||
python_configurations = [
|
python_configurations = [
|
||||||
PythonConfiguration(identifier='cp27-manylinux1_x86_64', path='/opt/python/cp27-cp27m'),
|
PythonConfiguration(identifier='cp27-manylinux1_x86_64', path='/opt/python/cp27-cp27m'),
|
||||||
PythonConfiguration(identifier='cp27-manylinux1_x86_64', path='/opt/python/cp27-cp27mu'),
|
PythonConfiguration(identifier='cp27-manylinux1_x86_64', path='/opt/python/cp27-cp27mu'),
|
||||||
PythonConfiguration(identifier='cp33-manylinux1_x86_64', path='/opt/python/cp33-cp33m'),
|
|
||||||
PythonConfiguration(identifier='cp34-manylinux1_x86_64', path='/opt/python/cp34-cp34m'),
|
PythonConfiguration(identifier='cp34-manylinux1_x86_64', path='/opt/python/cp34-cp34m'),
|
||||||
PythonConfiguration(identifier='cp35-manylinux1_x86_64', path='/opt/python/cp35-cp35m'),
|
PythonConfiguration(identifier='cp35-manylinux1_x86_64', path='/opt/python/cp35-cp35m'),
|
||||||
PythonConfiguration(identifier='cp36-manylinux1_x86_64', path='/opt/python/cp36-cp36m'),
|
PythonConfiguration(identifier='cp36-manylinux1_x86_64', path='/opt/python/cp36-cp36m'),
|
||||||
PythonConfiguration(identifier='cp27-manylinux1_i686', path='/opt/python/cp27-cp27m'),
|
PythonConfiguration(identifier='cp27-manylinux1_i686', path='/opt/python/cp27-cp27m'),
|
||||||
PythonConfiguration(identifier='cp27-manylinux1_i686', path='/opt/python/cp27-cp27mu'),
|
PythonConfiguration(identifier='cp27-manylinux1_i686', path='/opt/python/cp27-cp27mu'),
|
||||||
PythonConfiguration(identifier='cp33-manylinux1_i686', path='/opt/python/cp33-cp33m'),
|
|
||||||
PythonConfiguration(identifier='cp34-manylinux1_i686', path='/opt/python/cp34-cp34m'),
|
PythonConfiguration(identifier='cp34-manylinux1_i686', path='/opt/python/cp34-cp34m'),
|
||||||
PythonConfiguration(identifier='cp35-manylinux1_i686', path='/opt/python/cp35-cp35m'),
|
PythonConfiguration(identifier='cp35-manylinux1_i686', path='/opt/python/cp35-cp35m'),
|
||||||
PythonConfiguration(identifier='cp36-manylinux1_i686', path='/opt/python/cp36-cp36m'),
|
PythonConfiguration(identifier='cp36-manylinux1_i686', path='/opt/python/cp36-cp36m'),
|
||||||
@@ -66,7 +64,7 @@ def build(project_dir, package_name, output_dir, test_command, test_requires, be
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Build that wheel
|
# Build that wheel
|
||||||
PATH="$PYBIN:$PATH" "$PYBIN/pip" wheel . -w /tmp/built_wheel --no-deps
|
PATH="$PYBIN:$PATH" "$PYBIN/pip" wheel . -w /tmp/built_wheel --no-deps {build_verbosity_flag}
|
||||||
built_wheel=(/tmp/built_wheel/*.whl)
|
built_wheel=(/tmp/built_wheel/*.whl)
|
||||||
|
|
||||||
# Delocate the wheel
|
# Delocate the wheel
|
||||||
@@ -108,6 +106,7 @@ def build(project_dir, package_name, output_dir, test_command, test_requires, be
|
|||||||
before_build=shlex_quote(
|
before_build=shlex_quote(
|
||||||
prepare_command(before_build, python='python', pip='pip', project='/project') if before_build else ''
|
prepare_command(before_build, python='python', pip='pip', project='/project') if before_build else ''
|
||||||
),
|
),
|
||||||
|
build_verbosity_flag=' '.join(get_build_verbosity_extra_flags(build_verbosity)),
|
||||||
environment_exports='\n'.join(environment.as_shell_commands()),
|
environment_exports='\n'.join(environment.as_shell_commands()),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -7,13 +7,13 @@ try:
|
|||||||
except ImportError:
|
except ImportError:
|
||||||
from pipes import quote as shlex_quote
|
from pipes import quote as shlex_quote
|
||||||
|
|
||||||
from .util import prepare_command
|
from .util import prepare_command, get_build_verbosity_extra_flags
|
||||||
|
|
||||||
|
|
||||||
def build(project_dir, package_name, output_dir, test_command, test_requires, before_build, skip, environment):
|
def build(project_dir, package_name, output_dir, test_command, test_requires, before_build, build_verbosity, skip, environment):
|
||||||
PythonConfiguration = namedtuple('PythonConfiguration', ['version', 'identifier', 'url'])
|
PythonConfiguration = namedtuple('PythonConfiguration', ['version', 'identifier', 'url'])
|
||||||
python_configurations = [
|
python_configurations = [
|
||||||
PythonConfiguration(version='2.7', identifier='cp27-macosx_10_6_intel', url='https://www.python.org/ftp/python/2.7.14/python-2.7.14-macosx10.6.pkg'),
|
PythonConfiguration(version='2.7', identifier='cp27-macosx_10_6_intel', url='https://www.python.org/ftp/python/2.7.15/python-2.7.15-macosx10.6.pkg'),
|
||||||
PythonConfiguration(version='3.4', identifier='cp34-macosx_10_6_intel', url='https://www.python.org/ftp/python/3.4.4/python-3.4.4-macosx10.6.pkg'),
|
PythonConfiguration(version='3.4', identifier='cp34-macosx_10_6_intel', url='https://www.python.org/ftp/python/3.4.4/python-3.4.4-macosx10.6.pkg'),
|
||||||
PythonConfiguration(version='3.5', identifier='cp35-macosx_10_6_intel', url='https://www.python.org/ftp/python/3.5.4/python-3.5.4-macosx10.6.pkg'),
|
PythonConfiguration(version='3.5', identifier='cp35-macosx_10_6_intel', url='https://www.python.org/ftp/python/3.5.4/python-3.5.4-macosx10.6.pkg'),
|
||||||
PythonConfiguration(version='3.6', identifier='cp36-macosx_10_6_intel', url='https://www.python.org/ftp/python/3.6.5/python-3.6.5-macosx10.6.pkg'),
|
PythonConfiguration(version='3.6', identifier='cp36-macosx_10_6_intel', url='https://www.python.org/ftp/python/3.6.5/python-3.6.5-macosx10.6.pkg'),
|
||||||
@@ -70,6 +70,7 @@ def build(project_dir, package_name, output_dir, test_command, test_requires, be
|
|||||||
# install pip & wheel
|
# install pip & wheel
|
||||||
call([python, get_pip_script, '--no-setuptools', '--no-wheel'], env=env)
|
call([python, get_pip_script, '--no-setuptools', '--no-wheel'], env=env)
|
||||||
call([pip, '--version'], env=env)
|
call([pip, '--version'], env=env)
|
||||||
|
call([pip, 'install', '--upgrade', 'setuptools'], env=env)
|
||||||
call([pip, 'install', 'wheel'], env=env)
|
call([pip, 'install', 'wheel'], env=env)
|
||||||
call([pip, 'install', 'delocate'], env=env)
|
call([pip, 'install', 'delocate'], env=env)
|
||||||
|
|
||||||
@@ -87,7 +88,7 @@ def build(project_dir, package_name, output_dir, test_command, test_requires, be
|
|||||||
call(before_build_prepared, env=env, shell=True)
|
call(before_build_prepared, env=env, shell=True)
|
||||||
|
|
||||||
# build the wheel
|
# build the wheel
|
||||||
call([pip, 'wheel', abs_project_dir, '-w', '/tmp/built_wheel', '--no-deps'], env=env)
|
call([pip, 'wheel', abs_project_dir, '-w', '/tmp/built_wheel', '--no-deps'] + get_build_verbosity_extra_flags(build_verbosity), env=env)
|
||||||
built_wheel = glob('/tmp/built_wheel/*.whl')[0]
|
built_wheel = glob('/tmp/built_wheel/*.whl')[0]
|
||||||
|
|
||||||
if built_wheel.endswith('none-any.whl'):
|
if built_wheel.endswith('none-any.whl'):
|
||||||
|
|||||||
@@ -13,6 +13,15 @@ def prepare_command(command, python, pip, project):
|
|||||||
return command.format(python=python, pip=pip, project=project)
|
return command.format(python=python, pip=pip, project=project)
|
||||||
|
|
||||||
|
|
||||||
|
def get_build_verbosity_extra_flags(level):
|
||||||
|
if level > 0:
|
||||||
|
return ['-' + level * 'v']
|
||||||
|
elif level < 0:
|
||||||
|
return ['-' + -level * 'q']
|
||||||
|
else:
|
||||||
|
return []
|
||||||
|
|
||||||
|
|
||||||
class BuildSkipper(object):
|
class BuildSkipper(object):
|
||||||
def __init__(self, skip_config):
|
def __init__(self, skip_config):
|
||||||
self.patterns = skip_config.split()
|
self.patterns = skip_config.split()
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ except ImportError:
|
|||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
from glob import glob
|
from glob import glob
|
||||||
|
|
||||||
from .util import prepare_command, Unbuffered
|
from .util import prepare_command, get_build_verbosity_extra_flags, Unbuffered
|
||||||
|
|
||||||
|
|
||||||
def build(project_dir, package_name, output_dir, test_command, test_requires, before_build, skip, environment):
|
def build(project_dir, package_name, output_dir, test_command, test_requires, before_build, build_verbosity, skip, environment):
|
||||||
# Python under AppVeyor/Windows seems to be buffering by default, giving problems interleaving subprocess call output with unflushed calls to 'print'
|
# 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.flush()
|
||||||
sys.stdout = Unbuffered(sys.stdout)
|
sys.stdout = Unbuffered(sys.stdout)
|
||||||
@@ -74,6 +74,7 @@ def build(project_dir, package_name, output_dir, test_command, test_requires, be
|
|||||||
# prepare the Python environment
|
# prepare the Python environment
|
||||||
shell(['python', '-m', 'pip', 'install', '--upgrade', 'pip'],
|
shell(['python', '-m', 'pip', 'install', '--upgrade', 'pip'],
|
||||||
env=env)
|
env=env)
|
||||||
|
shell(['pip', 'install', '--upgrade', 'setuptools'], env=env)
|
||||||
shell(['pip', 'install', 'wheel'], env=env)
|
shell(['pip', 'install', 'wheel'], env=env)
|
||||||
|
|
||||||
# run the before_build command
|
# run the before_build command
|
||||||
@@ -82,7 +83,7 @@ def build(project_dir, package_name, output_dir, test_command, test_requires, be
|
|||||||
shell([before_build_prepared], env=env)
|
shell([before_build_prepared], env=env)
|
||||||
|
|
||||||
# build the wheel
|
# build the wheel
|
||||||
shell(['pip', 'wheel', abs_project_dir, '-w', built_wheel_dir, '--no-deps'], env=env)
|
shell(['pip', 'wheel', abs_project_dir, '-w', built_wheel_dir, '--no-deps'] + get_build_verbosity_extra_flags(build_verbosity), env=env)
|
||||||
built_wheel = glob(built_wheel_dir+'/*.whl')[0]
|
built_wheel = glob(built_wheel_dir+'/*.whl')[0]
|
||||||
|
|
||||||
# install the wheel
|
# install the wheel
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
[bumpversion]
|
[bumpversion]
|
||||||
current_version = 0.7.2
|
current_version = 0.8.0
|
||||||
commit = True
|
commit = True
|
||||||
tag = True
|
tag = True
|
||||||
message = Bump version
|
message = Bump version
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ except ImportError:
|
|||||||
|
|
||||||
setup(
|
setup(
|
||||||
name='cibuildwheel',
|
name='cibuildwheel',
|
||||||
version='0.7.2',
|
version='0.8.0',
|
||||||
install_requires=['bashlex'],
|
install_requires=['bashlex'],
|
||||||
description="Build Python wheels on CI with minimal configuration.",
|
description="Build Python wheels on CI with minimal configuration.",
|
||||||
long_description='For readme please see http://github.com/joerick/cibuildwheel',
|
long_description='For readme please see http://github.com/joerick/cibuildwheel',
|
||||||
|
|||||||
Reference in New Issue
Block a user