1
0
Fork 0
mirror of https://github.com/LadybirdBrowser/ladybird.git synced 2025-06-08 05:27:14 +09:00
ladybird/Meta/utils.py
Timothy Flynn 3d0fdaacff Meta: Migrate find_compiler.sh logic to a python script
This will allow us to re-use this logic from within other python
scripts. The find_compiler.sh script still exists, as it is used by
some other bash scripts. The pick_host_compiler() function will now
execute find_compiler.py and store its result in $CC and $CXX.

Note that the python script supports Windows.
2025-05-29 16:24:17 -04:00

41 lines
1 KiB
Python

# Copyright (c) 2025, Tim Flynn <trflynn89@ladybird.org>
#
# SPDX-License-Identifier: BSD-2-Clause
import signal
import subprocess
import sys
from typing import Optional
from typing import Union
def run_command(
command: list[str],
input: Union[str, None] = None,
return_output: bool = False,
exit_on_failure: bool = False,
) -> Optional[str]:
stdin = subprocess.PIPE if type(input) is str else None
stdout = subprocess.PIPE if return_output else None
try:
# FIXME: For Windows, set the working directory so DLLs are found.
with subprocess.Popen(command, stdin=stdin, stdout=stdout, text=True) as process:
(output, _) = process.communicate(input=input)
if process.returncode != 0:
if exit_on_failure:
sys.exit(process.returncode)
return None
except KeyboardInterrupt:
process.send_signal(signal.SIGINT)
process.wait()
sys.exit(process.returncode)
if return_output:
return output.strip()
return None