Merge branch 'master' into henryiii/pep517
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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]]
|
||||
|
||||
@@ -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 = []
|
||||
|
||||
Reference in New Issue
Block a user