diff options
author | Nirbheek Chauhan <nirbheek@centricular.com> | 2019-12-19 03:39:37 +0530 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek@centricular.com> | 2019-12-19 16:24:37 +0530 |
commit | bc1c337c77ec941405dcbffdda94f789403a9c45 (patch) | |
tree | 860654a65903d4e80f18eba9459e8c18f8ae3659 /gst-env.py | |
parent | 245baadbce97279d7d8902769305c0fc10d5c2a6 (diff) | |
download | gstreamer-bc1c337c77ec941405dcbffdda94f789403a9c45.tar.gz |
gst-env: Don't put helper binaries in PATH
Check if the executable would be installed into bindir before adding
it to PATH in the uninstalled shell.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-build/issues/67
Diffstat (limited to 'gst-env.py')
-rwxr-xr-x | gst-env.py | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/gst-env.py b/gst-env.py index 2124c9c578..a2e139edd6 100755 --- a/gst-env.py +++ b/gst-env.py @@ -13,6 +13,7 @@ import sys import tempfile import pathlib import signal +from pathlib import PurePath from distutils.sysconfig import get_python_lib from distutils.util import strtobool @@ -96,6 +97,24 @@ def is_library_target_and_not_plugin(target, filename): return False return True +def is_binary_target_and_in_path(target, filename, bindir): + if target['type'] != 'executable': + return False + if not target['installed']: + return False + # Check if this file installed by this target is installed to bindir + for install_filename in listify(target['install_filename']): + if install_filename.endswith(os.path.basename(filename)): + break + else: + # None of the installed files in the target correspond to the built + # filename, so skip + return False + fpath = PurePath(install_filename) + if fpath.parent != bindir: + return False + return True + def get_wine_subprocess_env(options, env): with open(os.path.join(options.builddir, 'meson-info', 'intro-buildoptions.json')) as f: @@ -206,10 +225,14 @@ def get_subprocess_env(options, gst_version): build_options_s = subprocess.check_output(meson + ['introspect', options.builddir, '--buildoptions']) build_options = json.loads(build_options_s.decode()) libdir, = [o['value'] for o in build_options if o['name'] == 'libdir'] - libdir = libdir.replace('\\', '/') + libdir = PurePath(libdir) + prefix, = [o['value'] for o in build_options if o['name'] == 'prefix'] + bindir, = [o['value'] for o in build_options if o['name'] == 'bindir'] + prefix = PurePath(prefix) + bindir = prefix / bindir global GSTPLUGIN_FILEPATH_REG_TEMPLATE - GSTPLUGIN_FILEPATH_REG_TEMPLATE = GSTPLUGIN_FILEPATH_REG_TEMPLATE.format(libdir=libdir) + GSTPLUGIN_FILEPATH_REG_TEMPLATE = GSTPLUGIN_FILEPATH_REG_TEMPLATE.format(libdir=libdir.as_posix()) for target in targets: filenames = listify(target['filename']) @@ -227,7 +250,7 @@ def get_subprocess_env(options, gst_version): prepend_env_var(env, lib_path_envvar, os.path.join(options.builddir, root), options.sysroot) - elif target['type'] == 'executable' and target['installed']: + elif is_binary_target_and_in_path(target, filename, bindir): paths.add(os.path.join(options.builddir, root)) with open(os.path.join(options.builddir, 'GstPluginsPath.json')) as f: |