From fc3c226e50ec9ef02e0157188ce77cf90ec7c2cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Rolim?= Date: Thu, 28 Jan 2021 01:17:40 -0300 Subject: [PATCH] meson: update to 0.56.2. Fix checkdepends and tests in general on musl. --- srcpkgs/meson/patches/fix-unittest.py | 77 +++++++++++++++++++++++++++ srcpkgs/meson/template | 25 ++++++--- 2 files changed, 96 insertions(+), 6 deletions(-) create mode 100644 srcpkgs/meson/patches/fix-unittest.py diff --git a/srcpkgs/meson/patches/fix-unittest.py b/srcpkgs/meson/patches/fix-unittest.py new file mode 100644 index 00000000000..d222b970ddd --- /dev/null +++ b/srcpkgs/meson/patches/fix-unittest.py @@ -0,0 +1,77 @@ +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 +--- test cases/common/37 has function/meson.build ++++ test cases/common/37 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/template b/srcpkgs/meson/template index 9a1afce0cfc..84114e0041a 100644 --- a/srcpkgs/meson/template +++ b/srcpkgs/meson/template @@ -1,20 +1,33 @@ # Template file for 'meson' pkgname=meson -version=0.55.3 -revision=3 +version=0.56.2 +revision=1 build_style=python3-module hostmakedepends="python3-devel python3-setuptools" depends="ninja python3-setuptools" -checkdepends="glib-devel gobject-introspection libsanitizer-devel ninja +checkdepends="glib-devel gobject-introspection ninja gcc-objc++ clang qt5-devel cmake llvm git pkg-config vala python-devel cross-arm-linux-gnueabihf" short_desc="Super fast build system" maintainer="John " license="Apache-2.0" homepage="https://mesonbuild.com" -changelog="https://github.com/mesonbuild/$pkgname/blob/master/docs/markdown/Release-notes-for-${version%.*}.0.md" -distfiles="https://github.com/mesonbuild/$pkgname/releases/download/$version/$pkgname-$version.tar.gz" -checksum=6bed2a25a128bbabe97cf40f63165ebe800e4fcb46db8ab7ef5c2b5789f092a5 +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 + +# XXX: sanitizers aren't available on musl +if [ "$XBPS_TARGET_LIBC" = glibc ]; then + checkdepends+=" libsanitizer-devel" +fi + +post_patch() { + if [ "$XBPS_TARGET_LIBC" = musl ]; then + vsed -e 's/test_pch_with_address_sanitizer/_&/' \ + -e 's/test_generate_gir_with_address_sanitizer/_&/' \ + -i run_unittests.py + fi +} do_check() { # meson depends on trillion of things to perform actual tests