Meta: Add missing type hints to ladybird.py

This enables significantly better LSP integration.
This commit is contained in:
Timothy Flynn 2025-05-21 18:06:44 -04:00 committed by Andrew Kaster
commit 23a95cfb9a
Notes: github-actions[bot] 2025-05-21 22:57:01 +00:00

View file

@ -48,7 +48,9 @@ class Platform:
self.host_architecture = HostArchitecture.Unsupported self.host_architecture = HostArchitecture.Unsupported
def main(platform): def main():
platform = Platform()
if platform.host_system == HostSystem.Unsupported: if platform.host_system == HostSystem.Unsupported:
print(f"Unsupported host system {platform.system}", file=sys.stderr) print(f"Unsupported host system {platform.system}", file=sys.stderr)
sys.exit(1) sys.exit(1)
@ -211,7 +213,7 @@ def main(platform):
addr2line_main(build_dir, args.target, args.program, args.addresses) addr2line_main(build_dir, args.target, args.program, args.addresses)
def configure_main(platform, preset: str, cc: str, cxx: str): def configure_main(platform: Platform, preset: str, cc: str, cxx: str) -> Path:
cmake_args = [] cmake_args = []
host_system = platform.host_system host_system = platform.host_system
@ -225,7 +227,6 @@ def configure_main(platform, preset: str, cc: str, cxx: str):
build_vcpkg() build_vcpkg()
validate_cmake_version() validate_cmake_version()
cmake_args.extend(build_env_cmake_args)
config_args = [ config_args = [
"cmake", "cmake",
"--preset", "--preset",
@ -235,6 +236,7 @@ def configure_main(platform, preset: str, cc: str, cxx: str):
"-B", "-B",
build_preset_dir, build_preset_dir,
] ]
config_args.extend(build_env_cmake_args)
config_args.extend(cmake_args) config_args.extend(cmake_args)
# FIXME: Improve error reporting for vcpkg install failures # FIXME: Improve error reporting for vcpkg install failures
@ -248,7 +250,7 @@ def configure_main(platform, preset: str, cc: str, cxx: str):
return build_preset_dir return build_preset_dir
def configure_skia_jemalloc(): def configure_skia_jemalloc() -> list[str]:
page_size = resource.getpagesize() page_size = resource.getpagesize()
gn = shutil.which("gn") or None gn = shutil.which("gn") or None
@ -278,7 +280,7 @@ def configure_skia_jemalloc():
return cmake_args return cmake_args
def configure_build_env(preset: str, cc: str, cxx: str): def configure_build_env(preset: str, cc: str, cxx: str) -> tuple[Path, Path, list[str]]:
cmake_args = [] cmake_args = []
cmake_args.extend( cmake_args.extend(
[ [
@ -300,11 +302,12 @@ def configure_build_env(preset: str, cc: str, cxx: str):
"Sanitizer": build_root_dir / "sanitizers", "Sanitizer": build_root_dir / "sanitizers",
"Distribution": build_root_dir / "distribution", "Distribution": build_root_dir / "distribution",
} }
if preset not in known_presets:
build_preset_dir = known_presets.get(preset, None)
if not build_preset_dir:
print(f'Unknown build preset "{preset}"', file=sys.stderr) print(f'Unknown build preset "{preset}"', file=sys.stderr)
sys.exit(1) sys.exit(1)
build_preset_dir = known_presets.get(preset)
vcpkg_root = str(build_root_dir / "vcpkg") vcpkg_root = str(build_root_dir / "vcpkg")
os.environ["VCPKG_ROOT"] = vcpkg_root os.environ["VCPKG_ROOT"] = vcpkg_root
os.environ["PATH"] += os.pathsep + str(lb_source_dir.joinpath("Toolchain", "Local", "cmake", "bin")) os.environ["PATH"] += os.pathsep + str(lb_source_dir.joinpath("Toolchain", "Local", "cmake", "bin"))
@ -350,7 +353,7 @@ def validate_cmake_version():
sys.exit(1) sys.exit(1)
def ensure_ladybird_source_dir(): def ensure_ladybird_source_dir() -> Path:
ladybird_source_dir = os.environ.get("LADYBIRD_SOURCE_DIR", None) ladybird_source_dir = os.environ.get("LADYBIRD_SOURCE_DIR", None)
ladybird_source_dir = Path(ladybird_source_dir) if ladybird_source_dir else None ladybird_source_dir = Path(ladybird_source_dir) if ladybird_source_dir else None
@ -374,7 +377,7 @@ def ensure_ladybird_source_dir():
return ladybird_source_dir return ladybird_source_dir
def build_main(build_dir, target: str | None = None, args: list[str] = []): def build_main(build_dir: Path, target: str | None = None, args: list[str] = []):
build_args = [ build_args = [
"cmake", "cmake",
"--build", "--build",
@ -406,7 +409,7 @@ def build_main(build_dir, target: str | None = None, args: list[str] = []):
sys.exit(1) sys.exit(1)
def test_main(build_dir, preset: str, pattern: str | None): def test_main(build_dir: Path, preset: str, pattern: str | None):
test_args = [ test_args = [
"ctest", "ctest",
"--preset", "--preset",
@ -436,7 +439,7 @@ def test_main(build_dir, preset: str, pattern: str | None):
sys.exit(1) sys.exit(1)
def run_main(host_system, build_dir, target: str, args: list[str]): def run_main(host_system: HostSystem, build_dir: Path, target: str, args: list[str]):
run_args = [] run_args = []
if host_system == HostSystem.macOS and target in ( if host_system == HostSystem.macOS and target in (
@ -462,14 +465,13 @@ def run_main(host_system, build_dir, target: str, args: list[str]):
sys.exit(1) sys.exit(1)
def debug_main(host_system, build_dir, target: str, debugger: str, debugger_commands: list[str]): def debug_main(host_system: HostSystem, build_dir: Path, target: str, debugger: str, debugger_commands: list[str]):
debuggers = ["gdb", "lldb"] debuggers = ["gdb", "lldb"]
if debugger not in debuggers or not shutil.which(debugger): if debugger not in debuggers or not shutil.which(debugger):
print("Please install gdb or lldb!", file=sys.stderr) print("Please install gdb or lldb!", file=sys.stderr)
sys.exit(1) sys.exit(1)
gdb_args = [
debugger, gdb_args = [debugger]
]
for cmd in debugger_commands: for cmd in debugger_commands:
gdb_args.extend( gdb_args.extend(
[ [
@ -529,10 +531,10 @@ def addr2line_main(build_dir, target: str, program: str, addresses: list[str]):
sys.exit(1) sys.exit(1)
def print_process_stderr(e, msg): def print_process_stderr(e: subprocess.CalledProcessError, msg: str):
err_details = f": {e.stderr}" if e.stderr else "" err_details = f": {e.stderr}" if e.stderr else ""
print(f"{msg}{err_details}", file=sys.stderr) print(f"{msg}{err_details}", file=sys.stderr)
if __name__ == "__main__": if __name__ == "__main__":
main(Platform()) main()