From e3e09a147bee10ab45c7c05d4b43c63a7262d92c Mon Sep 17 00:00:00 2001 From: Michal Vasilek Date: Sat, 17 Jul 2021 10:48:46 +0200 Subject: [PATCH] meson: update to 0.58.1 * add a patch to fix cross compiling gnome projects --- .../dont-use-native-pkgconfig-for-gir.patch | 11 --- srcpkgs/meson/patches/fix-unittest.patch | 77 ------------------- ...ss-absolute--L-paths-to-g-ir-scanner.patch | 43 +++++++++++ srcpkgs/meson/template | 7 +- 4 files changed, 46 insertions(+), 92 deletions(-) delete mode 100644 srcpkgs/meson/patches/dont-use-native-pkgconfig-for-gir.patch delete mode 100644 srcpkgs/meson/patches/fix-unittest.patch create mode 100644 srcpkgs/meson/patches/gnome-always-pass-absolute--L-paths-to-g-ir-scanner.patch diff --git a/srcpkgs/meson/patches/dont-use-native-pkgconfig-for-gir.patch b/srcpkgs/meson/patches/dont-use-native-pkgconfig-for-gir.patch deleted file mode 100644 index 3eefcff8e115..000000000000 --- a/srcpkgs/meson/patches/dont-use-native-pkgconfig-for-gir.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/mesonbuild/modules/gnome.py 2020-06-29 19:00:15.000000000 +0200 -+++ b/mesonbuild/modules/gnome.py 2020-06-29 19:00:15.000000000 +0200 -@@ -403,7 +403,7 @@ - - def _get_gir_dep(self, state): - if not self.gir_dep: -- kwargs = {'native': True, 'required': True} -+ kwargs = {'native': False, 'required': True} - holder = self.interpreter.func_dependency(state.current_node, ['gobject-introspection-1.0'], kwargs) - self.gir_dep = holder.held_object - giscanner = state.environment.lookup_binary_entry(MachineChoice.HOST, 'g-ir-scanner') diff --git a/srcpkgs/meson/patches/fix-unittest.patch b/srcpkgs/meson/patches/fix-unittest.patch deleted file mode 100644 index 8f73249b9f86..000000000000 --- a/srcpkgs/meson/patches/fix-unittest.patch +++ /dev/null @@ -1,77 +0,0 @@ -commit 777cbe9c0faa018bafccf3e7adb8dad162276e35 -Author: Érico Rolim -Date: Mon Feb 1 00:26:49 2021 -0300 - - tests/common: fix " 37 has function" test on musl systems. - - This commit fixes the test that asserts on whether the lchmod() function - should have been detected as available by Meson. It does so by assuming - that on Linux systems not using glibc, the function will be available. - - - fix comment about lchmod on Linux: musl has implemented the function - correctly since 2013, so the assumption in the test wasn't correct. - Furthermore, musl doesn't use glibc's stub mechanism. - - fix include to receive __GLIBC__ definition: including almost any - header in glibc will end up defining __GLIBC__, since most headers - include . The header was probably - chosen because of its name, but its actual purpose is defining functions - for checking glibc version at runtime (instead of what the binary was - built with), so it isn't necessary to use it. Since it is a completely - non standard header, including it makes the test suite fail on musl due - to not finding the header. - -diff --git test cases/common/37 has function/meson.build test cases/common/37 has function/meson.build -index 26f13d6fa..a59480c2d 100644 ---- a/test cases/common/39 has function/meson.build -+++ b/test cases/common/39 has function/meson.build -@@ -44,11 +44,13 @@ foreach cc : compilers - error('Found non-existent function "hfkerhisadf".') - endif - -- # With glibc on Linux lchmod is a stub that will always return an error, -- # we want to detect that and declare that the function is not available. -- # We can't check for the C library used here of course, but if it's not -- # implemented in glibc it's probably not implemented in any other 'slimmer' -- # C library variants either, so the check should be safe either way hopefully. -+ # With glibc (before 2.32, see below) on Linux, lchmod is a stub that will -+ # always return an error, we want to detect that and declare that the -+ # function is not available. -+ # We can't check for the C library used here of course, but the main -+ # alternative Linux C library (musl) doesn't use glibc's stub mechanism; -+ # also, it has implemented lchmod since 2013, so it should be safe to check -+ # that lchmod is available on Linux when not using glibc. - if host_system == 'linux' or host_system == 'darwin' - assert (cc.has_function('poll', prefix : '#include ', - args : unit_test_args), -@@ -57,15 +59,24 @@ foreach cc : compilers - has_lchmod = cc.has_function('lchmod', prefix : lchmod_prefix, args : unit_test_args) - - if host_system == 'linux' -- glibc_major = cc.get_define('__GLIBC__', prefix: '#include ', args: unit_test_args) -- glibc_minor = cc.get_define('__GLIBC_MINOR__', prefix: '#include ', args: unit_test_args) -- glibc_vers = '@0@.@1@'.format(glibc_major, glibc_minor) -- message('GLIBC vetsion:', glibc_vers) -+ # __GLIBC__ macro can be retrieved by including almost any C library header -+ glibc_major = cc.get_define('__GLIBC__', prefix: '#include ', args: unit_test_args) -+ # __GLIBC__ will only be set for glibc -+ if glibc_major != '' -+ glibc_print = 'hi "@0@" hi'.format(glibc_major) -+ message(glibc_print) -+ glibc_minor = cc.get_define('__GLIBC_MINOR__', prefix: '#include ', args: unit_test_args) -+ glibc_vers = '@0@.@1@'.format(glibc_major, glibc_minor) -+ message('GLIBC version:', glibc_vers) - -- # lchmod was implemented in glibc 2.32 (https://sourceware.org/pipermail/libc-announce/2020/000029.html) -- if glibc_vers.version_compare('<2.32') -- assert (not has_lchmod, '"lchmod" check should have failed') -+ # lchmod was implemented in glibc 2.32 (https://sourceware.org/pipermail/libc-announce/2020/000029.html) -+ if glibc_vers.version_compare('<2.32') -+ assert (not has_lchmod, '"lchmod" check should have failed') -+ else -+ assert (has_lchmod, '"lchmod" check should have succeeded') -+ endif - else -+ # Other C libraries for Linux should have lchmod - assert (has_lchmod, '"lchmod" check should have succeeded') - endif - else diff --git a/srcpkgs/meson/patches/gnome-always-pass-absolute--L-paths-to-g-ir-scanner.patch b/srcpkgs/meson/patches/gnome-always-pass-absolute--L-paths-to-g-ir-scanner.patch new file mode 100644 index 000000000000..b58e7c44f8d9 --- /dev/null +++ b/srcpkgs/meson/patches/gnome-always-pass-absolute--L-paths-to-g-ir-scanner.patch @@ -0,0 +1,43 @@ +upstream: yes +From 4b00d15adffd9eff26994518365aca3b1a8ae6a7 Mon Sep 17 00:00:00 2001 +From: Nirbheek Chauhan +Date: Wed, 14 Jul 2021 17:37:39 +0530 +Subject: [PATCH] gnome: Always pass absolute -L paths to g-ir-scanner + +g-ir-scanner does not convert relative -L paths to runtime paths which +are added to -Wl,-rpath and LD_LIBRARY_PATH / DYLD_LIBRARY_PATH +/ PATH. This means that the local library will either not be found at +runtime (while building introspection data), or the system-wide +library will be picked instead. + +See: giscanner/ccompiler.py:get_internal_link_flags() in +gobject-introspection for more details. +--- + mesonbuild/modules/gnome.py | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py +index 1b68f6ccddd..3cc8ebdc8c3 100644 +--- a/mesonbuild/modules/gnome.py ++++ b/mesonbuild/modules/gnome.py +@@ -640,14 +640,18 @@ def _scan_gir_targets(self, state, girtargets): + # Because of https://gitlab.gnome.org/GNOME/gobject-introspection/merge_requests/72 + # we can't use the full path until this is merged. + libpath = os.path.join(girtarget.get_subdir(), girtarget.get_filename()) ++ # Must use absolute paths here because g-ir-scanner will not ++ # add them to the runtime path list if they're relative. This ++ # means we cannot use @BUILD_ROOT@ ++ build_root = state.environment.get_build_dir() + if isinstance(girtarget, build.SharedLibrary): + # need to put our output directory first as we need to use the + # generated libraries instead of any possibly installed system/prefix + # ones. +- ret += ["-L@BUILD_ROOT@/{}".format(os.path.dirname(libpath))] ++ ret += ["-L{}/{}".format(build_root, os.path.dirname(libpath))] + libname = girtarget.get_basename() + else: +- libname = os.path.join(f"@BUILD_ROOT@/{libpath}") ++ libname = os.path.join(f"{build_root}/{libpath}") + ret += ['--library', libname] + # Needed for the following binutils bug: + # https://github.com/mesonbuild/meson/issues/1911 diff --git a/srcpkgs/meson/template b/srcpkgs/meson/template index bb484ec3e45e..94b33b6b5a1b 100644 --- a/srcpkgs/meson/template +++ b/srcpkgs/meson/template @@ -1,8 +1,7 @@ # Template file for 'meson' pkgname=meson -reverts="0.58.1_1" -version=0.56.2 -revision=3 +version=0.58.1 +revision=2 build_style=python3-module hostmakedepends="python3-devel python3-setuptools" depends="ninja python3-setuptools" @@ -15,7 +14,7 @@ license="Apache-2.0" homepage="https://mesonbuild.com" changelog="https://github.com/mesonbuild/meson/blob/master/docs/markdown/Release-notes-for-${version%.*}.0.md" distfiles="https://github.com/mesonbuild/meson/releases/download/$version/$pkgname-$version.tar.gz" -checksum=3cb8bdb91383f7f8da642f916e4c44066a29262caa499341e2880f010edb87f4 +checksum=3144a3da662fcf79f1e5602fa929f2821cba4eba28c2c923fe0a7d3e3db04d5d # XXX: sanitizers aren't available on musl if [ "$XBPS_TARGET_LIBC" = glibc ]; then