python: Avoid using 'is' to compare strings
[platform/upstream/gstreamer.git] / gst-env.py
index 16c7a14..ad00cd8 100755 (executable)
@@ -30,8 +30,11 @@ if not os.path.exists(DEFAULT_BUILDDIR):
 
 TYPELIB_REG = re.compile(r'.*\.typelib$')
 SHAREDLIB_REG = re.compile(r'\.so|\.dylib|\.dll')
-GSTPLUGIN_FILEPATH_REG = re.compile(r'.*/lib[^/]*/gstreamer-1.0/[^/]+$')
 
+# libdir is expanded from option of the same name listed in the `meson
+# introspect --buildoptions` output.
+GSTPLUGIN_FILEPATH_REG_TEMPLATE = r'.*/{libdir}/gstreamer-1.0/[^/]+$'
+GSTPLUGIN_FILEPATH_REG = None
 
 def listify(o):
     if isinstance(o, str):
@@ -53,7 +56,7 @@ 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':
+    if os.name == 'nt':
         value = win32_get_short_path_name(value)
     env_val = env.get(var, '')
     val = os.pathsep + value + os.pathsep
@@ -77,13 +80,17 @@ def is_library_target_and_not_plugin(target, filename):
     if not SHAREDLIB_REG.search(filename):
         return False
     # Check if it's installed to the gstreamer plugin location
-    for install_filename in target['install_filename']:
+    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
+
+    global GSTPLUGIN_FILEPATH_REG
+    if GSTPLUGIN_FILEPATH_REG is None:
+        GSTPLUGIN_FILEPATH_REG = re.compile(GSTPLUGIN_FILEPATH_REG_TEMPLATE)
     if GSTPLUGIN_FILEPATH_REG.search(install_filename.replace('\\', '/')):
         return False
     return True
@@ -137,7 +144,7 @@ def get_subprocess_env(options, gst_version):
     env["GST_PTP_HELPER"] = os.path.normpath(
         "%s/subprojects/gstreamer/libs/gst/helpers/gst-ptp-helper" % options.builddir)
 
-    if os.name is 'nt':
+    if os.name == 'nt':
         lib_path_envvar = 'PATH'
     elif platform.system() == 'Darwin':
         lib_path_envvar = 'DYLD_LIBRARY_PATH'
@@ -194,6 +201,15 @@ def get_subprocess_env(options, gst_version):
     paths = set()
     mono_paths = set()
     srcdir_path = pathlib.Path(options.srcdir)
+
+    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('\\', '/')
+
+    global GSTPLUGIN_FILEPATH_REG_TEMPLATE
+    GSTPLUGIN_FILEPATH_REG_TEMPLATE = GSTPLUGIN_FILEPATH_REG_TEMPLATE.format(libdir=libdir)
+
     for target in targets:
         filenames = listify(target['filename'])
         for filename in filenames:
@@ -345,7 +361,7 @@ if __name__ == "__main__":
         gst_version += '-' + os.path.basename(options.wine)
 
     if not args:
-        if os.name is 'nt':
+        if os.name == 'nt':
             shell = get_windows_shell()
             if shell == 'powershell.exe':
                 args = ['powershell.exe']