Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package meson for openSUSE:Factory checked 
in at 2022-11-25 13:11:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/meson (Old)
 and      /work/SRC/openSUSE:Factory/.meson.new.1597 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "meson"

Fri Nov 25 13:11:08 2022 rev:90 rq:1037578 version:0.64.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/meson/meson.changes      2022-11-23 
09:47:30.714855351 +0100
+++ /work/SRC/openSUSE:Factory/.meson.new.1597/meson.changes    2022-11-25 
13:11:09.959682125 +0100
@@ -1,0 +2,11 @@
+Wed Nov 23 09:03:45 UTC 2022 - Dominique Leuenberger <dims...@opensuse.org>
+
+- Update to version 0.64.1:
+  + Target python 3.10 as the mypy language version.
+  + hotdoc module: use less confusing names.
+  + Fix deprecation message, the function name is fs.copyfile().
+  + fix deprecated use of meson builddir/ in testsuite.
+  + tests: fix edge case where non-default python is used, by
+    skipping it.
+
+-------------------------------------------------------------------

Old:
----
  meson-0.64.0.tar.gz
  meson-0.64.0.tar.gz.asc

New:
----
  meson-0.64.1.tar.gz
  meson-0.64.1.tar.gz.asc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ meson.spec ++++++
--- /var/tmp/diff_new_pack.ZWormX/_old  2022-11-25 13:11:11.351689900 +0100
+++ /var/tmp/diff_new_pack.ZWormX/_new  2022-11-25 13:11:11.359689944 +0100
@@ -30,7 +30,7 @@
 %define _name   mesonbuild
 %{!?vim_data_dir:%global vim_data_dir %{_datadir}/vim}
 Name:           meson%{name_ext}
-Version:        0.64.0
+Version:        0.64.1
 Release:        0
 Summary:        Python-based build system
 License:        Apache-2.0

++++++ meson-0.64.0.tar.gz -> meson-0.64.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.64.0/PKG-INFO new/meson-0.64.1/PKG-INFO
--- old/meson-0.64.0/PKG-INFO   2022-11-06 15:14:45.022642400 +0100
+++ new/meson-0.64.1/PKG-INFO   2022-11-22 22:04:22.415355700 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: meson
-Version: 0.64.0
+Version: 0.64.1
 Summary: A high performance build system
 Home-page: https://mesonbuild.com
 Author: Jussi Pakkanen
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.64.0/man/meson.1 new/meson-0.64.1/man/meson.1
--- old/meson-0.64.0/man/meson.1        2022-11-06 14:42:09.000000000 +0100
+++ new/meson-0.64.1/man/meson.1        2022-11-22 18:23:53.000000000 +0100
@@ -1,4 +1,4 @@
-.TH MESON "1" "November 2022" "meson 0.64.0" "User Commands"
+.TH MESON "1" "November 2022" "meson 0.64.1" "User Commands"
 .SH NAME
 meson - a high productivity build system
 .SH DESCRIPTION
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.64.0/meson.egg-info/PKG-INFO 
new/meson-0.64.1/meson.egg-info/PKG-INFO
--- old/meson-0.64.0/meson.egg-info/PKG-INFO    2022-11-06 15:14:42.000000000 
+0100
+++ new/meson-0.64.1/meson.egg-info/PKG-INFO    2022-11-22 22:04:21.000000000 
+0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: meson
-Version: 0.64.0
+Version: 0.64.1
 Summary: A high performance build system
 Home-page: https://mesonbuild.com
 Author: Jussi Pakkanen
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.64.0/meson.egg-info/SOURCES.txt 
new/meson-0.64.1/meson.egg-info/SOURCES.txt
--- old/meson-0.64.0/meson.egg-info/SOURCES.txt 2022-11-06 15:14:42.000000000 
+0100
+++ new/meson-0.64.1/meson.egg-info/SOURCES.txt 2022-11-22 22:04:21.000000000 
+0100
@@ -3307,6 +3307,8 @@
 test cases/unit/107 new subproject on reconfigure/subprojects/foo/meson.build
 test cases/unit/108 configure same noop/meson.build
 test cases/unit/108 configure same noop/meson_options.txt
+test cases/unit/109 freeze/freeze.c
+test cases/unit/109 freeze/meson.build
 test cases/unit/11 cross prog/meson.build
 test cases/unit/11 cross prog/some_cross_tool.py
 test cases/unit/11 cross prog/sometool.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.64.0/mesonbuild/backend/ninjabackend.py 
new/meson-0.64.1/mesonbuild/backend/ninjabackend.py
--- old/meson-0.64.0/mesonbuild/backend/ninjabackend.py 2022-11-01 
20:00:11.000000000 +0100
+++ new/meson-0.64.1/mesonbuild/backend/ninjabackend.py 2022-11-21 
20:54:10.000000000 +0100
@@ -1878,8 +1878,8 @@
             args.extend(rustc.get_linker_always_args())
 
         args += self.generate_basic_compiler_args(target, rustc, False)
-        # This matches rustc's default behavior.
-        args += ['--crate-name', target.name.replace('-', '_')]
+        # Rustc replaces - with _. spaces are not allowed, so we replace them 
with underscores
+        args += ['--crate-name', target.name.replace('-', '_').replace(' ', 
'_')]
         depfile = os.path.join(target.subdir, target.name + '.d')
         args += ['--emit', f'dep-info={depfile}', '--emit', 'link']
         args += target.get_extra_args('rust')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.64.0/mesonbuild/backend/vs2010backend.py 
new/meson-0.64.1/mesonbuild/backend/vs2010backend.py
--- old/meson-0.64.0/mesonbuild/backend/vs2010backend.py        2022-10-24 
21:25:24.000000000 +0200
+++ new/meson-0.64.1/mesonbuild/backend/vs2010backend.py        2022-11-21 
20:54:10.000000000 +0100
@@ -1029,7 +1029,7 @@
                 file_args[l] += compilers.get_base_compile_args(
                     target.get_options(), comp)
                 file_args[l] += comp.get_option_compile_args(
-                    self.environment.coredata.options)
+                    target.get_options())
 
         # Add compile args added using add_project_arguments()
         for l, args in 
self.build.projects_args[target.for_machine].get(target.subproject, {}).items():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.64.0/mesonbuild/build.py 
new/meson-0.64.1/mesonbuild/build.py
--- old/meson-0.64.0/mesonbuild/build.py        2022-11-01 20:00:11.000000000 
+0100
+++ new/meson-0.64.1/mesonbuild/build.py        2022-11-21 20:54:10.000000000 
+0100
@@ -36,7 +36,7 @@
     extract_as_list, typeslistify, stringlistify, classify_unity_sources,
     get_filenames_templates_dict, substitute_values, has_path_sep,
     OptionKey, PerMachineDefaultable, OptionOverrideProxy,
-    MesonBugException, EnvironmentVariables
+    MesonBugException, EnvironmentVariables, pickle_load,
 )
 from .compilers import (
     is_object, clink_langs, sort_clink, all_languages,
@@ -1784,7 +1784,7 @@
     typename = 'executable'
 
     def __init__(self, name: str, subdir: str, subproject: str, for_machine: 
MachineChoice,
-                 sources: T.List[File], structured_sources: 
T.Optional['StructuredSources'],
+                 sources: T.List[SourceOutputs], structured_sources: 
T.Optional['StructuredSources'],
                  objects, environment: environment.Environment, compilers: 
T.Dict[str, 'Compiler'],
                  kwargs):
         key = OptionKey('b_pie')
@@ -1913,7 +1913,7 @@
     typename = 'static library'
 
     def __init__(self, name: str, subdir: str, subproject: str, for_machine: 
MachineChoice,
-                 sources: T.List[File], structured_sources: 
T.Optional['StructuredSources'],
+                 sources: T.List[SourceOutputs], structured_sources: 
T.Optional['StructuredSources'],
                  objects, environment: environment.Environment, compilers: 
T.Dict[str, 'Compiler'],
                  kwargs):
         self.prelink = kwargs.get('prelink', False)
@@ -1985,7 +1985,7 @@
     typename = 'shared library'
 
     def __init__(self, name: str, subdir: str, subproject: str, for_machine: 
MachineChoice,
-                 sources: T.List[File], structured_sources: 
T.Optional['StructuredSources'],
+                 sources: T.List[SourceOutputs], structured_sources: 
T.Optional['StructuredSources'],
                  objects, environment: environment.Environment, compilers: 
T.Dict[str, 'Compiler'],
                  kwargs):
         self.soversion = None
@@ -2324,7 +2324,7 @@
     typename = 'shared module'
 
     def __init__(self, name: str, subdir: str, subproject: str, for_machine: 
MachineChoice,
-                 sources: T.List[File], structured_sources: 
T.Optional['StructuredSources'],
+                 sources: T.List[SourceOutputs], structured_sources: 
T.Optional['StructuredSources'],
                  objects, environment: environment.Environment,
                  compilers: T.Dict[str, 'Compiler'], kwargs):
         if 'version' in kwargs:
@@ -2694,7 +2694,7 @@
     typename = 'jar'
 
     def __init__(self, name: str, subdir: str, subproject: str, for_machine: 
MachineChoice,
-                 sources: T.List[File], structured_sources: 
T.Optional['StructuredSources'],
+                 sources: T.List[SourceOutputs], structured_sources: 
T.Optional['StructuredSources'],
                  objects, environment: environment.Environment, compilers: 
T.Dict[str, 'Compiler'],
                  kwargs):
         super().__init__(name, subdir, subproject, for_machine, sources, 
structured_sources, objects,
@@ -2900,24 +2900,11 @@
 
 def load(build_dir: str) -> Build:
     filename = os.path.join(build_dir, 'meson-private', 'build.dat')
-    load_fail_msg = f'Build data file {filename!r} is corrupted. Try with a 
fresh build tree.'
-    nonexisting_fail_msg = f'No such build data file as "{filename!r}".'
     try:
-        with open(filename, 'rb') as f:
-            obj = pickle.load(f)
+        return pickle_load(filename, 'Build data', Build)
     except FileNotFoundError:
-        raise MesonException(nonexisting_fail_msg)
-    except (pickle.UnpicklingError, EOFError):
-        raise MesonException(load_fail_msg)
-    except AttributeError:
-        raise MesonException(
-            f"Build data file {filename!r} references functions or classes 
that don't "
-            "exist. This probably means that it was generated with an old "
-            "version of meson. Try running from the source directory "
-            f"meson setup {build_dir} --wipe")
-    if not isinstance(obj, Build):
-        raise MesonException(load_fail_msg)
-    return obj
+        raise MesonException(f'No such build data file as {filename!r}.')
+
 
 def save(obj: Build, filename: str) -> None:
     with open(filename, 'wb') as f:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.64.0/mesonbuild/coredata.py 
new/meson-0.64.1/mesonbuild/coredata.py
--- old/meson-0.64.0/mesonbuild/coredata.py     2022-11-06 14:42:09.000000000 
+0100
+++ new/meson-0.64.1/mesonbuild/coredata.py     2022-11-22 18:23:53.000000000 
+0100
@@ -53,7 +53,7 @@
 #
 # Pip requires that RCs are named like this: '0.1.0.rc1'
 # But the corresponding Git tag needs to be '0.1.0rc1'
-version = '0.64.0'
+version = '0.64.1'
 
 backendlist = ['ninja', 'vs', 'vs2010', 'vs2012', 'vs2013', 'vs2015', 
'vs2017', 'vs2019', 'vs2022', 'xcode']
 
@@ -1035,9 +1035,9 @@
 def format_cmd_line_options(options: argparse.Namespace) -> str:
     cmdline = ['-D{}={}'.format(str(k), v) for k, v in 
options.cmd_line_options.items()]
     if options.cross_file:
-        cmdline += [f'--cross-file {f}' for f in options.cross_file]
+        cmdline += [f'--cross-file={f}' for f in options.cross_file]
     if options.native_file:
-        cmdline += [f'--native-file {f}' for f in options.native_file]
+        cmdline += [f'--native-file={f}' for f in options.native_file]
     return ' '.join([shlex.quote(x) for x in cmdline])
 
 def major_versions_differ(v1: str, v2: str) -> bool:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.64.0/mesonbuild/interpreter/interpreter.py 
new/meson-0.64.1/mesonbuild/interpreter/interpreter.py
--- old/meson-0.64.0/mesonbuild/interpreter/interpreter.py      2022-11-01 
20:00:11.000000000 +0100
+++ new/meson-0.64.1/mesonbuild/interpreter/interpreter.py      2022-11-21 
20:54:10.000000000 +0100
@@ -664,7 +664,7 @@
                     raise InvalidArguments(f'Module "{ext_module.INFO.name}" 
has not been stabilized, and must be imported as 
unstable-{ext_module.INFO.name}')
                 ext_module = NotFoundExtensionModule(real_modname)
             else:
-                mlog.warning(f'Module {ext_module.INFO.name} has no backwards 
or forwards compatibility and might not exist in future releases.', 
location=node)
+                mlog.warning(f'Module {ext_module.INFO.name} has no backwards 
or forwards compatibility and might not exist in future releases.', 
location=node, fatal=False)
 
         self.modules[real_modname] = ext_module
         return ext_module
@@ -2459,7 +2459,7 @@
         ),
         KwargInfo(
             'copy', bool, default=False, since='0.47.0',
-            deprecated='0.64.0', deprecated_message='Use fs.copy instead',
+            deprecated='0.64.0', deprecated_message='Use fs.copyfile instead',
         ),
         KwargInfo('encoding', str, default='utf-8', since='0.47.0'),
         KwargInfo('format', str, default='meson', since='0.46.0',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.64.0/mesonbuild/linkers/linkers.py 
new/meson-0.64.1/mesonbuild/linkers/linkers.py
--- old/meson-0.64.0/mesonbuild/linkers/linkers.py      2022-10-24 
21:25:24.000000000 +0200
+++ new/meson-0.64.1/mesonbuild/linkers/linkers.py      2022-11-21 
20:54:10.000000000 +0100
@@ -208,8 +208,12 @@
         return self.can_rsp
 
     def get_std_link_args(self, env: 'Environment', is_thin: bool) -> 
T.List[str]:
-        # FIXME: osx ld rejects this: "file built for unknown-unsupported file 
format"
-        if is_thin and not env.machines[self.for_machine].is_darwin():
+        # Thin archives are a GNU extension not supported by the system linkers
+        # on Mac OS X, Solaris, or illumos, so don't build them on those OSes.
+        # OS X ld rejects with: "file built for unknown-unsupported file 
format"
+        # illumos/Solaris ld rejects with: "unknown file type"
+        if is_thin and not env.machines[self.for_machine].is_darwin() \
+          and not env.machines[self.for_machine].is_sunos():
             return self.std_thin_args
         else:
             return self.std_args
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.64.0/mesonbuild/modules/hotdoc.py 
new/meson-0.64.1/mesonbuild/modules/hotdoc.py
--- old/meson-0.64.0/mesonbuild/modules/hotdoc.py       2022-10-24 
21:28:05.000000000 +0200
+++ new/meson-0.64.1/mesonbuild/modules/hotdoc.py       2022-11-22 
18:23:53.000000000 +0100
@@ -23,7 +23,10 @@
 from . import ModuleReturnValue, ModuleInfo
 from . import ExtensionModule
 from ..dependencies import Dependency, InternalDependency
-from ..interpreterbase import InvalidArguments, noPosargs, noKwargs, 
typed_kwargs, ContainerTypeInfo, KwargInfo, typed_pos_args
+from ..interpreterbase import (
+    InvalidArguments, noPosargs, noKwargs, typed_kwargs, FeatureDeprecated,
+    ContainerTypeInfo, KwargInfo, typed_pos_args
+)
 from ..interpreter import CustomTargetHolder
 from ..interpreter.type_checking import NoneType
 from ..programs import ExternalProgram
@@ -61,7 +64,7 @@
 
         self._extra_extension_paths = set()
         self.extra_assets = set()
-        self._dependencies = []
+        self.extra_depends = []
         self._subprojects = []
 
     def process_known_arg(self, option, argname=None, value_processor=None):
@@ -185,7 +188,7 @@
             elif isinstance(dep, Dependency):
                 cflags.update(dep.get_compile_args())
             elif isinstance(dep, (build.StaticLibrary, build.SharedLibrary)):
-                self._dependencies.append(dep)
+                self.extra_depends.append(dep)
                 for incd in dep.get_include_dirs():
                     cflags.update(incd.get_incdirs())
             elif isinstance(dep, HotdocTarget):
@@ -197,9 +200,9 @@
                 self.cmd += ['--extra-assets=' + p for p in dep.extra_assets]
                 self.add_extension_paths(dep.extra_extension_paths)
             elif isinstance(dep, (build.CustomTarget, build.BuildTarget)):
-                self._dependencies.append(dep)
+                self.extra_depends.append(dep)
             elif isinstance(dep, build.CustomTargetIndex):
-                self._dependencies.append(dep.target)
+                self.extra_depends.append(dep.target)
 
         return [f.strip('-I') for f in cflags]
 
@@ -228,10 +231,10 @@
 
                 continue
             elif isinstance(arg, (build.BuildTarget, build.CustomTarget)):
-                self._dependencies.append(arg)
+                self.extra_depends.append(arg)
                 arg = self.interpreter.backend.get_target_filename_abs(arg)
             elif isinstance(arg, build.CustomTargetIndex):
-                self._dependencies.append(arg.target)
+                self.extra_depends.append(arg.target)
                 arg = self.interpreter.backend.get_target_filename_abs(arg)
 
             cmd.append(arg)
@@ -290,6 +293,7 @@
         self.process_extra_assets()
         self.add_extension_paths(self.kwargs.pop('extra_extension_paths'))
         self.process_subprojects()
+        self.extra_depends.extend(self.kwargs.pop('depends'))
 
         install = self.kwargs.pop('install')
         self.process_extra_args()
@@ -329,7 +333,7 @@
                               extra_assets=self._extra_assets,
                               subprojects=self._subprojects,
                               command=target_cmd,
-                              extra_depends=self._dependencies,
+                              extra_depends=self.extra_depends,
                               outputs=[fullname],
                               sources=[],
                               depfile=os.path.basename(depfile),
@@ -415,10 +419,18 @@
         # --c-include-directories
         KwargInfo(
             'dependencies',
-            ContainerTypeInfo(list, (Dependency, build.StaticLibrary, 
build.SharedLibrary)),
+            ContainerTypeInfo(list, (Dependency, build.StaticLibrary, 
build.SharedLibrary,
+                                     build.CustomTarget, 
build.CustomTargetIndex)),
             listify=True,
             default=[],
         ),
+        KwargInfo(
+            'depends',
+            ContainerTypeInfo(list, (build.CustomTarget, 
build.CustomTargetIndex)),
+            listify=True,
+            default=[],
+            since='0.64.1',
+        ),
         KwargInfo('gi_c_source_roots', ContainerTypeInfo(list, str), 
listify=True, default=[]),
         KwargInfo('extra_assets', ContainerTypeInfo(list, str), listify=True, 
default=[]),
         KwargInfo('extra_extension_paths', ContainerTypeInfo(list, str), 
listify=True, default=[]),
@@ -428,6 +440,9 @@
     )
     def generate_doc(self, state, args, kwargs):
         project_name = args[0]
+        if any(isinstance(x, (build.CustomTarget, build.CustomTargetIndex)) 
for x in kwargs['dependencies']):
+            FeatureDeprecated.single_use('hotdoc.generate_doc dependencies 
argument with custom_target',
+                                         '0.64.1', state.subproject, 'use 
`depends`', state.current_node)
         builder = HotdocTargetBuilder(project_name, state, self.hotdoc, 
self.interpreter, kwargs)
         target, install_script = builder.make_targets()
         targets = [target]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.64.0/mesonbuild/modules/rust.py 
new/meson-0.64.1/mesonbuild/modules/rust.py
--- old/meson-0.64.0/mesonbuild/modules/rust.py 2022-10-24 21:25:24.000000000 
+0200
+++ new/meson-0.64.1/mesonbuild/modules/rust.py 2022-11-22 18:23:53.000000000 
+0100
@@ -1,4 +1,4 @@
-# Copyright © 2020 Intel Corporation
+# Copyright © 2020-2022 Intel Corporation
 
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -147,9 +147,12 @@
         new_target_kwargs['install'] = False
         new_target_kwargs['dependencies'] = 
new_target_kwargs.get('dependencies', []) + kwargs['dependencies']
 
+        sources = T.cast('T.List[SourceOutputs]', base_target.sources.copy())
+        sources.extend(base_target.generated)
+
         new_target = Executable(
             name, base_target.subdir, state.subproject, 
base_target.for_machine,
-            base_target.sources, base_target.structured_sources,
+            sources, base_target.structured_sources,
             base_target.objects, base_target.environment, 
base_target.compilers,
             new_target_kwargs
         )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.64.0/mesonbuild/mtest.py 
new/meson-0.64.1/mesonbuild/mtest.py
--- old/meson-0.64.0/mesonbuild/mtest.py        2022-10-24 21:25:13.000000000 
+0200
+++ new/meson-0.64.1/mesonbuild/mtest.py        2022-11-21 20:54:10.000000000 
+0100
@@ -1265,14 +1265,14 @@
 
                 # Make sure the termination signal actually kills the process
                 # group, otherwise retry with a SIGKILL.
-                with suppress(TimeoutError):
+                with suppress(asyncio.TimeoutError):
                     await asyncio.wait_for(p.wait(), timeout=0.5)
                 if p.returncode is not None:
                     return None
 
                 os.killpg(p.pid, signal.SIGKILL)
 
-            with suppress(TimeoutError):
+            with suppress(asyncio.TimeoutError):
                 await asyncio.wait_for(p.wait(), timeout=1)
             if p.returncode is not None:
                 return None
@@ -1281,7 +1281,7 @@
             # Try to kill it one last time with a direct call.
             # If the process has spawned children, they will remain around.
             p.kill()
-            with suppress(TimeoutError):
+            with suppress(asyncio.TimeoutError):
                 await asyncio.wait_for(p.wait(), timeout=1)
             if p.returncode is not None:
                 return None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.64.0/mesonbuild/scripts/env2mfile.py 
new/meson-0.64.1/mesonbuild/scripts/env2mfile.py
--- old/meson-0.64.0/mesonbuild/scripts/env2mfile.py    2022-10-24 
21:25:24.000000000 +0200
+++ new/meson-0.64.1/mesonbuild/scripts/env2mfile.py    2022-11-22 
18:24:06.000000000 +0100
@@ -58,6 +58,7 @@
         self.properties: T.Dict[str, T.Union[str, T.List[str]]] = {}
         self.compile_args: T.Dict[str, T.List[str]] = {}
         self.link_args: T.Dict[str, T.List[str]] = {}
+        self.cmake: T.Dict[str, T.Union[str, T.List[str]]] = {}
 
         self.system: T.Optional[str] = None
         self.cpu: T.Optional[str] = None
@@ -84,12 +85,15 @@
             return [f]
     raise ValueError("%s not found on $PATH" % program)
 
-def write_args_line(ofile: T.TextIO, name: str, args: T.List[str]) -> None:
+def write_args_line(ofile: T.TextIO, name: str, args: T.Union[str, 
T.List[str]]) -> None:
     if len(args) == 0:
         return
-    ostr = name + ' = ['
-    ostr += ', '.join("'" + i + "'" for i in args)
-    ostr += ']\n'
+    if isinstance(args, str):
+        ostr = name + "= '" + args + "'\n"
+    else:
+        ostr = name + ' = ['
+        ostr += ', '.join("'" + i + "'" for i in args)
+        ostr += ']\n'
     ofile.write(ostr)
 
 def get_args_from_envvars(infos: MachineInfo) -> None:
@@ -130,7 +134,19 @@
 cpu_family_map = dict(mips64el="mips64",
                       i686='x86')
 cpu_map = dict(armhf="arm7hlf",
-               mips64el="mips64",)
+               mips64el="mips64",
+               powerpc64le="ppc64",
+               )
+
+def deb_detect_cmake(infos: MachineInfo, data: T.Dict[str, str]) -> None:
+    system_name_map = dict(linux="Linux", kfreebsd="kFreeBSD", hurd="GNU")
+    system_processor_map = dict(arm='armv7l', mips64el='mips64', 
powerpc64le='ppc64le')
+
+    infos.cmake["CMAKE_C_COMPILER"] = infos.compilers['c']
+    infos.cmake["CMAKE_CXX_COMPILER"] = infos.compilers['cpp']
+    infos.cmake["CMAKE_SYSTEM_NAME"] = 
system_name_map[data['DEB_HOST_ARCH_OS']]
+    infos.cmake["CMAKE_SYSTEM_PROCESSOR"] = 
system_processor_map.get(data['DEB_HOST_GNU_CPU'],
+                                                                     
data['DEB_HOST_GNU_CPU'])
 
 def deb_compiler_lookup(infos: MachineInfo, compilerstems: T.List[T.Tuple[str, 
str]], host_arch: str, gccsuffix: str) -> None:
     for langname, stem in compilerstems:
@@ -176,6 +192,11 @@
     infos.binaries['objcopy'] = locate_path("%s-objcopy" % host_arch)
     infos.binaries['ld'] = locate_path("%s-ld" % host_arch)
     try:
+        infos.binaries['cmake'] = locate_path("cmake")
+        deb_detect_cmake(infos, data)
+    except ValueError:
+        pass
+    try:
         infos.binaries['pkgconfig'] = locate_path("%s-pkg-config" % host_arch)
     except ValueError:
         pass # pkg-config is optional
@@ -215,8 +236,16 @@
                 write_args_line(ofile, lang + '_args', 
infos.compile_args[lang])
             if lang in infos.link_args:
                 write_args_line(ofile, lang + '_link_args', 
infos.link_args[lang])
+        for k, v in infos.properties.items():
+            write_args_line(ofile, k, v)
         ofile.write('\n')
 
+        if infos.cmake:
+            ofile.write('[cmake]\n\n')
+            for k, v in infos.cmake.items():
+                write_args_line(ofile, k, v)
+            ofile.write('\n')
+
         if write_system_info:
             ofile.write('[host_machine]\n')
             ofile.write(f"cpu = '{infos.cpu}'\n")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.64.0/mesonbuild/utils/universal.py 
new/meson-0.64.1/mesonbuild/utils/universal.py
--- old/meson-0.64.0/mesonbuild/utils/universal.py      2022-11-06 
14:39:24.000000000 +0100
+++ new/meson-0.64.1/mesonbuild/utils/universal.py      2022-11-21 
20:54:10.000000000 +0100
@@ -2289,16 +2289,21 @@
     except (pickle.UnpicklingError, EOFError):
         raise MesonException(load_fail_msg)
     except (TypeError, ModuleNotFoundError, AttributeError):
+        build_dir = os.path.dirname(os.path.dirname(filename))
         raise MesonException(
             f"{object_name} file {filename!r} references functions or classes 
that don't "
             "exist. This probably means that it was generated with an old "
-            "version of meson.")
+            "version of meson. Try running from the source directory "
+            f'meson setup {build_dir} --wipe')
     if not isinstance(obj, object_type):
         raise MesonException(load_fail_msg)
     from ..coredata import version as coredata_version
     from ..coredata import major_versions_differ, MesonVersionMismatchException
-    if major_versions_differ(obj.version, coredata_version):
-        raise MesonVersionMismatchException(obj.version, coredata_version)
+    version = getattr(obj, 'version', None)
+    if version is None:
+        version = obj.environment.coredata.version
+    if major_versions_differ(version, coredata_version):
+        raise MesonVersionMismatchException(version, coredata_version)
     return obj
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.64.0/run_meson_command_tests.py 
new/meson-0.64.1/run_meson_command_tests.py
--- old/meson-0.64.0/run_meson_command_tests.py 2022-10-24 21:25:24.000000000 
+0200
+++ new/meson-0.64.1/run_meson_command_tests.py 2022-11-21 20:54:10.000000000 
+0100
@@ -132,13 +132,17 @@
         bindir = (self.tmpdir / 'bin')
         bindir.mkdir()
         (bindir / 'meson').symlink_to(self.src_root / 'meson.py')
+        (bindir / 'python3').symlink_to(python_command[0])
         os.environ['PATH'] = str(bindir) + os.pathsep + os.environ['PATH']
+        # use our overridden PATH-compatible python
+        path_resolved_meson_command = resolved_meson_command.copy()
+        path_resolved_meson_command[0] = str(bindir / 'python3')
         # See if it works!
         meson_py = 'meson'
         meson_setup = [meson_py, 'setup']
         meson_command = meson_setup + self.meson_args
         stdo = self._run(meson_command + [self.testdir, builddir])
-        self.assertMesonCommandIs(stdo.split('\n')[0], resolved_meson_command)
+        self.assertMesonCommandIs(stdo.split('\n')[0], 
path_resolved_meson_command)
 
     def test_meson_installed(self):
         # Install meson
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.64.0/run_project_tests.py 
new/meson-0.64.1/run_project_tests.py
--- old/meson-0.64.0/run_project_tests.py       2022-10-24 21:28:10.000000000 
+0200
+++ new/meson-0.64.1/run_project_tests.py       2022-11-21 20:54:10.000000000 
+0100
@@ -1407,7 +1407,7 @@
     meson_commands = mesonlib.python_command + [get_meson_script()]
     with TemporaryDirectoryWinProof(prefix='b ', dir=None if use_tmpdir else 
'.') as build_dir:
         print('Checking that configuring works...')
-        gen_cmd = meson_commands + [testdir, build_dir] + backend_flags + 
extra_args
+        gen_cmd = meson_commands + ['setup' , testdir, build_dir] + 
backend_flags + extra_args
         pc, o, e = Popen_safe(gen_cmd)
         if pc.returncode != 0:
             raise RuntimeError(f'Failed to configure {testdir!r}:\n{e}\n{o}')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.64.0/test cases/frameworks/4 
qt/meson.build" "new/meson-0.64.1/test cases/frameworks/4 qt/meson.build"
--- "old/meson-0.64.0/test cases/frameworks/4 qt/meson.build"   2022-09-15 
00:37:12.000000000 +0200
+++ "new/meson-0.64.1/test cases/frameworks/4 qt/meson.build"   2022-11-21 
20:54:10.000000000 +0100
@@ -83,7 +83,7 @@
 
     translations_cpp = qtmodule.compile_translations(qresource: qt+'_lang.qrc')
     # unity builds suck and definitely cannot handle two qrc embeds in one 
compilation unit
-    unityproof_translations = static_library(qt+'unityproof_translations', 
translations_cpp)
+    unityproof_translations = static_library(qt+'unityproof_translations', 
translations_cpp, dependencies: qtdep)
 
     extra_cpp_args += '-DQT="@0@"'.format(qt)
     qexe = executable(qt + 'app',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.64.0/test cases/python/2 
extmodule/meson.build" "new/meson-0.64.1/test cases/python/2 
extmodule/meson.build"
--- "old/meson-0.64.0/test cases/python/2 extmodule/meson.build"        
2022-09-15 00:36:22.000000000 +0200
+++ "new/meson-0.64.1/test cases/python/2 extmodule/meson.build"        
2022-11-21 20:54:10.000000000 +0100
@@ -34,10 +34,17 @@
 
 py3_pkg_dep = dependency('python3', method: 'pkg-config', required : false)
 if py3_pkg_dep.found()
-  python_lib_dir = py3_pkg_dep.get_pkgconfig_variable('libdir')
+  py3_dep_majver = py3_pkg_dep.version().split('.')
+  py3_dep_majver = py3_dep_majver[0] + '.' + py3_dep_majver[1]
+  message(f'got two pythons: pkg-config is @py3_dep_majver@, and module is', 
py.language_version())
+  if py3_dep_majver != py.language_version()
+    message('skipped python3 pkg-config test because the default python3 is 
different from Meson\'s')
+  else
+    python_lib_dir = py3_pkg_dep.get_pkgconfig_variable('libdir')
 
-  # Check we can apply a version constraint
-  dependency('python3', version: '>=@0@'.format(py_dep.version()))
+    # Check we can apply a version constraint
+    dependency('python3', version: '>=@0@'.format(py_dep.version()))
+  endif
 else
-  message('Skipped python3 pkg-config test')
+  message('Skipped python3 pkg-config test because it was not found')
 endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.64.0/test cases/python3/3 
cython/meson.build" "new/meson-0.64.1/test cases/python3/3 cython/meson.build"
--- "old/meson-0.64.0/test cases/python3/3 cython/meson.build"  2022-09-15 
00:36:19.000000000 +0200
+++ "new/meson-0.64.1/test cases/python3/3 cython/meson.build"  2022-11-21 
20:54:10.000000000 +0100
@@ -6,8 +6,14 @@
 
 if cython.found() and py3_dep.found()
   py3_dep = dependency('python3')
+  py3_dep_majver = py3_dep.version().split('.')
+  py3_dep_majver = py3_dep_majver[0] + '.' + py3_dep_majver[1]
   py3_mod = import('python3')
   py3 = py3_mod.find_python()
+  if py3_dep_majver != py3_mod.language_version()
+      v = py3_mod.language_version()
+      error('MESON_SKIP_TEST: deprecated python3 module is non-functional when 
default python3 is different from Meson\'s', v)
+  endif
   subdir('libdir')
 
   test('cython tester',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.64.0/test cases/unit/109 freeze/freeze.c" 
"new/meson-0.64.1/test cases/unit/109 freeze/freeze.c"
--- "old/meson-0.64.0/test cases/unit/109 freeze/freeze.c"      1970-01-01 
01:00:00.000000000 +0100
+++ "new/meson-0.64.1/test cases/unit/109 freeze/freeze.c"      2022-11-21 
20:54:10.000000000 +0100
@@ -0,0 +1,21 @@
+#include<stdio.h>
+#include <signal.h>
+#include <string.h>
+#include <stdlib.h>
+
+static void do_nothing(int signo, siginfo_t *info, void *context) {
+}
+
+int main(int argc, char **argv) {
+    struct sigaction sa;
+    memset(&sa, 0, sizeof(struct sigaction));
+    sa.sa_sigaction = do_nothing;
+    if (sigaction(SIGTERM, &sa, NULL) == -1) {
+        printf("Could not set up signal handler.\n");
+        return 1;
+    }
+    printf("Freezing forever.\n");
+    while(1) {
+    }
+    return 0;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.64.0/test cases/unit/109 
freeze/meson.build" "new/meson-0.64.1/test cases/unit/109 freeze/meson.build"
--- "old/meson-0.64.0/test cases/unit/109 freeze/meson.build"   1970-01-01 
01:00:00.000000000 +0100
+++ "new/meson-0.64.1/test cases/unit/109 freeze/meson.build"   2022-11-21 
20:54:10.000000000 +0100
@@ -0,0 +1,4 @@
+project('freeze', 'c')
+
+e = executable('freeze', 'freeze.c')
+test('freeze', e, timeout: 1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.64.0/unittests/allplatformstests.py 
new/meson-0.64.1/unittests/allplatformstests.py
--- old/meson-0.64.0/unittests/allplatformstests.py     2022-11-06 
14:39:24.000000000 +0100
+++ new/meson-0.64.1/unittests/allplatformstests.py     2022-11-21 
20:54:10.000000000 +0100
@@ -4352,7 +4352,8 @@
         self.init(testdir, extra_args=['--werror'], override_envvars={'RUSTC': 
'clippy-driver'})
         with self.assertRaises(subprocess.CalledProcessError) as cm:
             self.build()
-        self.assertIn('error: use of a blacklisted/placeholder name `foo`', 
cm.exception.stdout)
+        self.assertTrue('error: use of a blacklisted/placeholder name `foo`' 
in cm.exception.stdout or
+                        'error: use of a disallowed/placeholder name `foo`' in 
cm.exception.stdout)
 
     @skip_if_not_language('rust')
     def test_rust_rlib_linkage(self) -> None:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.64.0/unittests/linuxliketests.py 
new/meson-0.64.1/unittests/linuxliketests.py
--- old/meson-0.64.0/unittests/linuxliketests.py        2022-11-01 
20:00:11.000000000 +0100
+++ new/meson-0.64.1/unittests/linuxliketests.py        2022-11-21 
20:54:10.000000000 +0100
@@ -182,7 +182,7 @@
             for name in {'ct', 'ct0'}:
                 ct_dep = PkgConfigDependency(name, env, kwargs)
                 self.assertTrue(ct_dep.found())
-                self.assertIn('-lct', ct_dep.get_link_args())
+                self.assertIn('-lct', ct_dep.get_link_args(raw=True))
 
     def test_pkgconfig_gen_deps(self):
         '''
@@ -1820,3 +1820,11 @@
                 default_symlinks.append(symlink)
                 os.symlink(default_dirs[i], symlink)
             self.assertFalse(cpp.compiler_args([f'-isystem{symlink}' for 
symlink in default_symlinks]).to_native())
+
+    def test_freezing(self):
+        testdir = os.path.join(self.unit_test_dir, '109 freeze')
+        self.init(testdir)
+        self.build()
+        with self.assertRaises(subprocess.CalledProcessError) as e:
+            self.run_tests()
+        self.assertNotIn('Traceback', e.exception.output)

Reply via email to