[arch-commits] Commit in meson/trunk (7 files)

Jan Steffens heftig at gemini.archlinux.org
Sun Oct 31 20:32:00 UTC 2021


    Date: Sunday, October 31, 2021 @ 20:32:00
  Author: heftig
Revision: 426899

0.60.0-2: add patches, return to tarball

Added:
  meson/trunk/0001-i18n-merge_file-deprecate-positional-arguments.patch
  meson/trunk/0002-test_clang_format-Do-not-assume-meson-source-is-in-g.patch
  meson/trunk/0003-modules-gnome-ensure-that-install_dir-is-set.patch
  meson/trunk/0004-modules-gnome-fix-missing-install_dir-again-harder.patch
  meson/trunk/0005-modules-gnome-use-install_dir-instead-of-false.patch
  meson/trunk/0006-mtest-accept-very-long-lines.patch
Modified:
  meson/trunk/PKGBUILD

-----------------------------------------------------------------+
 0001-i18n-merge_file-deprecate-positional-arguments.patch       |   52 ++++++
 0002-test_clang_format-Do-not-assume-meson-source-is-in-g.patch |   29 +++
 0003-modules-gnome-ensure-that-install_dir-is-set.patch         |   83 ++++++++++
 0004-modules-gnome-fix-missing-install_dir-again-harder.patch   |   48 +++++
 0005-modules-gnome-use-install_dir-instead-of-false.patch       |   22 ++
 0006-mtest-accept-very-long-lines.patch                         |   39 ++++
 PKGBUILD                                                        |   44 +++--
 7 files changed, 302 insertions(+), 15 deletions(-)

Added: 0001-i18n-merge_file-deprecate-positional-arguments.patch
===================================================================
--- 0001-i18n-merge_file-deprecate-positional-arguments.patch	                        (rev 0)
+++ 0001-i18n-merge_file-deprecate-positional-arguments.patch	2021-10-31 20:32:00 UTC (rev 426899)
@@ -0,0 +1,52 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Xavier Claessens <xavier.claessens at collabora.com>
+Date: Mon, 25 Oct 2021 09:19:25 -0400
+Subject: [PATCH] i18n: merge_file() deprecate positional arguments
+
+They always have been ignored but it became an hard error with no
+deprecation period in 0.60.0. Since it breaks some GNOME projects,
+deprecate for now and keep it removed for 0.61.0.
+
+Fixes: #9441
+---
+ mesonbuild/modules/i18n.py | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/mesonbuild/modules/i18n.py b/mesonbuild/modules/i18n.py
+index 7c6f0f4dab62..975fbf63b0b5 100644
+--- a/mesonbuild/modules/i18n.py
++++ b/mesonbuild/modules/i18n.py
+@@ -22,7 +22,7 @@ from .. import mesonlib
+ from .. import mlog
+ from ..interpreter.type_checking import CT_BUILD_BY_DEFAULT, CT_INPUT_KW, CT_INSTALL_DIR_KW, CT_INSTALL_TAG_KW, CT_OUTPUT_KW, INSTALL_KW, NoneType, in_set_validator
+ from ..interpreterbase import FeatureNew
+-from ..interpreterbase.decorators import ContainerTypeInfo, KwargInfo, noPosargs, typed_kwargs, typed_pos_args
++from ..interpreterbase.decorators import ContainerTypeInfo, KwargInfo, typed_kwargs, typed_pos_args
+ from ..scripts.gettext import read_linguas
+ 
+ if T.TYPE_CHECKING:
+@@ -128,21 +128,23 @@ class I18nModule(ExtensionModule):
+         return [path.join(src_dir, d) for d in dirs]
+ 
+     @FeatureNew('i18n.merge_file', '0.37.0')
+-    @noPosargs
+     @typed_kwargs(
+         'i18n.merge_file',
+         CT_BUILD_BY_DEFAULT,
+         CT_INPUT_KW,
+         CT_INSTALL_DIR_KW,
+         CT_INSTALL_TAG_KW,
+         CT_OUTPUT_KW,
+         INSTALL_KW,
+         _ARGS.evolve(since='0.51.0'),
+         _DATA_DIRS,
+         KwargInfo('po_dir', str, required=True),
+         KwargInfo('type', str, default='xml', validator=in_set_validator({'xml', 'desktop'})),
+     )
+     def merge_file(self, state: 'ModuleState', args: T.List['TYPE_var'], kwargs: 'MergeFile') -> ModuleReturnValue:
++        if args:
++            mlog.deprecation('i18n.merge_file does not take any positional arguments. '
++                             'This will become a hard error in the next Meson release.')
+         if not shutil.which('xgettext'):
+             self.nogettext_warning()
+             return ModuleReturnValue(None, [])

Added: 0002-test_clang_format-Do-not-assume-meson-source-is-in-g.patch
===================================================================
--- 0002-test_clang_format-Do-not-assume-meson-source-is-in-g.patch	                        (rev 0)
+++ 0002-test_clang_format-Do-not-assume-meson-source-is-in-g.patch	2021-10-31 20:32:00 UTC (rev 426899)
@@ -0,0 +1,29 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Xavier Claessens <xavier.claessens at collabora.com>
+Date: Wed, 27 Oct 2021 10:55:21 -0400
+Subject: [PATCH] test_clang_format: Do not assume meson source is in git
+
+Fixes: #9437
+---
+ unittests/allplatformstests.py | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/unittests/allplatformstests.py b/unittests/allplatformstests.py
+index da461e449af2..57aa7c2d86fa 100644
+--- a/unittests/allplatformstests.py
++++ b/unittests/allplatformstests.py
+@@ -2536,6 +2536,14 @@ class AllPlatformTests(BasePlatformTests):
+         if self.backend is not Backend.ninja:
+             raise SkipTest(f'Clang-format is for now only supported on Ninja, not {self.backend.name}')
+         testdir = os.path.join(self.unit_test_dir, '54 clang-format')
++
++        # Ensure that test project is in git even when running meson from tarball.
++        srcdir = os.path.join(self.builddir, 'src')
++        shutil.copytree(testdir, srcdir)
++        _git_init(srcdir)
++        testdir = srcdir
++        self.new_builddir()
++
+         testfile = os.path.join(testdir, 'prog.c')
+         badfile = os.path.join(testdir, 'prog_orig_c')
+         goodfile = os.path.join(testdir, 'prog_expected_c')

Added: 0003-modules-gnome-ensure-that-install_dir-is-set.patch
===================================================================
--- 0003-modules-gnome-ensure-that-install_dir-is-set.patch	                        (rev 0)
+++ 0003-modules-gnome-ensure-that-install_dir-is-set.patch	2021-10-31 20:32:00 UTC (rev 426899)
@@ -0,0 +1,83 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Dylan Baker <dylan at pnwbakers.com>
+Date: Wed, 27 Oct 2021 11:02:04 -0700
+Subject: [PATCH] modules/gnome: ensure that `install_dir` is set
+
+The `mkenums` functions can have this unset if, and only if, the
+c file only variant is called. Due to side effects if the header file is
+generated then `install_dir` is ensured to be set for the c file. I have
+removed this side effect so that our tests actually cover this case.
+
+Fixes #9472
+---
+ mesonbuild/modules/gnome.py                   | 22 ++++++++++++-------
+ .../frameworks/7 gnome/mkenums/meson.build    |  6 ++---
+ 2 files changed, 17 insertions(+), 11 deletions(-)
+
+diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
+index 714b68a8da3c..4b3107e36738 100644
+--- a/mesonbuild/modules/gnome.py
++++ b/mesonbuild/modules/gnome.py
+@@ -1434,31 +1434,37 @@ class GnomeModule(ExtensionModule):
+             # so --template consumes it.
+             h_cmd = cmd + ['--template', '@INPUT@']
+             h_sources = [h_template] + sources
+-            custom_kwargs['install'] = install_header
+-            if 'install_dir' not in custom_kwargs:
+-                custom_kwargs['install_dir'] = \
++
++            # Copy so we don't mutate the arguments for the c_template
++            h_kwargs = custom_kwargs.copy()
++            h_kwargs['install'] = install_header
++            if 'install_dir' not in h_kwargs:
++                h_kwargs['install_dir'] = \
+                     state.environment.coredata.get_option(mesonlib.OptionKey('includedir'))
+             h_target = self._make_mkenum_custom_target(state, h_sources,
+                                                        h_output, h_cmd,
+-                                                       custom_kwargs)
++                                                       h_kwargs)
+             targets.append(h_target)
+ 
+         if c_template is not None:
+             c_output = os.path.basename(os.path.splitext(c_template)[0])
+             # We always set template as the first element in the source array
+             # so --template consumes it.
+             c_cmd = cmd + ['--template', '@INPUT@']
+             c_sources = [c_template] + sources
++
++            c_kwargs = custom_kwargs.copy()
+             # Never install the C file. Complain on bug tracker if you need it.
+-            custom_kwargs['install'] = False
++            c_kwargs['install'] = False
++            c_kwargs['install_dir'] = False
+             if h_template is not None:
+                 if 'depends' in custom_kwargs:
+-                    custom_kwargs['depends'] += [h_target]
++                    c_kwargs['depends'] += [h_target]
+                 else:
+-                    custom_kwargs['depends'] = h_target
++                    c_kwargs['depends'] = h_target
+             c_target = self._make_mkenum_custom_target(state, c_sources,
+                                                        c_output, c_cmd,
+-                                                       custom_kwargs)
++                                                       c_kwargs)
+             targets.insert(0, c_target)
+ 
+         if c_template is None and h_template is None:
+diff --git a/test cases/frameworks/7 gnome/mkenums/meson.build b/test cases/frameworks/7 gnome/mkenums/meson.build
+index 8ff05ba5ea24..4cf4dcf8a01a 100644
+--- a/test cases/frameworks/7 gnome/mkenums/meson.build	
++++ b/test cases/frameworks/7 gnome/mkenums/meson.build	
+@@ -34,9 +34,9 @@ enums_c2 = gnome.mkenums('abc2',
+   sources : 'meson-sample.h',
+   depends : [enums_h1, enums_h2],
+   c_template : 'enums2.c.in',
+-  ftail : '/* trailing source file info */',
+-  install_header : true,
+-  install_dir : get_option('includedir'))
++  ftail : '/* trailing source file info */')
++# explicitly don't set install_dir here, for bug testing
++# See https://github.com/mesonbuild/meson/issues/9472
+ 
+ conf = configuration_data()
+ conf.set('ENUM_FILE', 'enums2.h')

Added: 0004-modules-gnome-fix-missing-install_dir-again-harder.patch
===================================================================
--- 0004-modules-gnome-fix-missing-install_dir-again-harder.patch	                        (rev 0)
+++ 0004-modules-gnome-fix-missing-install_dir-again-harder.patch	2021-10-31 20:32:00 UTC (rev 426899)
@@ -0,0 +1,48 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Dylan Baker <dylan at pnwbakers.com>
+Date: Thu, 28 Oct 2021 10:53:26 -0700
+Subject: [PATCH] modules/gnome: fix missing install_dir, again, harder
+
+It turns out this could be missing in GResource*Target as well, due
+mostly to the same problem, side effects of mutating a shared
+dictionary; though it could also happen with a specific set of keywords
+given and other omitted.
+
+Fixes #9350
+---
+ mesonbuild/modules/gnome.py | 18 ++++++++++--------
+ 1 file changed, 10 insertions(+), 8 deletions(-)
+
+diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
+index 4b3107e36738..e825981d40f1 100644
+--- a/mesonbuild/modules/gnome.py
++++ b/mesonbuild/modules/gnome.py
+@@ -278,18 +278,20 @@ class GnomeModule(ExtensionModule):
+         if install_header and not export:
+             raise MesonException('GResource header is installed yet export is not enabled')
+ 
+-        kwargs['input'] = args[1]
+-        kwargs['output'] = output
+-        kwargs['depends'] = depends
++        c_kwargs = kwargs.copy()
++        c_kwargs['input'] = args[1]
++        c_kwargs['output'] = output
++        c_kwargs['depends'] = depends
++        c_kwargs.setdefault('install_dir', [])
+         if not mesonlib.version_compare(glib_version, gresource_dep_needed_version):
+             # This will eventually go out of sync if dependencies are added
+-            kwargs['depend_files'] = depend_files
+-            kwargs['command'] = cmd
++            c_kwargs['depend_files'] = depend_files
++            c_kwargs['command'] = cmd
+         else:
+             depfile = f'{output}.d'
+-            kwargs['depfile'] = depfile
+-            kwargs['command'] = copy.copy(cmd) + ['--dependency-file', '@DEPFILE@']
+-        target_c = GResourceTarget(name, state.subdir, state.subproject, kwargs)
++            c_kwargs['depfile'] = depfile
++            c_kwargs['command'] = copy.copy(cmd) + ['--dependency-file', '@DEPFILE@']
++        target_c = GResourceTarget(name, state.subdir, state.subproject, c_kwargs)
+ 
+         if gresource: # Only one target for .gresource files
+             return ModuleReturnValue(target_c, [target_c])

Added: 0005-modules-gnome-use-install_dir-instead-of-false.patch
===================================================================
--- 0005-modules-gnome-use-install_dir-instead-of-false.patch	                        (rev 0)
+++ 0005-modules-gnome-use-install_dir-instead-of-false.patch	2021-10-31 20:32:00 UTC (rev 426899)
@@ -0,0 +1,22 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Dylan Baker <dylan at pnwbakers.com>
+Date: Thu, 28 Oct 2021 11:46:18 -0700
+Subject: [PATCH] modules/gnome: use `install_dir = []` instead of false
+
+---
+ mesonbuild/modules/gnome.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
+index e825981d40f1..94b9793baa06 100644
+--- a/mesonbuild/modules/gnome.py
++++ b/mesonbuild/modules/gnome.py
+@@ -1458,7 +1458,7 @@ class GnomeModule(ExtensionModule):
+             c_kwargs = custom_kwargs.copy()
+             # Never install the C file. Complain on bug tracker if you need it.
+             c_kwargs['install'] = False
+-            c_kwargs['install_dir'] = False
++            c_kwargs['install_dir'] = []
+             if h_template is not None:
+                 if 'depends' in custom_kwargs:
+                     c_kwargs['depends'] += [h_target]

Added: 0006-mtest-accept-very-long-lines.patch
===================================================================
--- 0006-mtest-accept-very-long-lines.patch	                        (rev 0)
+++ 0006-mtest-accept-very-long-lines.patch	2021-10-31 20:32:00 UTC (rev 426899)
@@ -0,0 +1,39 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Paolo Bonzini <pbonzini at redhat.com>
+Date: Wed, 27 Oct 2021 23:38:32 +0200
+Subject: [PATCH] mtest: accept very long lines
+
+Unless parsing TAP output, there is no strict requirement for
+"meson test" to process test output one line at a time; it simply
+looks nicer to not print a partial line if it can be avoided.
+
+However, in the case of extremely long lines StreamReader.readline
+can fail with a ValueError.  Use readuntil('\n') instead and
+just process whatever pieces of the line it returns.
+
+Fixes: #8591
+Signed-off-by: Paolo Bonzini <pbonzini at redhat.com>
+---
+ mesonbuild/mtest.py | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/mesonbuild/mtest.py b/mesonbuild/mtest.py
+index 74d7d8bf1ca7..8faf98955fae 100644
+--- a/mesonbuild/mtest.py
++++ b/mesonbuild/mtest.py
+@@ -1092,7 +1092,14 @@ async def read_decode(reader: asyncio.StreamReader, console_mode: ConsoleUser) -
+     stdo_lines = []
+     try:
+         while not reader.at_eof():
+-            line = decode(await reader.readline())
++            # Prefer splitting by line, as that produces nicer output
++            try:
++                line_bytes = await reader.readuntil(b'\n')
++            except asyncio.IncompleteReadError as e:
++                line_bytes = e.partial
++            except asyncio.LimitOverrunError as e:
++                line_bytes = await reader.readexactly(e.consumed)
++            line = decode(line_bytes)
+             stdo_lines.append(line)
+             if console_mode is ConsoleUser.STDOUT:
+                 print(line, end='', flush=True)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2021-10-31 19:59:52 UTC (rev 426898)
+++ PKGBUILD	2021-10-31 20:32:00 UTC (rev 426899)
@@ -4,13 +4,12 @@
 
 pkgname=meson
 pkgver=0.60.0
-pkgrel=1
+pkgrel=2
 pkgdesc='High productivity build system'
 url='https://mesonbuild.com/'
 arch=('any')
 license=('Apache')
 depends=('python-setuptools' 'ninja')
-makedepends=('git')
 checkdepends=('gcc-objc' 'vala' 'rust' 'gcc-fortran' 'mono' 'boost' 'qt5-base' 'git' 'cython'
               'gtkmm3' 'gtest' 'gmock' 'protobuf' 'wxgtk3' 'python-gobject' 'gobject-introspection'
               'itstool' 'gtk3' 'java-environment=8' 'gtk-doc' 'llvm' 'clang' 'sdl2' 'graphviz'
@@ -17,40 +16,55 @@
               'doxygen' 'vulkan-validation-layers' 'openssh' 'mercurial' 'gtk-sharp-2' 'qt5-tools'
               'libwmf' 'valgrind' 'cmake' 'netcdf-fortran' 'openmpi' 'nasm' 'gnustep-base' 'libelf'
               'python-pytest-xdist' 'python2-setuptools' 'ldc' 'rust-bindgen' 'cuda' 'hotdoc')
-_commit=f64e5cee6bc7ab8c00c31f341afc6043867773d0  # tags/0.60.0^0
-source=("git+https://github.com/mesonbuild/meson#commit=$_commit"
+source=(https://github.com/mesonbuild/meson/releases/download/${pkgver/rc/.rc}/meson-${pkgver}.tar.gz{,.asc}
+        0001-i18n-merge_file-deprecate-positional-arguments.patch
+        0002-test_clang_format-Do-not-assume-meson-source-is-in-g.patch
+        0003-modules-gnome-ensure-that-install_dir-is-set.patch
+        0004-modules-gnome-fix-missing-install_dir-again-harder.patch
+        0005-modules-gnome-use-install_dir-instead-of-false.patch
+        0006-mtest-accept-very-long-lines.patch
         skip-test.diff
         arch-meson)
-sha512sums=('SKIP'
+sha512sums=('05275f003445672c1613db6c4c62ab39bfedc64cf2261f91d361a2aa24116a08185874b2e5dfa7daeebd584313bd91f4e0856fe68b36d8709065f80529902dda'
+            'SKIP'
+            '08b603acb19cf85f824e2e05ee7f2cd720ee46e488042498e4ef671e2a341c8f6ca22ef4f76fab2c48ab4d99949990753b3489ddaf20f08d3a9145899140d3aa'
+            'e5b98b635f0bbc36aafd180a8fc683a5aac5f6f06b245b71e9ab536f180538330c279bdc0c33a898d5adb3bb1d1feb0746f577eba2ce6ce1a915a3fba3c24568'
+            '1a71752d98adf3759077a0f93483a4051af9365dbd40626fb96897eb65a0ee29e3b9fc77fdd9bdc68fd257247e7e4c97c3052efbbeacbde5329ce0790373c8c2'
+            '56453fec090b7f64ae55d7938fdeda50f5746354a5f179992e7edcde150a610039a35ec4d5f0bb88436b5db5fb5c7dd072731166abaab7dcffc1a14c258d81fb'
+            'dd5d6e640ba71ea84617b856ee0dc9a222fbcbdf506e75ce4777b7f2280af4c8f27a5f03c1fc0c173f455d1b85d18d0a779ff95a1df1d06ae5db1848c43a4e54'
+            'ff39077b1c6e8f1b348e2bf3f6d1801fb69bfb37f25f2a8d935b5456bc38da7528309cd7d5f279205d77759b80f4746be1ab5c25e3c7ee9536aa5a72c096fc8d'
             '486e60b1d470c64d07d4686bd0b4374924967b9e024ff6d9fe248f512995ece19b8b09dd69c91f26dec4bb92c61fc3d275a2b7e481c2acd10ebb90d7e3cb7e20'
             'f451f8a7ef9cf1dd724c2ce20bb85a3f1611b87b2e7a17ef0fdbe8ab82a67389f818ea30a5adfe8413143e4eac77ea2e0b8234b5b2466b41a892e2bd0435376c')
 validpgpkeys=('19E2D6D9B46D8DAA6288F877C24E631BABB1FE70') # Jussi Pakkanen <jpakkane at gmail.com>
 
-pkgver() {
-  cd ${pkgname}
-  git describe --tags | sed 's/-/+/g'
-}
-
 prepare() {
-  cd ${pkgname}
+  cd ${pkgname}-${pkgver}
 
+  # Backports from 0.60 branch
+  patch -Np1 -i ../0001-i18n-merge_file-deprecate-positional-arguments.patch
+  patch -Np1 -i ../0002-test_clang_format-Do-not-assume-meson-source-is-in-g.patch
+  patch -Np1 -i ../0003-modules-gnome-ensure-that-install_dir-is-set.patch
+  patch -Np1 -i ../0004-modules-gnome-fix-missing-install_dir-again-harder.patch
+  patch -Np1 -i ../0005-modules-gnome-use-install_dir-instead-of-false.patch
+  patch -Np1 -i ../0006-mtest-accept-very-long-lines.patch
+
   # Our containers do not allow sanitizers to run
-  git apply -3 ../skip-test.diff
+  patch -Np1 -i ../skip-test.diff
 }
 
 build() {
-  cd ${pkgname}
+  cd ${pkgname}-${pkgver}
   python setup.py build
 }
 
 check() (
-  cd ${pkgname}
+  cd ${pkgname}-${pkgver}
   export LC_CTYPE=en_US.UTF-8 CPPFLAGS= CFLAGS= CXXFLAGS= LDFLAGS=
   ./run_tests.py
 )
 
 package() {
-  cd ${pkgname}
+  cd ${pkgname}-${pkgver}
   python setup.py install --root="${pkgdir}" --optimize=1 --skip-build
 
   install -d "${pkgdir}/usr/share/vim/vimfiles"



More information about the arch-commits mailing list