Merge branch 'master' into henryiii/pep517

This commit is contained in:
Joe Rickerby
2020-06-23 19:39:59 +01:00
committed by GitHub
15 changed files with 157 additions and 11 deletions
+2
View File
@@ -128,6 +128,7 @@ def main() -> None:
build_config, skip_config = os.environ.get('CIBW_BUILD', '*'), os.environ.get('CIBW_SKIP', '')
environment_config = get_option_from_environment('CIBW_ENVIRONMENT', platform=platform, default='')
before_all = get_option_from_environment('CIBW_BEFORE_ALL', platform=platform, default='')
before_build = get_option_from_environment('CIBW_BEFORE_BUILD', platform=platform)
repair_command = get_option_from_environment('CIBW_REPAIR_WHEEL_COMMAND', platform=platform, default=repair_command_default)
dependency_versions = get_option_from_environment('CIBW_DEPENDENCY_VERSIONS', platform=platform, default='pinned')
@@ -212,6 +213,7 @@ def main() -> None:
test_extras=test_extras,
before_test=before_test,
before_build=before_build,
before_all=before_all,
build_verbosity=build_verbosity,
build_selector=build_selector,
repair_command=repair_command,
+3 -3
View File
@@ -1,6 +1,6 @@
import bashlex # type: ignore
from typing import Dict, List
from typing import Dict, List, Mapping
from . import bashlex_eval
@@ -61,8 +61,8 @@ class ParsedEnvironment:
def __init__(self, assignments: List[EnvironmentAssignment]):
self.assignments = assignments
def as_dictionary(self, prev_environment: Dict[str, str]) -> Dict[str, str]:
environment = prev_environment.copy()
def as_dictionary(self, prev_environment: Mapping[str, str]) -> Dict[str, str]:
environment = dict(**prev_environment)
for assignment in self.assignments:
value = assignment.evaluated_value(environment=environment)
+24
View File
@@ -133,6 +133,30 @@ def build(options: BuildOptions) -> None:
call(['docker', 'start', container_name])
if options.before_all:
call(
['docker', 'exec', '-i', container_name] + shell_cmd,
universal_newlines=True,
input='''
PS4=' + '
set -o errexit
set -o xtrace
# add a modern Python interpreter to PATH so it can be used by BEFORE_ALL
# commands
export PATH=/opt/python/cp38-cp38:$PATH
{environment_exports}
sh -c {before_all}
'''.format(
environment_exports='\n'.join(options.environment.as_shell_commands()),
before_all=shlex.quote(prepare_command(options.before_all, project='/project', package=container_package_dir))
)
)
for config in platform_configs:
if options.dependency_constraints:
constraints_file = options.dependency_constraints.get_for_python_version(config.version)
+5
View File
@@ -176,6 +176,11 @@ def build(options: BuildOptions) -> None:
built_wheel_dir = temp_dir / 'built_wheel'
repaired_wheel_dir = temp_dir / 'repaired_wheel'
if options.before_all:
env = options.environment.as_dictionary(prev_environment=os.environ)
before_all_prepared = prepare_command(options.before_all, project='.', package=options.package_dir)
call([before_all_prepared], shell=True, env=env)
python_configurations = get_python_configurations(options.build_selector)
for config in python_configurations:
+1
View File
@@ -112,6 +112,7 @@ class BuildOptions(NamedTuple):
output_dir: Path
build_selector: BuildSelector
environment: ParsedEnvironment
before_all: str
before_build: Optional[str]
repair_command: str
manylinux_images: Optional[Dict[str, str]]
+5
View File
@@ -188,6 +188,11 @@ def build(options: BuildOptions) -> None:
nuget = Path('C:\\cibw\\nuget.exe')
download('https://dist.nuget.org/win-x86-commandline/latest/nuget.exe', nuget)
if options.before_all:
env = options.environment.as_dictionary(prev_environment=os.environ)
before_all_prepared = prepare_command(options.before_all, project='.', package=options.package_dir)
shell([before_all_prepared], env=env)
python_configurations = get_python_configurations(options.build_selector)
for config in python_configurations:
dependency_constraint_flags = []