mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-06 16:19:23 +00:00
Meta: Add missing type hints to ladybird.py
This enables significantly better LSP integration.
This commit is contained in:
parent
9d3d0c4874
commit
23a95cfb9a
Notes:
github-actions[bot]
2025-05-21 22:57:01 +00:00
Author: https://github.com/trflynn89
Commit: 23a95cfb9a
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/4837
Reviewed-by: https://github.com/ADKaster ✅
1 changed files with 19 additions and 17 deletions
|
@ -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()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue