aboutsummaryrefslogtreecommitdiffstats
path: root/python/servo/platform
diff options
context:
space:
mode:
authorMartin Robinson <mrobinson@igalia.com>2024-01-17 10:11:04 +0100
committerGitHub <noreply@github.com>2024-01-17 09:11:04 +0000
commitd43adb1a92c419680be86e7335f3de84b75fb2ef (patch)
tree67c573216efc3471827c45e3f0ab88b8b9105e87 /python/servo/platform
parent6a7b450478f69d9d83b0936a0ab28ac2d94761d4 (diff)
downloadservo-d43adb1a92c419680be86e7335f3de84b75fb2ef.tar.gz
servo-d43adb1a92c419680be86e7335f3de84b75fb2ef.zip
build: Only set PATH for GStreamer (#31078)
The documentation claims that this is the only environment variable that needs to be set before build.
Diffstat (limited to 'python/servo/platform')
-rw-r--r--python/servo/platform/base.py51
-rw-r--r--python/servo/platform/macos.py18
2 files changed, 18 insertions, 51 deletions
diff --git a/python/servo/platform/base.py b/python/servo/platform/base.py
index a3909d08c11..7cb1a9b0996 100644
--- a/python/servo/platform/base.py
+++ b/python/servo/platform/base.py
@@ -23,30 +23,6 @@ class Base:
self.is_linux = False
self.is_macos = False
- def set_gstreamer_environment_variables_if_necessary(
- self, env: Dict[str, str], cross_compilation_target: Optional[str], check_installation=True
- ):
- # We may not need to update environment variables if GStreamer is installed
- # for the system on Linux.
- gstreamer_root = self.gstreamer_root(cross_compilation_target)
- if gstreamer_root:
- util.prepend_paths_to_env(env, "PATH", os.path.join(gstreamer_root, "bin"))
- util.prepend_paths_to_env(
- env, "PKG_CONFIG_PATH", os.path.join(gstreamer_root, "lib", "pkgconfig")
- )
- util.prepend_paths_to_env(
- env,
- self.library_path_variable_name(),
- os.path.join(gstreamer_root, "lib"),
- )
- env["GST_PLUGIN_SCANNER"] = os.path.join(
- gstreamer_root,
- "libexec",
- "gstreamer-1.0",
- f"gst-plugin-scanner{self.executable_suffix()}",
- )
- env["GST_PLUGIN_SYSTEM_PATH"] = os.path.join(gstreamer_root, "lib", "gstreamer-1.0")
-
def gstreamer_root(self, _cross_compilation_target: Optional[str]) -> Optional[str]:
raise NotImplementedError("Do not know how to get GStreamer path for platform.")
@@ -65,18 +41,23 @@ class Base:
)
def is_gstreamer_installed(self, cross_compilation_target: Optional[str]) -> bool:
- env = os.environ.copy()
- self.set_gstreamer_environment_variables_if_necessary(
- env, cross_compilation_target, check_installation=False)
- return (
- subprocess.call(
- ["pkg-config", "--atleast-version=1.18", "gstreamer-1.0"],
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE,
- env=env,
+ gstreamer_root = self.gstreamer_root(cross_compilation_target)
+ if gstreamer_root:
+ pkg_config = os.path.join(gstreamer_root, "bin", "pkg-config")
+ else:
+ pkg_config = "pkg-config"
+
+ try:
+ return (
+ subprocess.call(
+ [pkg_config, "--atleast-version=1.18", "gstreamer-1.0"],
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE,
+ )
+ == 0
)
- == 0
- )
+ except FileNotFoundError:
+ return False
def bootstrap(self, force: bool):
installed_something = self._platform_bootstrap(force)
diff --git a/python/servo/platform/macos.py b/python/servo/platform/macos.py
index 34f936a3f21..73708af6446 100644
--- a/python/servo/platform/macos.py
+++ b/python/servo/platform/macos.py
@@ -36,23 +36,9 @@ class MacOS(Base):
return GSTREAMER_ROOT
def is_gstreamer_installed(self, cross_compilation_target: Optional[str]) -> bool:
- if not super().is_gstreamer_installed(cross_compilation_target):
- return False
-
# Servo only supports the official GStreamer distribution on MacOS.
- env = os.environ.copy()
- self.set_gstreamer_environment_variables_if_necessary(
- env, cross_compilation_target, check_installation=False
- )
- gst_lib_dir = subprocess.check_output(
- ["pkg-config", "--variable=libdir", "gstreamer-1.0"], env=env
- )
- if not gst_lib_dir.startswith(bytes(GSTREAMER_ROOT, "utf-8")):
- print("GStreamer is installed, but not the official packages.\n"
- "Run `./mach bootstrap-gtstreamer` or install packages from "
- "https://gstreamer.freedesktop.org/")
- return False
- return True
+ # Make sure we use the right `pkg-config`.
+ return not cross_compilation_target and os.path.exists(GSTREAMER_ROOT)
def _platform_bootstrap(self, _force: bool) -> bool:
installed_something = False