Skip to content

AppVeyor: don't download huge pillow-depends.zip #7407

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10 commits into from
Sep 24, 2023
Prev Previous commit
Next Next commit
Add type hints
  • Loading branch information
hugovk committed Sep 18, 2023
commit 66bf71bafaccb24b47bc1100216fa5cbaf716b99
43 changes: 26 additions & 17 deletions winbuild/build_prepare.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from __future__ import annotations

import argparse
import os
import platform
Expand All @@ -7,36 +9,40 @@
import subprocess


def cmd_cd(path):
def cmd_cd(path: str) -> str:
return f"cd /D {path}"


def cmd_set(name, value):
def cmd_set(name: str, value: str) -> str:
return f"set {name}={value}"


def cmd_append(name, value):
def cmd_append(name: str, value: str) -> str:
op = "path " if name == "PATH" else f"set {name}="
return op + f"%{name}%;{value}"


def cmd_copy(src, tgt):
def cmd_copy(src: str, tgt: str) -> str:
return f'copy /Y /B "{src}" "{tgt}"'


def cmd_xcopy(src, tgt):
def cmd_xcopy(src: str, tgt: str) -> str:
return f'xcopy /Y /E "{src}" "{tgt}"'


def cmd_mkdir(path):
def cmd_mkdir(path: str) -> str:
return f'mkdir "{path}"'


def cmd_rmdir(path):
def cmd_rmdir(path: str) -> str:
return f'rmdir /S /Q "{path}"'


def cmd_nmake(makefile=None, target="", params=None):
def cmd_nmake(
makefile: str | None = None,
target: str = "",
params: str | list[str] | tuple[str, ...] = None,
) -> str:
if params is None:
params = ""
elif isinstance(params, (list, tuple)):
Expand All @@ -55,7 +61,7 @@ def cmd_nmake(makefile=None, target="", params=None):
)


def cmds_cmake(target, *params):
def cmds_cmake(target: str | tuple[str, ...] | list[str], *params) -> list[str]:
if not isinstance(target, str):
target = " ".join(target)

Expand All @@ -80,8 +86,11 @@ def cmds_cmake(target, *params):


def cmd_msbuild(
file, configuration="Release", target="Build", platform="{msbuild_arch}"
):
file: str,
configuration: str = "Release",
target: str = "Build",
platform: str = "{msbuild_arch}",
) -> str:
return " ".join(
[
"{msbuild}",
Expand Down Expand Up @@ -365,7 +374,7 @@ def cmd_msbuild(


# based on distutils._msvccompiler from CPython 3.7.4
def find_msvs():
def find_msvs() -> dict[str, str] | None:
root = os.environ.get("ProgramFiles(x86)") or os.environ.get("ProgramFiles")
if not root:
print("Program Files not found")
Expand Down Expand Up @@ -482,7 +491,7 @@ def extract_dep(url: str, filename: str) -> None:
raise RuntimeError(msg)


def write_script(name, lines):
def write_script(name: str, lines: list[str]) -> None:
name = os.path.join(args.build_dir, name)
lines = [line.format(**prefs) for line in lines]
print("Writing " + name)
Expand All @@ -493,7 +502,7 @@ def write_script(name, lines):
print(" " + line)


def get_footer(dep):
def get_footer(dep: dict) -> list[str]:
lines = []
for out in dep.get("headers", []):
lines.append(cmd_copy(out, "{inc_dir}"))
Expand All @@ -504,7 +513,7 @@ def get_footer(dep):
return lines


def build_env():
def build_env() -> None:
lines = [
"if defined DISTUTILS_USE_SDK goto end",
cmd_set("INCLUDE", "{inc_dir}"),
Expand All @@ -520,7 +529,7 @@ def build_env():
write_script("build_env.cmd", lines)


def build_dep(name):
def build_dep(name: str) -> str:
dep = deps[name]
dir = dep["dir"]
file = f"build_dep_{name}.cmd"
Expand Down Expand Up @@ -570,7 +579,7 @@ def build_dep(name):
return file


def build_dep_all():
def build_dep_all() -> None:
lines = [r'call "{build_dir}\build_env.cmd"']
for dep_name in deps:
print()
Expand Down