refactor: address review, use NamedTuple

This commit is contained in:
Henry Schreiner
2021-09-21 11:35:25 -04:00
parent 6ab315638a
commit 9b463f912a
+21 -11
View File
@@ -2,7 +2,7 @@ import subprocess
import sys
import textwrap
from pathlib import Path, PurePath
from typing import Iterator, List, NamedTuple, Set, Tuple
from typing import Iterator, List, NamedTuple, Set
from .architecture import Architecture
from .docker_container import DockerContainer
@@ -28,6 +28,12 @@ class PythonConfiguration(NamedTuple):
return PurePath(self.path_str)
class BuildConfig(NamedTuple):
platform_configs: List[PythonConfiguration]
platform_tag: str
docker_image: str
def get_python_configurations(
build_selector: BuildSelector,
architectures: Set[Architecture],
@@ -47,9 +53,9 @@ def get_python_configurations(
]
def get_linux_platforms(
def get_build_configs(
options: BuildOptions, python_configurations: List[PythonConfiguration]
) -> Iterator[Tuple[List[PythonConfiguration], str, str]]:
) -> Iterator[BuildConfig]:
platforms = [
("cp", "manylinux_x86_64", "x86_64"),
("cp", "manylinux_i686", "i686"),
@@ -84,7 +90,7 @@ def get_linux_platforms(
if not platform_configs:
continue
yield platform_configs, platform_tag, docker_image
yield BuildConfig(platform_configs, platform_tag, docker_image)
def build_on_docker(
@@ -307,18 +313,22 @@ def build(options: BuildOptions) -> None:
container_project_path = PurePath("/project")
container_package_dir = container_project_path / abs_package_dir.relative_to(cwd)
for platform_configs, platform_tag, docker_image in get_linux_platforms(
options, python_configurations
):
for build_config in get_build_configs(options, python_configurations):
try:
log.step(f"Starting Docker image {docker_image}...")
log.step(f"Starting Docker image {build_config.docker_image}...")
with DockerContainer(
docker_image,
simulate_32_bit=platform_tag.endswith("i686"),
build_config.docker_image,
simulate_32_bit=build_config.platform_tag.endswith("i686"),
cwd=container_project_path,
) as docker:
build_on_docker(
options, platform_configs, docker, container_project_path, container_package_dir
options,
build_config.platform_configs,
docker,
container_project_path,
container_package_dir,
)
except subprocess.CalledProcessError as error: