mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-25 19:21:06 +00:00
uninstalled: Fix --sysroot implementation
This option was added so we could remove the sysroot path from the env when cross-build is used over NFS. Though, the implementation wasn't complete and went unnoticed. This moves the sysroot path removal into the helper that prepends env so that no more env get forgotten. This notably fixes the PATH environment.
This commit is contained in:
parent
bb9c37dcf0
commit
9c4cb201d0
1 changed files with 49 additions and 30 deletions
|
@ -44,7 +44,9 @@ def stringify(o):
|
|||
raise AssertionError('Did not expect object {!r} to have more than one element'.format(o))
|
||||
raise AssertionError('Object {!r} must be a string or a list'.format(o))
|
||||
|
||||
def prepend_env_var(env, var, value):
|
||||
def prepend_env_var(env, var, value, sysroot):
|
||||
if value.startswith(sysroot):
|
||||
value = value[len(sysroot):]
|
||||
# Try not to exceed maximum length limits for env vars on Windows
|
||||
if os.name is 'nt':
|
||||
value = win32_get_short_path_name(value)
|
||||
|
@ -68,8 +70,10 @@ def get_subprocess_env(options, gst_version):
|
|||
env["GST_VALIDATE_APPS_DIR"] = os.path.normpath(
|
||||
"%s/subprojects/gst-editing-services/tests/validate" % SCRIPTDIR)
|
||||
prepend_env_var(env, "PATH", os.path.normpath(
|
||||
"%s/subprojects/gst-devtools/validate/tools" % options.builddir))
|
||||
prepend_env_var(env, "PATH", os.path.join(SCRIPTDIR, 'meson'))
|
||||
"%s/subprojects/gst-devtools/validate/tools" % options.builddir),
|
||||
options.sysroot)
|
||||
prepend_env_var(env, "PATH", os.path.join(SCRIPTDIR, 'meson'),
|
||||
options.sysroot)
|
||||
env["GST_VERSION"] = gst_version
|
||||
env["GST_ENV"] = 'gst-' + gst_version
|
||||
env["GST_PLUGIN_SYSTEM_PATH"] = ""
|
||||
|
@ -90,27 +94,38 @@ def get_subprocess_env(options, gst_version):
|
|||
lib_path_envvar = 'LD_LIBRARY_PATH'
|
||||
|
||||
prepend_env_var(env, "GST_PLUGIN_PATH", os.path.join(SCRIPTDIR, 'subprojects',
|
||||
'gst-python', 'plugin'))
|
||||
'gst-python', 'plugin'),
|
||||
options.sysroot)
|
||||
prepend_env_var(env, "GST_PLUGIN_PATH", os.path.join(PREFIX_DIR, 'lib',
|
||||
'gstreamer-1.0'))
|
||||
'gstreamer-1.0'),
|
||||
options.sysroot)
|
||||
prepend_env_var(env, "GST_PLUGIN_PATH", os.path.join(options.builddir, 'subprojects',
|
||||
'libnice', 'gst'))
|
||||
prepend_env_var(env, "GST_VALIDATE_SCENARIOS_PATH", os.path.join(
|
||||
PREFIX_DIR, 'share', 'gstreamer-1.0', 'validate', 'scenarios'))
|
||||
'libnice', 'gst'),
|
||||
options.sysroot)
|
||||
prepend_env_var(env, "GST_VALIDATE_SCENARIOS_PATH",
|
||||
os.path.join(PREFIX_DIR, 'share', 'gstreamer-1.0',
|
||||
'validate', 'scenarios'),
|
||||
options.sysroot)
|
||||
prepend_env_var(env, "GI_TYPELIB_PATH", os.path.join(PREFIX_DIR, 'lib',
|
||||
'lib', 'girepository-1.0'))
|
||||
prepend_env_var(env, "PKG_CONFIG_PATH", os.path.join(PREFIX_DIR, 'lib', 'pkgconfig'))
|
||||
'lib', 'girepository-1.0'),
|
||||
options.sysroot)
|
||||
prepend_env_var(env, "PKG_CONFIG_PATH", os.path.join(PREFIX_DIR, 'lib', 'pkgconfig'),
|
||||
options.sysroot)
|
||||
|
||||
# gst-indent
|
||||
prepend_env_var(env, "PATH", os.path.join(SCRIPTDIR, 'gstreamer', 'tools'))
|
||||
prepend_env_var(env, "PATH", os.path.join(SCRIPTDIR, 'gstreamer', 'tools'),
|
||||
options.sysroot)
|
||||
|
||||
# Library and binary search paths
|
||||
prepend_env_var(env, "PATH", os.path.join(PREFIX_DIR, 'bin'))
|
||||
prepend_env_var(env, "PATH", os.path.join(PREFIX_DIR, 'bin'),
|
||||
options.sysroot)
|
||||
if lib_path_envvar != 'PATH':
|
||||
prepend_env_var(env, lib_path_envvar, os.path.join(PREFIX_DIR, 'lib'))
|
||||
prepend_env_var(env, lib_path_envvar, os.path.join(PREFIX_DIR, 'lib'),
|
||||
options.sysroot)
|
||||
elif 'QMAKE' in os.environ:
|
||||
# There's no RPATH on Windows, so we need to set PATH for the qt5 DLLs
|
||||
prepend_env_var(env, 'PATH', os.path.dirname(os.environ['QMAKE']))
|
||||
prepend_env_var(env, 'PATH', os.path.dirname(os.environ['QMAKE']),
|
||||
options.sysroot)
|
||||
|
||||
meson = get_meson()
|
||||
targets_s = subprocess.check_output(meson + ['introspect', options.builddir, '--targets'])
|
||||
|
@ -121,8 +136,6 @@ def get_subprocess_env(options, gst_version):
|
|||
for target in targets:
|
||||
filenames = listify(target['filename'])
|
||||
for filename in filenames:
|
||||
if filename.startswith(options.sysroot):
|
||||
filename = filename[len(options.sysroot):]
|
||||
root = os.path.dirname(filename)
|
||||
if srcdir_path / "subprojects/gst-devtools/validate/plugins" in (srcdir_path / root).parents:
|
||||
continue
|
||||
|
@ -130,26 +143,29 @@ def get_subprocess_env(options, gst_version):
|
|||
mono_paths.add(os.path.join(options.builddir, root))
|
||||
if typelib_reg.search(filename):
|
||||
prepend_env_var(env, "GI_TYPELIB_PATH",
|
||||
os.path.join(options.builddir, root))
|
||||
os.path.join(options.builddir, root),
|
||||
options.sysroot)
|
||||
elif sharedlib_reg.search(filename):
|
||||
if not target['type'].startswith('shared'):
|
||||
continue
|
||||
|
||||
prepend_env_var(env, lib_path_envvar,
|
||||
os.path.join(options.builddir, root))
|
||||
os.path.join(options.builddir, root),
|
||||
options.sysroot)
|
||||
elif target['type'] == 'executable' and target['installed']:
|
||||
paths.add(os.path.join(options.builddir, root))
|
||||
|
||||
with open(os.path.join(options.builddir, 'GstPluginsPath.json')) as f:
|
||||
for plugin_path in json.load(f):
|
||||
prepend_env_var(env, 'GST_PLUGIN_PATH', plugin_path)
|
||||
prepend_env_var(env, 'GST_PLUGIN_PATH', plugin_path,
|
||||
options.sysroot)
|
||||
|
||||
for p in paths:
|
||||
prepend_env_var(env, 'PATH', p)
|
||||
prepend_env_var(env, 'PATH', p, options.sysroot)
|
||||
|
||||
if os.name != 'nt':
|
||||
for p in mono_paths:
|
||||
prepend_env_var(env, "MONO_PATH", p)
|
||||
prepend_env_var(env, "MONO_PATH", p, options.sysroot)
|
||||
|
||||
presets = set()
|
||||
encoding_targets = set()
|
||||
|
@ -189,38 +205,41 @@ def get_subprocess_env(options, gst_version):
|
|||
pkg_dirs.add(os.path.dirname(path))
|
||||
|
||||
if path.endswith('gstomx.conf'):
|
||||
prepend_env_var(env, 'GST_OMX_CONFIG_DIR', os.path.dirname(path))
|
||||
prepend_env_var(env, 'GST_OMX_CONFIG_DIR', os.path.dirname(path),
|
||||
options.sysroot)
|
||||
|
||||
for p in presets:
|
||||
prepend_env_var(env, 'GST_PRESET_PATH', p)
|
||||
prepend_env_var(env, 'GST_PRESET_PATH', p, options.sysroot)
|
||||
|
||||
for t in encoding_targets:
|
||||
prepend_env_var(env, 'GST_ENCODING_TARGET_PATH', t)
|
||||
prepend_env_var(env, 'GST_ENCODING_TARGET_PATH', t, options.sysroot)
|
||||
|
||||
for pkg_dir in pkg_dirs:
|
||||
prepend_env_var(env, "PKG_CONFIG_PATH", pkg_dir)
|
||||
prepend_env_var(env, "PKG_CONFIG_PATH", pkg_dir, options.sysroot)
|
||||
prepend_env_var(env, "PKG_CONFIG_PATH", os.path.join(options.builddir,
|
||||
'subprojects',
|
||||
'gst-plugins-good',
|
||||
'pkgconfig'))
|
||||
'pkgconfig'),
|
||||
options.sysroot)
|
||||
|
||||
for python_dir in python_dirs:
|
||||
prepend_env_var(env, 'PYTHONPATH', python_dir)
|
||||
prepend_env_var(env, 'PYTHONPATH', python_dir, options.sysroot)
|
||||
|
||||
mesonpath = os.path.join(SCRIPTDIR, "meson")
|
||||
if os.path.join(mesonpath):
|
||||
# Add meson/ into PYTHONPATH if we are using a local meson
|
||||
prepend_env_var(env, 'PYTHONPATH', mesonpath)
|
||||
prepend_env_var(env, 'PYTHONPATH', mesonpath, options.sysroot)
|
||||
|
||||
# For devhelp books
|
||||
if not 'XDG_DATA_DIRS' in env or not env['XDG_DATA_DIRS']:
|
||||
# Preserve default paths when empty
|
||||
prepend_env_var(env, 'XDG_DATA_DIRS', '/usr/local/share/:/usr/share/')
|
||||
prepend_env_var(env, 'XDG_DATA_DIRS', '/usr/local/share/:/usr/share/', '')
|
||||
|
||||
prepend_env_var (env, 'XDG_DATA_DIRS', os.path.join(options.builddir,
|
||||
'subprojects',
|
||||
'gst-docs',
|
||||
'GStreamer-doc'))
|
||||
'GStreamer-doc'),
|
||||
options.sysroot)
|
||||
|
||||
return env
|
||||
|
||||
|
|
Loading…
Reference in a new issue