gst-env: use Path.open() in get_pkgconfig_variable_from_pcfile()
authorAntonio Ospite <antonio.ospite@collabora.com>
Thu, 24 Sep 2020 11:50:09 +0000 (13:50 +0200)
committerAntonio Ospite <antonio.ospite@collabora.com>
Thu, 24 Sep 2020 11:50:09 +0000 (13:50 +0200)
The pcfile argument passed to get_target_install_filename() is
guaranteed to be a Path() object so use the .open() method to open the
file instead of the standard open() function.

This makes it possible to run gst-env.py on older systems with pyhton3.5
where the standard open() function cannot handle Path arguments.

The change fixes errors like the following:

-----------------------------------------------------------------------
$ ninja -C build/ devenv
ninja: Entering directory `build/'
[0/1] Running external command devenv
Traceback (most recent call last):
  File "/home/ao2/gst-build/gst-env.py", line 493, in <module>
    env = get_subprocess_env(options, gst_version)
  File "/home/ao2/gst-build/gst-env.py", line 342, in get_subprocess_env
    elif is_gio_module(target, filename, options.builddir):
  File "/home/ao2/gst-build/gst-env.py", line 121, in is_gio_module
    giomoduledir = PurePath(get_pkgconfig_variable(builddir, 'gio-2.0', 'giomoduledir'))
  File "/home/ao2/gst-build/gst-env.py", line 110, in get_pkgconfig_variable
    return get_pkgconfig_variable_from_pcfile(pcfile, varname)
  File "/home/ao2/gst-build/gst-env.py", line 89, in get_pkgconfig_variable_from_pcfile
    with open(pcfile, 'r', encoding='utf-8') as f:
TypeError: invalid file: PosixPath('/home/ao2/gst-build/build/meson-private/gio-2.0.pc')
FAILED: meson-devenv
-----------------------------------------------------------------------

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/192>

gst-env.py

index 8811ae8..a94432b 100755 (executable)
@@ -86,7 +86,7 @@ def get_target_install_filename(target, filename):
 def get_pkgconfig_variable_from_pcfile(pcfile, varname):
     variables = {}
     substre = re.compile('\$\{[^${}]+\}')
-    with open(pcfile, 'r', encoding='utf-8') as f:
+    with pcfile.open('r', encoding='utf-8') as f:
         for line in f:
             if '=' not in line:
                 continue