meson: Use implicit builtin dirs in pkgconfig generation
authorNirbheek Chauhan <nirbheek@centricular.com>
Wed, 21 Sep 2022 13:49:45 +0000 (19:19 +0530)
committerNirbheek Chauhan <nirbheek@centricular.com>
Wed, 21 Sep 2022 15:38:11 +0000 (21:08 +0530)
Starting with Meson 0.62, meson automatically populates the variables
list in the pkgconfig file if you reference builtin directories in the
pkgconfig file (whether via a custom pkgconfig variable or elsewhere).
We need this, because ${prefix}/libexec is a hard-coded value which is
incorrect on, for example, Debian.

Bump requirement to 0.62, and remove version compares that retained
support for older Meson versions.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1245

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3061>

16 files changed:
meson.build
subprojects/gst-devtools/meson.build
subprojects/gst-docs/meson.build
subprojects/gst-editing-services/meson.build
subprojects/gst-integration-testsuites/meson.build
subprojects/gst-libav/meson.build
subprojects/gst-omx/meson.build
subprojects/gst-plugins-bad/meson.build
subprojects/gst-plugins-base/meson.build
subprojects/gst-plugins-good/meson.build
subprojects/gst-plugins-ugly/meson.build
subprojects/gst-python/meson.build
subprojects/gst-rtsp-server/meson.build
subprojects/gstreamer-sharp/meson.build
subprojects/gstreamer-vaapi/meson.build
subprojects/gstreamer/meson.build

index 0df45b3..47567e6 100644 (file)
@@ -1,6 +1,6 @@
 project('gstreamer-full', 'c',
   version : '1.21.0.1',
-  meson_version : '>= 0.60.0',
+  meson_version : '>= 0.62.0',
   default_options : ['buildtype=debugoptimized',
                      # Needed due to https://github.com/mesonbuild/meson/issues/1889,
                      # but this can cause problems in the future. Remove it
@@ -33,21 +33,6 @@ endif
 # Install gst-indent pre-commit hook
 run_command(python3, '-c', 'import shutil; shutil.copy("scripts/git-hooks/multi-pre-commit.hook", ".git/hooks/pre-commit")', check: false)
 
-# Ensure that the user does not have Strawberry Perl in PATH, since it ships
-# with a pkg-config.bat and broken pkgconfig files for libffi and zlib. Will
-# cause a build error, such as in
-# https://gitlab.freedesktop.org/gstreamer/gst-build/-/issues/41
-ensure_no_strawberry_perl = '''
-import os
-assert(r'Strawberry\perl\bin' not in os.environ['PATH'])
-'''
-if build_system == 'windows' and meson.version().version_compare('<0.60.0')
-  cmdres = run_command(python3, '-c', ensure_no_strawberry_perl, check: false)
-  if cmdres.returncode() != 0
-    error('You have Strawberry Perl in PATH which is known to cause build issues with Meson < 0.60.0. Please remove it from PATH, uninstall it, or upgrade Meson.')
-  endif
-endif
-
 # On macOS, you have to run "Install Certificates.command" otherwise Python
 # doesn't have access to the latest SSL CA Certificates, and Meson will fail to
 # download wrap files from websites that use, for example, Let's Encrypt.
index fc7205e..d0523ea 100644 (file)
@@ -1,6 +1,6 @@
 project('gst-devtools', 'c',
   version : '1.21.0.1',
-  meson_version : '>= 0.60',
+  meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'c_std=gnu99',
                       'buildtype=debugoptimized' ])
index 790f217..62ea0af 100644 (file)
@@ -1,6 +1,6 @@
 project('GStreamer manuals and tutorials', 'c',
   version: '1.21.0.1',
-  meson_version : '>= 0.60')
+  meson_version : '>= 0.62')
 
 hotdoc_p = find_program('hotdoc')
 if not hotdoc_p.found()
index b035dac..79caed7 100644 (file)
@@ -1,6 +1,6 @@
 project('gst-editing-services', 'c',
   version : '1.21.0.1',
-  meson_version : '>= 0.60',
+  meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
 
index b735fc7..f37b549 100644 (file)
@@ -1 +1 @@
-project('gst-integration-testsuites', [], version: '1.21.0.1', meson_version : '>= 0.60', license: 'LGPL')
+project('gst-integration-testsuites', [], version: '1.21.0.1', meson_version : '>= 0.62', license: 'LGPL')
index 1cdd33c..661de7d 100644 (file)
@@ -1,6 +1,6 @@
 project('gst-libav', 'c',
   version : '1.21.0.1',
-  meson_version : '>= 0.60',
+  meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
 
index d1b149d..05c4b68 100644 (file)
@@ -1,6 +1,6 @@
 project('gst-omx', 'c',
   version : '1.21.0.1',
-  meson_version : '>= 0.60',
+  meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
 
index 90098a1..fa4423e 100644 (file)
@@ -1,6 +1,6 @@
 project('gst-plugins-bad', 'c', 'cpp',
   version : '1.21.0.1',
-  meson_version : '>= 0.60',
+  meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
 
index 451ee15..42e2b29 100644 (file)
@@ -1,6 +1,6 @@
 project('gst-plugins-base', 'c',
   version : '1.21.0.1',
-  meson_version : '>= 0.60',
+  meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
 
@@ -460,14 +460,14 @@ if get_option('default_library') == 'shared'
   plugins_pkgconfig_install_dir = disabler()
 endif
 
-pkgconfig_variables = ['exec_prefix=${prefix}',
-    'toolsdir=${exec_prefix}/bin',
-    'pluginsdir=${libdir}/gstreamer-1.0',
-    'datarootdir=${prefix}/share',
-    'datadir=${datarootdir}',
-    'girdir=${datadir}/gir-1.0',
-    'typelibdir=${libdir}/girepository-1.0',
-    'libexecdir=${prefix}/libexec']
+pkgconfig_variables = [
+  'exec_prefix=${prefix}',
+  'toolsdir=${exec_prefix}/bin',
+  'pluginsdir=${libdir}/gstreamer-1.0',
+  'girdir=${datadir}/gir-1.0',
+  'typelibdir=${libdir}/girepository-1.0',
+  'pluginscannerdir=${libexecdir}/gstreamer-1.0'
+]
 pkgconfig_subdirs = ['gstreamer-1.0']
 
 meson_pkg_config_file_fixup_script = find_program('scripts/meson-pkg-config-file-fixup.py')
index 97a3863..e3a1b04 100644 (file)
@@ -1,6 +1,6 @@
 project('gst-plugins-good', 'c',
   version : '1.21.0.1',
-  meson_version : '>= 0.60',
+  meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
 
index c9fe6ba..4bb67f4 100644 (file)
@@ -1,6 +1,6 @@
 project('gst-plugins-ugly', 'c',
   version : '1.21.0.1',
-  meson_version : '>= 0.60',
+  meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
 
index c28df16..3def112 100644 (file)
@@ -1,6 +1,6 @@
 project('gst-python', 'c',
   version : '1.21.0.1',
-  meson_version : '>= 0.60',
+  meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'c_std=gnu99',
                       'buildtype=debugoptimized' ])
index df41235..eb86469 100644 (file)
@@ -1,6 +1,6 @@
 project('gst-rtsp-server', 'c',
   version : '1.21.0.1',
-  meson_version : '>= 0.60',
+  meson_version : '>= 0.62',
   default_options : ['warning_level=1', 'buildtype=debugoptimized'])
 
 gst_version = meson.project_version()
index 3c90d34..ba1ed0f 100644 (file)
@@ -1,5 +1,5 @@
 project('gstreamer-sharp', ['cs', 'c'], version: '1.21.0.1',
-    meson_version : '>= 0.60', license: 'LGPL')
+    meson_version : '>= 0.62', license: 'LGPL')
 
 if host_machine.system() == 'osx'
   lib_prefix=''
index fa75c1f..167f288 100644 (file)
@@ -1,6 +1,6 @@
 project('gstreamer-vaapi', 'c',
   version : '1.21.0.1',
-  meson_version : '>= 0.60',
+  meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
 
index 85e36ef..c719e79 100644 (file)
@@ -1,6 +1,6 @@
 project('gstreamer', 'c',
   version : '1.21.0.1',
-  meson_version : '>= 0.60',
+  meson_version : '>= 0.62',
   default_options : [ 'warning_level=1',
                       'buildtype=debugoptimized' ])
 
@@ -609,15 +609,14 @@ if get_option('default_library') == 'shared'
   # If we don't build static plugins there is no need to generate pc files
   plugins_pkgconfig_install_dir = disabler()
 endif
-pkgconfig_variables = ['exec_prefix=${prefix}',
-    'toolsdir=${exec_prefix}/bin',
-    'pluginsdir=${libdir}/gstreamer-1.0',
-    'datarootdir=${prefix}/share',
-    'datadir=${datarootdir}',
-    'girdir=${datadir}/gir-1.0',
-    'typelibdir=${libdir}/girepository-1.0',
-    'libexecdir=${prefix}/libexec',
-    'pluginscannerdir=${libexecdir}/gstreamer-1.0']
+pkgconfig_variables = [
+  'exec_prefix=${prefix}',
+  'toolsdir=${exec_prefix}/bin',
+  'pluginsdir=${libdir}/gstreamer-1.0',
+  'girdir=${datadir}/gir-1.0',
+  'typelibdir=${libdir}/girepository-1.0',
+  'pluginscannerdir=${libexecdir}/gstreamer-1.0'
+]
 pkgconfig_uninstalled_variables = ['exec_prefix=${prefix}',
        'gstreamerdir=${prefix}/subprojects/gstreamer',
     'bashhelpersdir=${gstreamerdir}/data/bash-completion/helpers',