Adding an to make the pip wheel invocation more or less verbose

This commit is contained in:
Yannick Jadoul
2018-04-08 21:37:40 +02:00
parent 71503b7143
commit c563bca054
6 changed files with 37 additions and 9 deletions
+11
View File
@@ -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`
| --- | ---
+7
View File
@@ -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,
) )
+4 -3
View File
@@ -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_flag
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:
@@ -66,7 +66,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 +108,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=get_build_verbosity_flag(build_verbosity),
environment_exports='\n'.join(environment.as_shell_commands()), environment_exports='\n'.join(environment.as_shell_commands()),
) )
+3 -3
View File
@@ -7,10 +7,10 @@ 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_flag
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.14/python-2.7.14-macosx10.6.pkg'),
@@ -87,7 +87,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_flag(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'):
+9
View File
@@ -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_flag(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()
+3 -3
View File
@@ -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_flag, 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)
@@ -82,7 +82,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_flag(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