DEFAULT_BUILDDIR = os.path.join(SCRIPTDIR, '_build')
+def listify(o):
+ if isinstance(o, str):
+ return [o]
+ if isinstance(o, list):
+ return o
+ raise AssertionError('Object {!r} must be a string or a list'.format(o))
+
+def stringify(o):
+ if isinstance(o, str):
+ return o
+ if isinstance(o, list):
+ if len(o) == 1:
+ return o[0]
+ 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):
env[var] = os.pathsep + value + os.pathsep + env.get(var, "")
env[var] = env[var].replace(os.pathsep + os.pathsep, os.pathsep).strip(os.pathsep)
mono_paths = set()
srcdir_path = pathlib.Path(options.srcdir)
for target in targets:
- filename = target['filename']
- root = os.path.dirname(filename)
- if srcdir_path / "subprojects/gst-devtools/validate/plugins" in (srcdir_path / root).parents:
- continue
- if filename.endswith('.dll'):
- 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))
- elif sharedlib_reg.search(filename):
- if target.get('type') != "shared library":
- continue
-
- if target.get('installed') and pluginpath_reg.search(os.path.normpath(target.get('install_filename'))):
- prepend_env_var(env, "GST_PLUGIN_PATH", os.path.join(options.builddir, root))
+ filenames = listify(target['filename'])
+ for filename in filenames:
+ root = os.path.dirname(filename)
+ if srcdir_path / "subprojects/gst-devtools/validate/plugins" in (srcdir_path / root).parents:
continue
-
- prepend_env_var(env, lib_path_envvar,
- os.path.join(options.builddir, root))
- elif target.get('type') == 'executable' and target.get('installed'):
- paths.add(os.path.join(options.builddir, root))
+ if filename.endswith('.dll'):
+ 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))
+ elif sharedlib_reg.search(filename):
+ if not target['type'].startswith('shared'):
+ continue
+ if target['installed']:
+ if pluginpath_reg.search(os.path.normpath(stringify(target['install_filename']))):
+ prepend_env_var(env, "GST_PLUGIN_PATH", os.path.join(options.builddir, root))
+ continue
+
+ prepend_env_var(env, lib_path_envvar,
+ os.path.join(options.builddir, root))
+ elif target['type'] == 'executable' and target['installed']:
+ paths.add(os.path.join(options.builddir, root))
for p in paths:
prepend_env_var(env, 'PATH', p)