Hello community,

here is the log from the commit of package meson for openSUSE:Factory checked 
in at 2020-06-18 10:35:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/meson (Old)
 and      /work/SRC/openSUSE:Factory/.meson.new.3606 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "meson"

Thu Jun 18 10:35:37 2020 rev:60 rq:814863 version:0.54.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/meson/meson.changes      2020-06-04 
17:48:55.103627700 +0200
+++ /work/SRC/openSUSE:Factory/.meson.new.3606/meson.changes    2020-06-18 
10:35:43.330275495 +0200
@@ -1,0 +2,7 @@
+Tue Jun 16 08:09:40 UTC 2020 - Dominique Leuenberger <[email protected]>
+
+- Update to version 0.54.3:
+  + Various fixes around cmake integration.
+  + Various fixes around boost.
+
+-------------------------------------------------------------------

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

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

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

Other differences:
------------------
++++++ meson.spec ++++++
--- /var/tmp/diff_new_pack.EtAMCL/_old  2020-06-18 10:35:44.202278313 +0200
+++ /var/tmp/diff_new_pack.EtAMCL/_new  2020-06-18 10:35:44.202278313 +0200
@@ -28,7 +28,7 @@
 %{!?vim_data_dir:%global vim_data_dir %{_datadir}/vim}
 %bcond_with     setuptools
 Name:           meson%{name_ext}
-Version:        0.54.2
+Version:        0.54.3
 Release:        0
 Summary:        Python-based build system
 License:        Apache-2.0

++++++ meson-0.54.2.tar.gz -> meson-0.54.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.54.2/PKG-INFO new/meson-0.54.3/PKG-INFO
--- old/meson-0.54.2/PKG-INFO   2020-05-15 09:24:43.618322600 +0200
+++ new/meson-0.54.3/PKG-INFO   2020-06-15 18:46:37.313913600 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: meson
-Version: 0.54.2
+Version: 0.54.3
 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.54.2/man/meson.1 new/meson-0.54.3/man/meson.1
--- old/meson-0.54.2/man/meson.1        2020-05-15 09:23:18.000000000 +0200
+++ new/meson-0.54.3/man/meson.1        2020-06-14 21:40:08.000000000 +0200
@@ -1,4 +1,4 @@
-.TH MESON "1" "May 2020" "meson 0.54.2" "User Commands"
+.TH MESON "1" "June 2020" "meson 0.54.2" "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.54.2/meson.egg-info/PKG-INFO 
new/meson-0.54.3/meson.egg-info/PKG-INFO
--- old/meson-0.54.2/meson.egg-info/PKG-INFO    2020-05-15 09:24:26.000000000 
+0200
+++ new/meson-0.54.3/meson.egg-info/PKG-INFO    2020-06-15 18:46:33.000000000 
+0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: meson
-Version: 0.54.2
+Version: 0.54.3
 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.54.2/meson.egg-info/SOURCES.txt 
new/meson-0.54.3/meson.egg-info/SOURCES.txt
--- old/meson-0.54.2/meson.egg-info/SOURCES.txt 2020-05-15 09:24:26.000000000 
+0200
+++ new/meson-0.54.3/meson.egg-info/SOURCES.txt 2020-06-15 18:46:34.000000000 
+0200
@@ -315,6 +315,9 @@
 test cases/cmake/18 skip include files/subprojects/cmMod/fakeInc/cmModInc2.cpp
 test cases/cmake/18 skip include files/subprojects/cmMod/fakeInc/cmModInc3.cpp
 test cases/cmake/18 skip include files/subprojects/cmMod/fakeInc/cmModInc4.cpp
+test cases/cmake/19 cmake file/foolib.cmake.in
+test cases/cmake/19 cmake file/meson.build
+test cases/cmake/19 cmake file/test.json
 test cases/cmake/2 advanced/main.cpp
 test cases/cmake/2 advanced/meson.build
 test cases/cmake/2 advanced/test.json
@@ -351,6 +354,7 @@
 test cases/cmake/6 object library no dep/subprojects/cmObjLib/libB.cpp
 test cases/cmake/6 object library no dep/subprojects/cmObjLib/libB.hpp
 test cases/cmake/7 cmake options/meson.build
+test cases/cmake/7 cmake options/test.json
 test cases/cmake/7 cmake options/subprojects/cmOpts/CMakeLists.txt
 test cases/cmake/8 custom command/main.cpp
 test cases/cmake/8 custom command/meson.build
@@ -1912,6 +1916,7 @@
 test cases/fortran/7 generated/meson.build
 test cases/fortran/7 generated/mod1.fpp
 test cases/fortran/7 generated/mod2.fpp
+test cases/fortran/7 generated/mod3.fpp
 test cases/fortran/7 generated/prog.f90
 test cases/fortran/8 module names/meson.build
 test cases/fortran/8 module names/mod1.f90
@@ -2233,6 +2238,8 @@
 test cases/linuxlike/13 cmake dependency/testFlagSet.c
 test cases/linuxlike/13 cmake dependency/cmake/FindImportedTarget.cmake
 test cases/linuxlike/13 cmake dependency/cmake/FindSomethingLikeZLIB.cmake
+test cases/linuxlike/13 cmake dependency/cmake_fake1/cmMesonTestF1Config.cmake
+test cases/linuxlike/13 cmake dependency/cmake_fake2/cmMesonTestF2Config.cmake
 test cases/linuxlike/13 cmake 
dependency/cmake_pref_env/lib/cmake/cmMesonTestDep/cmMesonTestDepConfig.cmake
 test cases/linuxlike/13 cmake dependency/incdir/myinc.h
 test cases/linuxlike/14 static dynamic linkage/main.c
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.54.2/mesonbuild/backend/backends.py 
new/meson-0.54.3/mesonbuild/backend/backends.py
--- old/meson-0.54.2/mesonbuild/backend/backends.py     2020-05-15 
09:23:18.000000000 +0200
+++ new/meson-0.54.3/mesonbuild/backend/backends.py     2020-06-14 
21:40:08.000000000 +0200
@@ -444,6 +444,12 @@
         result.update(self.rpaths_for_bundled_shared_libraries(target))
         return tuple(result)
 
+    @staticmethod
+    def canonicalize_filename(fname):
+        for ch in ('/', '\\', ':'):
+            fname = fname.replace(ch, '_')
+        return fname
+
     def object_filename_from_source(self, target, source):
         assert isinstance(source, mesonlib.File)
         build_dir = self.environment.get_build_dir()
@@ -474,7 +480,7 @@
                 source = os.path.relpath(os.path.join(build_dir, rel_src),
                                          
os.path.join(self.environment.get_source_dir(), target.get_subdir()))
         machine = self.environment.machines[target.for_machine]
-        return source.replace('/', '_').replace('\\', '_') + '.' + 
machine.get_object_suffix()
+        return self.canonicalize_filename(source) + '.' + 
machine.get_object_suffix()
 
     def determine_ext_objs(self, extobj, proj_dir_to_build_root):
         result = []
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.54.2/mesonbuild/backend/ninjabackend.py 
new/meson-0.54.3/mesonbuild/backend/ninjabackend.py
--- old/meson-0.54.2/mesonbuild/backend/ninjabackend.py 2020-05-15 
09:23:11.000000000 +0200
+++ new/meson-0.54.3/mesonbuild/backend/ninjabackend.py 2020-06-14 
21:40:08.000000000 +0200
@@ -1974,7 +1974,7 @@
             src_filename = os.path.basename(src)
         else:
             src_filename = src
-        obj_basename = src_filename.replace('/', '_').replace('\\', '_')
+        obj_basename = self.canonicalize_filename(src_filename)
         rel_obj = os.path.join(self.get_target_private_dir(target), 
obj_basename)
         rel_obj += '.' + 
self.environment.machines[target.for_machine].get_object_suffix()
         commands += self.get_compile_debugfile_args(compiler, target, rel_obj)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.54.2/mesonbuild/cmake/executor.py 
new/meson-0.54.3/mesonbuild/cmake/executor.py
--- old/meson-0.54.2/mesonbuild/cmake/executor.py       2020-05-15 
09:23:18.000000000 +0200
+++ new/meson-0.54.3/mesonbuild/cmake/executor.py       2020-06-14 
21:40:08.000000000 +0200
@@ -28,6 +28,7 @@
 from .. import mlog, mesonlib
 from ..mesonlib import PerMachine, Popen_safe, version_compare, MachineChoice
 from ..environment import Environment
+from ..envconfig import get_env_var
 
 if T.TYPE_CHECKING:
     from ..dependencies.base import ExternalProgram
@@ -48,6 +49,8 @@
         self.cmakebin, self.cmakevers = 
self.find_cmake_binary(self.environment, silent=silent)
         self.always_capture_stderr = True
         self.print_cmout = False
+        self.prefix_paths = []      # type: T.List[str]
+        self.extra_cmake_args = []  # type: T.List[str]
         if self.cmakebin is False:
             self.cmakebin = None
             return
@@ -60,6 +63,21 @@
             self.cmakebin = None
             return
 
+        self.prefix_paths = 
self.environment.coredata.builtins_per_machine[self.for_machine]['cmake_prefix_path'].value
+        env_pref_path = get_env_var(
+            self.for_machine,
+            self.environment.is_cross_build(),
+            'CMAKE_PREFIX_PATH')
+        if env_pref_path is not None:
+            env_pref_path = re.split(r':|;', env_pref_path)
+            env_pref_path = [x for x in env_pref_path if x]  # Filter out 
empty strings
+            if not self.prefix_paths:
+                self.prefix_paths = []
+            self.prefix_paths += env_pref_path
+
+        if self.prefix_paths:
+            self.extra_cmake_args += 
['-DCMAKE_PREFIX_PATH={}'.format(';'.join(self.prefix_paths))]
+
     def find_cmake_binary(self, environment: Environment, silent: bool = 
False) -> T.Tuple['ExternalProgram', str]:
         from ..dependencies.base import ExternalProgram
 
@@ -226,6 +244,7 @@
         if env is None:
             env = os.environ
 
+        args = args + self.extra_cmake_args
         if disable_cache:
             return self._call_impl(args, build_dir, env)
 
@@ -362,5 +381,8 @@
     def get_command(self) -> T.List[str]:
         return self.cmakebin.get_command()
 
+    def get_cmake_prefix_paths(self) -> T.List[str]:
+        return self.prefix_paths
+
     def machine_choice(self) -> MachineChoice:
         return self.for_machine
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.54.2/mesonbuild/cmake/interpreter.py 
new/meson-0.54.3/mesonbuild/cmake/interpreter.py
--- old/meson-0.54.2/mesonbuild/cmake/interpreter.py    2020-05-15 
09:23:18.000000000 +0200
+++ new/meson-0.54.3/mesonbuild/cmake/interpreter.py    2020-06-14 
21:40:08.000000000 +0200
@@ -315,13 +315,6 @@
         tgt = trace.targets.get(self.cmake_name)
         if tgt:
             self.depends_raw = trace.targets[self.cmake_name].depends
-            if self.type.upper() == 'INTERFACE_LIBRARY':
-                props = tgt.properties
-
-                self.includes += props.get('INTERFACE_INCLUDE_DIRECTORIES', [])
-                self.public_compile_opts += 
props.get('INTERFACE_COMPILE_DEFINITIONS', [])
-                self.public_compile_opts += 
props.get('INTERFACE_COMPILE_OPTIONS', [])
-                self.link_flags += props.get('INTERFACE_LINK_OPTIONS', [])
 
             # TODO refactor this copy paste from CMakeDependency for future 
releases
             reg_is_lib = re.compile(r'^(-l[a-zA-Z0-9_]+|-l?pthread)$')
@@ -340,6 +333,12 @@
                 libraries = []
                 mlog.debug(tgt)
 
+                if 'INTERFACE_INCLUDE_DIRECTORIES' in tgt.properties:
+                    self.includes += [x for x in 
tgt.properties['INTERFACE_INCLUDE_DIRECTORIES'] if x]
+
+                if 'INTERFACE_LINK_OPTIONS' in tgt.properties:
+                    self.link_flags += [x for x in 
tgt.properties['INTERFACE_LINK_OPTIONS'] if x]
+
                 if 'INTERFACE_COMPILE_DEFINITIONS' in tgt.properties:
                     self.public_compile_opts += ['-D' + re.sub('^-D', '', x) 
for x in tgt.properties['INTERFACE_COMPILE_DEFINITIONS'] if x]
 
@@ -354,8 +353,15 @@
                     cfgs += [x for x in tgt.properties['CONFIGURATIONS'] if x]
                     cfg = cfgs[0]
 
-                if 'RELEASE' in cfgs:
-                    cfg = 'RELEASE'
+                is_debug = self.env.coredata.get_builtin_option('debug');
+                if is_debug:
+                    if 'DEBUG' in cfgs:
+                        cfg = 'DEBUG'
+                    elif 'RELEASE' in cfgs:
+                        cfg = 'RELEASE'
+                else:
+                    if 'RELEASE' in cfgs:
+                        cfg = 'RELEASE'
 
                 if 'IMPORTED_IMPLIB_{}'.format(cfg) in tgt.properties:
                     libraries += [x for x in 
tgt.properties['IMPORTED_IMPLIB_{}'.format(cfg)] if x]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.54.2/mesonbuild/cmake/traceparser.py 
new/meson-0.54.3/mesonbuild/cmake/traceparser.py
--- old/meson-0.54.2/mesonbuild/cmake/traceparser.py    2020-05-15 
09:23:18.000000000 +0200
+++ new/meson-0.54.3/mesonbuild/cmake/traceparser.py    2020-06-14 
21:40:08.000000000 +0200
@@ -64,6 +64,7 @@
             return
         for key, val in self.properties.items():
             self.properties[key] = [x.strip() for x in val]
+            assert all([';' not in x for x in self.properties[key]])
 
 class CMakeGeneratorTarget(CMakeTarget):
     def __init__(self, name):
@@ -138,7 +139,7 @@
         if not self.requires_stderr():
             if not self.trace_file_path.exists and not 
self.trace_file_path.is_file():
                 raise CMakeException('CMake: Trace file "{}" not 
found'.format(str(self.trace_file_path)))
-            trace = self.trace_file_path.read_text()
+            trace = self.trace_file_path.read_text(errors='ignore')
         if not trace:
             raise CMakeException('CMake: The CMake trace was not provided or 
is empty')
 
@@ -574,10 +575,10 @@
                 continue
 
             if mode in ['INTERFACE', 'LINK_INTERFACE_LIBRARIES', 'PUBLIC', 
'LINK_PUBLIC']:
-                interface += [i]
+                interface += i.split(';')
 
             if mode in ['PUBLIC', 'PRIVATE', 'LINK_PRIVATE']:
-                private += [i]
+                private += i.split(';')
 
         if paths:
             interface = self._guess_files(interface)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.54.2/mesonbuild/compilers/compilers.py 
new/meson-0.54.3/mesonbuild/compilers/compilers.py
--- old/meson-0.54.2/mesonbuild/compilers/compilers.py  2020-05-15 
09:23:18.000000000 +0200
+++ new/meson-0.54.3/mesonbuild/compilers/compilers.py  2020-06-14 
21:40:08.000000000 +0200
@@ -372,9 +372,10 @@
         # -Wl,-dead_strip_dylibs is incompatible with bitcode
         args.extend(linker.get_asneeded_args())
 
-    # Apple's ld (the only one that supports bitcode) does not like any
-    # -undefined arguments at all, so don't pass these when using bitcode
+    # Apple's ld (the only one that supports bitcode) does not like -undefined
+    # arguments or -headerpad_max_install_names when bitcode is enabled
     if not bitcode:
+        args.extend(linker.headerpad_args())
         if (not is_shared_module and
                 option_enabled(linker.base_options, options, 'b_lundef')):
             args.extend(linker.no_undefined_link_args())
@@ -1164,6 +1165,9 @@
     def get_asneeded_args(self) -> T.List[str]:
         return self.linker.get_asneeded_args()
 
+    def headerpad_args(self) -> T.List[str]:
+        return self.linker.headerpad_args()
+
     def bitcode_args(self) -> T.List[str]:
         return self.linker.bitcode_args()
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.54.2/mesonbuild/compilers/mixins/clike.py 
new/meson-0.54.3/mesonbuild/compilers/mixins/clike.py
--- old/meson-0.54.2/mesonbuild/compilers/mixins/clike.py       2020-05-15 
09:23:18.000000000 +0200
+++ new/meson-0.54.3/mesonbuild/compilers/mixins/clike.py       2020-06-14 
21:40:08.000000000 +0200
@@ -158,15 +158,24 @@
             if not files:
                 retval.append(d)
                 continue
-            file_to_check = os.path.join(d, files[0])
-            with open(file_to_check, 'rb') as fd:
-                header = fd.read(5)
-                # if file is not an ELF file, it's weird, but accept dir
-                # if it is elf, and the class matches, accept dir
-                if header[1:4] != b'ELF' or int(header[4]) == elf_class:
-                    retval.append(d)
-                # at this point, it's an ELF file which doesn't match the
-                # appropriate elf_class, so skip this one
+
+            for f in files:
+                file_to_check = os.path.join(d, f)
+                try:
+                    with open(file_to_check, 'rb') as fd:
+                        header = fd.read(5)
+                        # if file is not an ELF file, it's weird, but accept 
dir
+                        # if it is elf, and the class matches, accept dir
+                        if header[1:4] != b'ELF' or int(header[4]) == 
elf_class:
+                            retval.append(d)
+                        # at this point, it's an ELF file which doesn't match 
the
+                        # appropriate elf_class, so skip this one
+                    # stop scanning after the first sucessful read
+                    break
+                except OSError:
+                    # Skip the file if we can't read it
+                    pass
+
         return tuple(retval)
 
     @functools.lru_cache()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.54.2/mesonbuild/compilers/mixins/gnu.py 
new/meson-0.54.3/mesonbuild/compilers/mixins/gnu.py
--- old/meson-0.54.2/mesonbuild/compilers/mixins/gnu.py 2020-05-15 
09:23:11.000000000 +0200
+++ new/meson-0.54.3/mesonbuild/compilers/mixins/gnu.py 2020-06-14 
21:40:08.000000000 +0200
@@ -140,12 +140,14 @@
     LINKER_PREFIX = '-Wl,'
 
     def __init__(self):
-        self.base_options = ['b_pch', 'b_lto', 'b_pgo', 'b_sanitize', 
'b_coverage',
+        self.base_options = ['b_pch', 'b_lto', 'b_pgo', 'b_coverage',
                              'b_ndebug', 'b_staticpic', 'b_pie']
         if not (self.info.is_windows() or self.info.is_cygwin() or 
self.info.is_openbsd()):
             self.base_options.append('b_lundef')
         if not self.info.is_windows() or self.info.is_cygwin():
             self.base_options.append('b_asneeded')
+        if not self.info.is_hurd():
+            self.base_options.append('b_sanitize')
         # All GCC-like backends can do assembly
         self.can_compile_suffixes.add('s')
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.54.2/mesonbuild/coredata.py 
new/meson-0.54.3/mesonbuild/coredata.py
--- old/meson-0.54.2/mesonbuild/coredata.py     2020-05-15 09:23:18.000000000 
+0200
+++ new/meson-0.54.3/mesonbuild/coredata.py     2020-06-14 21:40:08.000000000 
+0200
@@ -38,7 +38,7 @@
 
     OptionDictType = T.Dict[str, 'UserOption[T.Any]']
 
-version = '0.54.2'
+version = '0.54.3'
 backendlist = ['ninja', 'vs', 'vs2010', 'vs2015', 'vs2017', 'vs2019', 'xcode']
 
 default_yielding = False
@@ -849,7 +849,7 @@
 
     def emit_base_options_warnings(self, enabled_opts: list):
         if 'b_bitcode' in enabled_opts:
-            mlog.warning('Base option \'b_bitcode\' is enabled, which is 
incompatible with many linker options. Incompatible options such as such as 
\'b_asneeded\' have been disabled.')
+            mlog.warning('Base option \'b_bitcode\' is enabled, which is 
incompatible with many linker options. Incompatible options such as 
\'b_asneeded\' have been disabled.')
             mlog.warning('Please see 
https://mesonbuild.com/Builtin-options.html#Notes_about_Apple_Bitcode_support 
for more details.')
 
 class CmdLineFileParser(configparser.ConfigParser):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.54.2/mesonbuild/dependencies/base.py 
new/meson-0.54.3/mesonbuild/dependencies/base.py
--- old/meson-0.54.2/mesonbuild/dependencies/base.py    2020-05-15 
09:23:11.000000000 +0200
+++ new/meson-0.54.3/mesonbuild/dependencies/base.py    2020-06-14 
21:40:08.000000000 +0200
@@ -22,6 +22,7 @@
 import shlex
 import shutil
 import stat
+import sys
 import textwrap
 import platform
 import typing as T
@@ -1086,8 +1087,9 @@
         # Setup the trace parser
         self.traceparser = CMakeTraceParser(self.cmakebin.version(), 
self._get_build_dir())
 
+        cm_args = stringlistify(extract_as_list(kwargs, 'cmake_args'))
         if CMakeDependency.class_cmakeinfo[self.for_machine] is None:
-            CMakeDependency.class_cmakeinfo[self.for_machine] = 
self._get_cmake_info()
+            CMakeDependency.class_cmakeinfo[self.for_machine] = 
self._get_cmake_info(cm_args)
         self.cmakeinfo = CMakeDependency.class_cmakeinfo[self.for_machine]
         if self.cmakeinfo is None:
             raise self._gen_exception('Unable to obtain CMake system 
information')
@@ -1097,25 +1099,9 @@
         modules += [(x, False) for x in stringlistify(extract_as_list(kwargs, 
'optional_modules'))]
         cm_path = stringlistify(extract_as_list(kwargs, 'cmake_module_path'))
         cm_path = [x if os.path.isabs(x) else 
os.path.join(environment.get_source_dir(), x) for x in cm_path]
-        cm_args = stringlistify(extract_as_list(kwargs, 'cmake_args'))
         if cm_path:
             cm_args.append('-DCMAKE_MODULE_PATH=' + ';'.join(cm_path))
-
-        pref_path = 
self.env.coredata.builtins_per_machine[self.for_machine]['cmake_prefix_path'].value
-        env_pref_path = get_env_var(
-            self.for_machine,
-            self.env.is_cross_build(),
-            'CMAKE_PREFIX_PATH')
-        if env_pref_path is not None:
-            env_pref_path = env_pref_path.split(os.pathsep)
-            env_pref_path = [x for x in env_pref_path if x]  # Filter out 
empty strings
-            if not pref_path:
-                pref_path = []
-            pref_path += env_pref_path
-        if pref_path:
-            
cm_args.append('-DCMAKE_PREFIX_PATH={}'.format(';'.join(pref_path)))
-
-        if not self._preliminary_find_check(name, cm_path, pref_path, 
environment.machines[self.for_machine]):
+        if not self._preliminary_find_check(name, cm_path, 
self.cmakebin.get_cmake_prefix_paths(), environment.machines[self.for_machine]):
             mlog.debug('Preliminary CMake check failed. Aborting.')
             return
         self._detect_dep(name, modules, components, cm_args)
@@ -1125,7 +1111,7 @@
         return s.format(self.__class__.__name__, self.name, self.is_found,
                         self.version_reqs)
 
-    def _get_cmake_info(self):
+    def _get_cmake_info(self, cm_args):
         mlog.debug("Extracting basic cmake information")
         res = {}
 
@@ -1144,6 +1130,7 @@
 
             # Prepare options
             cmake_opts = temp_parser.trace_args() + ['.']
+            cmake_opts += cm_args
             if len(i) > 0:
                 cmake_opts = ['-G', i] + cmake_opts
 
@@ -1167,12 +1154,17 @@
         except MesonException:
             return None
 
+        def process_paths(l: T.List[str]) -> T.Set[str]:
+            l = [x.split(':') for x in l]
+            l = [x for sublist in l for x in sublist]
+            return set(l)
+
         # Extract the variables and sanity check them
-        root_paths = set(temp_parser.get_cmake_var('MESON_FIND_ROOT_PATH'))
-        
root_paths.update(set(temp_parser.get_cmake_var('MESON_CMAKE_SYSROOT')))
+        root_paths = 
process_paths(temp_parser.get_cmake_var('MESON_FIND_ROOT_PATH'))
+        
root_paths.update(process_paths(temp_parser.get_cmake_var('MESON_CMAKE_SYSROOT')))
         root_paths = sorted(root_paths)
         root_paths = list(filter(lambda x: os.path.isdir(x), root_paths))
-        module_paths = set(temp_parser.get_cmake_var('MESON_PATHS_LIST'))
+        module_paths = 
process_paths(temp_parser.get_cmake_var('MESON_PATHS_LIST'))
         rooted_paths = []
         for j in [Path(x) for x in root_paths]:
             for i in [Path(x) for x in module_paths]:
@@ -1456,8 +1448,15 @@
                     cfgs = [x for x in 
tgt.properties['IMPORTED_CONFIGURATIONS'] if x]
                     cfg = cfgs[0]
 
-                if 'RELEASE' in cfgs:
-                    cfg = 'RELEASE'
+                is_debug = self.env.coredata.get_builtin_option('debug');
+                if is_debug:
+                    if 'DEBUG' in cfgs:
+                        cfg = 'DEBUG'
+                    elif 'RELEASE' in cfgs:
+                        cfg = 'RELEASE'
+                else:
+                    if 'RELEASE' in cfgs:
+                        cfg = 'RELEASE'
 
                 if 'IMPORTED_IMPLIB_{}'.format(cfg) in tgt.properties:
                     libraries += [x for x in 
tgt.properties['IMPORTED_IMPLIB_{}'.format(cfg)] if x]
@@ -1837,14 +1836,22 @@
         # Ensure that we use USERPROFILE even when inside MSYS, MSYS2, Cygwin, 
etc.
         if 'USERPROFILE' not in os.environ:
             return path
-        # Ignore executables in the WindowsApps directory which are
-        # zero-sized wrappers that magically open the Windows Store to
-        # install the application.
+        # The WindowsApps directory is a bit of a problem. It contains
+        # some zero-sized .exe files which have "reparse points", that
+        # might either launch an installed application, or might open
+        # a page in the Windows Store to download the application.
+        #
+        # To handle the case where the python interpreter we're
+        # running on came from the Windows Store, if we see the
+        # WindowsApps path in the search path, replace it with
+        # dirname(sys.executable).
         appstore_dir = Path(os.environ['USERPROFILE']) / 'AppData' / 'Local' / 
'Microsoft' / 'WindowsApps'
         paths = []
         for each in path.split(os.pathsep):
             if Path(each) != appstore_dir:
                 paths.append(each)
+            elif 'WindowsApps' in sys.executable:
+                paths.append(os.path.dirname(sys.executable))
         return os.pathsep.join(paths)
 
     @staticmethod
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.54.2/mesonbuild/dependencies/boost.py 
new/meson-0.54.3/mesonbuild/dependencies/boost.py
--- old/meson-0.54.2/mesonbuild/dependencies/boost.py   2020-05-15 
09:23:18.000000000 +0200
+++ new/meson-0.54.3/mesonbuild/dependencies/boost.py   2020-06-14 
21:40:08.000000000 +0200
@@ -22,7 +22,7 @@
 from .. import mesonlib
 from ..environment import Environment
 
-from .base import (DependencyException, ExternalDependency)
+from .base import DependencyException, ExternalDependency, PkgConfigDependency
 from .misc import threads_factory
 
 # On windows 3 directory layouts are supported:
@@ -189,13 +189,13 @@
     def __lt__(self, other: T.Any) -> bool:
         if isinstance(other, BoostLibraryFile):
             return (
-                self.mod_name, self.version_lib, self.arch, self.static,
+                self.mod_name, self.static, self.version_lib, self.arch,
                 not self.mt, not self.runtime_static,
                 not self.debug, self.runtime_debug, self.python_debug,
                 self.stlport, self.deprecated_iostreams,
                 self.name,
             ) < (
-                other.mod_name, other.version_lib, other.arch, other.static,
+                other.mod_name, other.static, other.version_lib, other.arch,
                 not other.mt, not other.runtime_static,
                 not other.debug, other.runtime_debug, other.python_debug,
                 other.stlport, other.deprecated_iostreams,
@@ -605,6 +605,17 @@
                 roots += paths
                 return roots  # Do not add system paths if BOOST_ROOT is 
present
 
+        # Try getting the BOOST_ROOT from a boost.pc if it exists. This 
primarely
+        # allows BoostDependency to find boost from Conan. See #5438
+        try:
+            boost_pc = PkgConfigDependency('boost', self.env, {'required': 
False})
+            if boost_pc.found():
+                boost_root = boost_pc.get_pkgconfig_variable('prefix', 
{'default': None})
+                if boost_root:
+                    roots += [Path(boost_root)]
+        except DependencyException:
+            pass
+
         # Add roots from system paths
         inc_paths = [Path(x) for x in 
self.clib_compiler.get_default_include_dirs()]
         inc_paths = [x.parent for x in inc_paths if x.exists()]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.54.2/mesonbuild/dependencies/cuda.py 
new/meson-0.54.3/mesonbuild/dependencies/cuda.py
--- old/meson-0.54.2/mesonbuild/dependencies/cuda.py    2020-03-23 
18:22:02.000000000 +0100
+++ new/meson-0.54.3/mesonbuild/dependencies/cuda.py    2020-06-14 
21:40:08.000000000 +0200
@@ -157,11 +157,15 @@
 
         mlog.debug('Falling back to extracting version from path')
         path_version_regex = self.path_version_win_regex if self._is_windows() 
else self.path_version_nix_regex
-        m = path_version_regex.match(os.path.basename(path))
-        if m:
-            return m[1]
+        try:
+            m = path_version_regex.match(os.path.basename(path))
+            if m:
+                return m.group(1)
+            else:
+                mlog.warning('Could not detect CUDA Toolkit version for 
{}'.format(path))
+        except Exception as e:
+            mlog.warning('Could not detect CUDA Toolkit version for {}: 
{}'.format(path, str(e)))
 
-        mlog.warning('Could not detect CUDA Toolkit version for 
{}'.format(path))
         return '0.0'
 
     def _read_toolkit_version_txt(self, path):
@@ -172,7 +176,7 @@
                 version_str = version_file.readline() # e.g. 'CUDA Version 
10.1.168'
                 m = self.toolkit_version_regex.match(version_str)
                 if m:
-                    return self._strip_patch_version(m[1])
+                    return self._strip_patch_version(m.group(1))
         except Exception as e:
             mlog.debug('Could not read CUDA Toolkit\'s version file {}: 
{}'.format(version_file_path, str(e)))
 
@@ -192,7 +196,7 @@
                 raise DependencyException(msg.format(arch, 'Windows'))
             return os.path.join('lib', libdirs[arch])
         elif machine.is_linux():
-            libdirs = {'x86_64': 'lib64', 'ppc64': 'lib'}
+            libdirs = {'x86_64': 'lib64', 'ppc64': 'lib', 'aarch64': 'lib64'}
             if arch not in libdirs:
                 raise DependencyException(msg.format(arch, 'Linux'))
             return libdirs[arch]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.54.2/mesonbuild/envconfig.py 
new/meson-0.54.3/mesonbuild/envconfig.py
--- old/meson-0.54.2/mesonbuild/envconfig.py    2020-05-15 09:23:18.000000000 
+0200
+++ new/meson-0.54.3/mesonbuild/envconfig.py    2020-06-14 21:40:08.000000000 
+0200
@@ -64,7 +64,7 @@
     'wasm32',
     'wasm64',
     'x86',
-    'x86_64'
+    'x86_64',
 )
 
 # It would feel more natural to call this "64_BIT_CPU_FAMILES", but
@@ -293,6 +293,16 @@
         """Machine is illumos or Solaris?"""
         return self.system == 'sunos'
 
+    def is_hurd(self) -> bool:
+        """
+        Machine is GNU/Hurd?
+        """
+        return self.system == 'gnu'
+
+    def is_irix(self) -> bool:
+        """Machine is IRIX?"""
+        return self.system.startswith('irix')
+
     # Various prefixes and suffixes for import libraries, shared libraries,
     # static libraries, and executables.
     # Versioning is added to these names in the backends as-needed.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.54.2/mesonbuild/environment.py 
new/meson-0.54.3/mesonbuild/environment.py
--- old/meson-0.54.2/mesonbuild/environment.py  2020-05-15 09:23:18.000000000 
+0200
+++ new/meson-0.54.3/mesonbuild/environment.py  2020-06-14 21:40:08.000000000 
+0200
@@ -346,6 +346,9 @@
         trial = 'sparc64'
     elif trial in {'mipsel', 'mips64el'}:
         trial = trial.rstrip('el')
+    elif trial in {'ip30', 'ip35'}:
+        trial = 'mips64'
+
 
     # On Linux (and maybe others) there can be any mixture of 32/64 bit code in
     # the kernel, Python, system, 32-bit chroot on 64-bit host, etc. The only
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.54.2/mesonbuild/interpreter.py 
new/meson-0.54.3/mesonbuild/interpreter.py
--- old/meson-0.54.2/mesonbuild/interpreter.py  2020-05-15 09:23:11.000000000 
+0200
+++ new/meson-0.54.3/mesonbuild/interpreter.py  2020-06-14 21:40:08.000000000 
+0200
@@ -40,6 +40,7 @@
 import uuid
 import re
 import shlex
+import stat
 import subprocess
 import collections
 from itertools import chain
@@ -2424,7 +2425,19 @@
         elif os.path.isfile(f) and not f.startswith('/dev'):
             srcdir = Path(self.environment.get_source_dir())
             builddir = Path(self.environment.get_build_dir())
-            f = Path(f).resolve()
+            try:
+                f = Path(f).resolve()
+            except OSError:
+                f = Path(f)
+                s = f.stat()
+                if (hasattr(s, 'st_file_attributes') and
+                        s.st_file_attributes & 
stat.FILE_ATTRIBUTE_REPARSE_POINT != 0 and
+                        s.st_reparse_tag == stat.IO_REPARSE_TAG_APPEXECLINK):
+                    # This is a Windows Store link which we can't
+                    # resolve, so just do our best otherwise.
+                    f = f.parent.resolve() / f.name
+                else:
+                    raise
             if builddir in f.parents:
                 return
             if srcdir in f.parents:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.54.2/mesonbuild/linkers.py 
new/meson-0.54.3/mesonbuild/linkers.py
--- old/meson-0.54.2/mesonbuild/linkers.py      2020-05-15 09:23:18.000000000 
+0200
+++ new/meson-0.54.3/mesonbuild/linkers.py      2020-06-14 21:40:08.000000000 
+0200
@@ -436,6 +436,10 @@
         """Arguments to make all warnings errors."""
         return []
 
+    def headerpad_args(self) -> T.List[str]:
+        # Only used by the Apple linker
+        return []
+
     def bitcode_args(self) -> T.List[str]:
         raise mesonlib.MesonException('This linker does not support bitcode 
bundles')
 
@@ -650,8 +654,8 @@
     def no_undefined_args(self) -> T.List[str]:
         return self._apply_prefix('-undefined,error')
 
-    def get_always_args(self) -> T.List[str]:
-        return self._apply_prefix('-headerpad_max_install_names') + 
super().get_always_args()
+    def headerpad_args(self) -> T.List[str]:
+        return self._apply_prefix('-headerpad_max_install_names')
 
     def bitcode_args(self) -> T.List[str]:
         return self._apply_prefix('-bitcode_bundle')
@@ -679,9 +683,7 @@
                          install_rpath: str) -> T.List[str]:
         if not rpath_paths and not install_rpath and not build_rpath:
             return []
-        # Ensure that there is enough space for install_name_tool in-place
-        # editing of large RPATHs
-        args = self._apply_prefix('-headerpad_max_install_names')
+        args = []
         # @loader_path is the equivalent of $ORIGIN on macOS
         # https://stackoverflow.com/q/26280738
         origin_placeholder = '@loader_path'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.54.2/mesonbuild/mdist.py 
new/meson-0.54.3/mesonbuild/mdist.py
--- old/meson-0.54.2/mesonbuild/mdist.py        2020-05-15 09:23:11.000000000 
+0200
+++ new/meson-0.54.3/mesonbuild/mdist.py        2020-06-14 21:40:08.000000000 
+0200
@@ -210,7 +210,7 @@
     unpacked_src_dir = unpacked_files[0]
     with open(os.path.join(bld_root, 'meson-info', 'intro-buildoptions.json')) 
as boptions:
         meson_command += ['-D{name}={value}'.format(**o) for o in 
json.load(boptions)
-                          if o['name'] not in ['backend', 'install_umask']]
+                          if o['name'] not in ['backend', 'install_umask', 
'buildtype']]
     meson_command += extra_meson_args
 
     ret = run_dist_steps(meson_command, unpacked_src_dir, builddir, 
installdir, ninja_bin)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.54.2/mesonbuild/mesonlib.py 
new/meson-0.54.3/mesonbuild/mesonlib.py
--- old/meson-0.54.2/mesonbuild/mesonlib.py     2020-05-15 09:23:18.000000000 
+0200
+++ new/meson-0.54.3/mesonbuild/mesonlib.py     2020-06-14 21:40:08.000000000 
+0200
@@ -507,6 +507,12 @@
 def is_freebsd() -> bool:
     return platform.system().lower() == 'freebsd'
 
+def is_irix() -> bool:
+    return platform.system().startswith('irix')
+
+def is_hurd() -> bool:
+    return platform.system().lower() == 'gnu'
+
 
 def exe_exists(arglist: T.List[str]) -> bool:
     try:
@@ -723,7 +729,7 @@
                 return 'lib/' + archpath
         except Exception:
             pass
-    if is_freebsd():
+    if is_freebsd() or is_irix():
         return 'lib'
     if os.path.isdir('/usr/lib64') and not os.path.islink('/usr/lib64'):
         return 'lib64'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.54.2/mesonbuild/modules/cmake.py 
new/meson-0.54.3/mesonbuild/modules/cmake.py
--- old/meson-0.54.2/mesonbuild/modules/cmake.py        2020-02-25 
19:38:34.000000000 +0100
+++ new/meson-0.54.3/mesonbuild/modules/cmake.py        2020-06-14 
21:40:08.000000000 +0200
@@ -252,8 +252,7 @@
         (ofile_path, ofile_fname) = os.path.split(os.path.join(state.subdir, 
'{}Config.cmake'.format(name)))
         ofile_abs = os.path.join(state.environment.build_dir, ofile_path, 
ofile_fname)
 
-        if 'install_dir' not in kwargs:
-            install_dir = 
os.path.join(state.environment.coredata.get_builtin_option('libdir'), 'cmake', 
name)
+        install_dir = kwargs.get('install_dir', 
os.path.join(state.environment.coredata.get_builtin_option('libdir'), 'cmake', 
name))
         if not isinstance(install_dir, str):
             raise mesonlib.MesonException('"install_dir" must be a string.')
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.54.2/mesonbuild/scripts/symbolextractor.py 
new/meson-0.54.3/mesonbuild/scripts/symbolextractor.py
--- old/meson-0.54.2/mesonbuild/scripts/symbolextractor.py      2020-05-15 
09:23:11.000000000 +0200
+++ new/meson-0.54.3/mesonbuild/scripts/symbolextractor.py      2020-06-14 
21:40:08.000000000 +0200
@@ -94,7 +94,7 @@
         return None, e
     return output, None
 
-def linux_syms(libfilename: str, outfilename: str):
+def gnu_syms(libfilename: str, outfilename: str):
     # Get the name of the library
     output = call_tool('readelf', ['-d', libfilename])
     if not output:
@@ -230,8 +230,8 @@
         # determine the correct toolset, but we would need to use the correct
         # `nm`, `readelf`, etc, from the cross info which requires refactoring.
         dummy_syms(outfilename)
-    elif mesonlib.is_linux():
-        linux_syms(libfilename, outfilename)
+    elif mesonlib.is_linux() or mesonlib.is_hurd():
+        gnu_syms(libfilename, outfilename)
     elif mesonlib.is_osx():
         osx_syms(libfilename, outfilename)
     elif mesonlib.is_windows():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.54.2/run_project_tests.py 
new/meson-0.54.3/run_project_tests.py
--- old/meson-0.54.2/run_project_tests.py       2020-05-15 09:23:11.000000000 
+0200
+++ new/meson-0.54.3/run_project_tests.py       2020-06-15 18:46:13.000000000 
+0200
@@ -381,6 +381,18 @@
     return res
 
 
+# There are some class variables and such that cahce
+# information. Clear all of these. The better solution
+# would be to change the code so that no state is persisted
+# but that would be a lot of work given that Meson was originally
+# coded to run as a batch process.
+def clear_internal_caches():
+    import mesonbuild.interpreterbase
+    from mesonbuild.dependencies import CMakeDependency
+    from mesonbuild.mesonlib import PerMachine
+    mesonbuild.interpreterbase.FeatureNew.feature_registry = {}
+    CMakeDependency.class_cmakeinfo = PerMachine(None, None)
+
 def run_test_inprocess(testdir):
     old_stdout = sys.stdout
     sys.stdout = mystdout = StringIO()
@@ -496,6 +508,7 @@
     force_regenerate()
 
     # Test in-process
+    clear_internal_caches()
     test_start = time.time()
     (returncode, tstdo, tstde, test_log) = run_test_inprocess(test_build_dir)
     testresult.add_step(BuildStep.test, tstdo, tstde, test_log, time.time() - 
test_start)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/meson-0.54.2/run_unittests.py 
new/meson-0.54.3/run_unittests.py
--- old/meson-0.54.2/run_unittests.py   2020-05-15 09:23:18.000000000 +0200
+++ new/meson-0.54.3/run_unittests.py   2020-06-14 21:40:08.000000000 +0200
@@ -7818,6 +7818,9 @@
     test_list = []
     for arg in argv:
         if arg.startswith('-'):
+            if arg in ('-f', '--failfast'):
+                arg = '--exitfirst'
+            pytest_args.append(arg)
             continue
         # ClassName.test_name => 'ClassName and test_name'
         if '.' in arg:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.54.2/test cases/cmake/1 
basic/subprojects/cmMod/CMakeLists.txt" "new/meson-0.54.3/test cases/cmake/1 
basic/subprojects/cmMod/CMakeLists.txt"
--- "old/meson-0.54.2/test cases/cmake/1 
basic/subprojects/cmMod/CMakeLists.txt"        2020-02-25 19:38:35.000000000 
+0100
+++ "new/meson-0.54.3/test cases/cmake/1 
basic/subprojects/cmMod/CMakeLists.txt"        2020-06-14 21:40:08.000000000 
+0200
@@ -8,5 +8,7 @@
 add_definitions("-DDO_NOTHING_JUST_A_FLAG=1")
 
 add_library(cmModLib++ SHARED cmMod.cpp)
+target_compile_definitions(cmModLib++ PRIVATE MESON_MAGIC_FLAG=21)
+target_compile_definitions(cmModLib++ INTERFACE MESON_MAGIC_FLAG=42)
 include(GenerateExportHeader)
 generate_export_header(cmModLib++)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.54.2/test cases/cmake/1 
basic/subprojects/cmMod/cmMod.cpp" "new/meson-0.54.3/test cases/cmake/1 
basic/subprojects/cmMod/cmMod.cpp"
--- "old/meson-0.54.2/test cases/cmake/1 basic/subprojects/cmMod/cmMod.cpp"     
2019-06-16 20:54:18.000000000 +0200
+++ "new/meson-0.54.3/test cases/cmake/1 basic/subprojects/cmMod/cmMod.cpp"     
2020-06-14 21:40:08.000000000 +0200
@@ -2,6 +2,10 @@
 
 using namespace std;
 
+#if MESON_MAGIC_FLAG != 21
+#error "Invalid MESON_MAGIC_FLAG (private)"
+#endif
+
 cmModClass::cmModClass(string foo) {
   str = foo + " World";
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.54.2/test cases/cmake/1 
basic/subprojects/cmMod/cmMod.hpp" "new/meson-0.54.3/test cases/cmake/1 
basic/subprojects/cmMod/cmMod.hpp"
--- "old/meson-0.54.2/test cases/cmake/1 basic/subprojects/cmMod/cmMod.hpp"     
2020-02-25 19:38:35.000000000 +0100
+++ "new/meson-0.54.3/test cases/cmake/1 basic/subprojects/cmMod/cmMod.hpp"     
2020-06-14 21:40:08.000000000 +0200
@@ -3,6 +3,10 @@
 #include "cmmodlib++_export.h"
 #include <string>
 
+#if MESON_MAGIC_FLAG != 42 && MESON_MAGIC_FLAG != 21
+#error "Invalid MESON_MAGIC_FLAG"
+#endif
+
 class CMMODLIB___EXPORT cmModClass {
 private:
   std::string str;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.54.2/test cases/cmake/10 header 
only/main.cpp" "new/meson-0.54.3/test cases/cmake/10 header only/main.cpp"
--- "old/meson-0.54.2/test cases/cmake/10 header only/main.cpp" 2019-12-04 
19:45:50.000000000 +0100
+++ "new/meson-0.54.3/test cases/cmake/10 header only/main.cpp" 2020-06-14 
21:40:08.000000000 +0200
@@ -3,8 +3,14 @@
 
 using namespace std;
 
+#define EXPECTED "Hello World compDef 42"
+
 int main(void) {
   cmModClass obj("Hello");
   cout << obj.getStr() << endl;
+  if (obj.getStr() != EXPECTED) {
+    cerr << "Expected: '" << EXPECTED << "'" << endl;
+    return 1;
+  }
   return 0;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.54.2/test cases/cmake/10 header 
only/subprojects/cmMod/CMakeLists.txt" "new/meson-0.54.3/test cases/cmake/10 
header only/subprojects/cmMod/CMakeLists.txt"
--- "old/meson-0.54.2/test cases/cmake/10 header 
only/subprojects/cmMod/CMakeLists.txt" 2019-08-28 19:15:39.000000000 +0200
+++ "new/meson-0.54.3/test cases/cmake/10 header 
only/subprojects/cmMod/CMakeLists.txt" 2020-06-14 21:40:08.000000000 +0200
@@ -9,3 +9,4 @@
 set_target_properties(cmModLib PROPERTIES INTERFACE_COMPILE_OPTIONS 
"-DCMAKE_FLAG_MUST_BE_PRESENT")
 target_include_directories(cmModLib INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}" 
"${CMAKE_CURRENT_SOURCE_DIR}/include")
 target_compile_definitions(cmModLib INTERFACE 
-DCMAKE_COMPILER_DEFINE_STR="compDef")
+target_compile_definitions(cmModLib INTERFACE MESON_MAGIC_FLAG=42)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.54.2/test cases/cmake/10 header 
only/subprojects/cmMod/include/cmMod.hpp" "new/meson-0.54.3/test cases/cmake/10 
header only/subprojects/cmMod/include/cmMod.hpp"
--- "old/meson-0.54.2/test cases/cmake/10 header 
only/subprojects/cmMod/include/cmMod.hpp"      2019-08-28 19:15:39.000000000 
+0200
+++ "new/meson-0.54.3/test cases/cmake/10 header 
only/subprojects/cmMod/include/cmMod.hpp"      2020-06-14 21:40:08.000000000 
+0200
@@ -6,6 +6,9 @@
 #error "The flag CMAKE_FLAG_MUST_BE_PRESENT was not set"
 #endif
 
+#define xstr(s) str(s)
+#define str(s) #s
+
 class cmModClass {
   private:
     std::string str;
@@ -13,6 +16,8 @@
     cmModClass(std::string foo) {
       str = foo + " World ";
       str += CMAKE_COMPILER_DEFINE_STR;
+      str += ' ';
+      str += xstr(MESON_MAGIC_FLAG);
     }
 
     inline std::string getStr() const { return str; }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.54.2/test cases/cmake/19 cmake 
file/foolib.cmake.in" "new/meson-0.54.3/test cases/cmake/19 cmake 
file/foolib.cmake.in"
--- "old/meson-0.54.2/test cases/cmake/19 cmake file/foolib.cmake.in"   
1970-01-01 01:00:00.000000000 +0100
+++ "new/meson-0.54.3/test cases/cmake/19 cmake file/foolib.cmake.in"   
2020-06-14 21:40:08.000000000 +0200
@@ -0,0 +1 @@
+@foo@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.54.2/test cases/cmake/19 cmake 
file/meson.build" "new/meson-0.54.3/test cases/cmake/19 cmake file/meson.build"
--- "old/meson-0.54.2/test cases/cmake/19 cmake file/meson.build"       
1970-01-01 01:00:00.000000000 +0100
+++ "new/meson-0.54.3/test cases/cmake/19 cmake file/meson.build"       
2020-06-15 00:02:31.000000000 +0200
@@ -0,0 +1,14 @@
+project(
+  'cmake config file',
+)
+
+cmake = import('cmake')
+
+cmake_conf = configuration_data()
+cmake_conf.set_quoted('foo', 'bar')
+cmake.configure_package_config_file(
+  name : 'foolib',
+  input : 'foolib.cmake.in',
+  install_dir : get_option('libdir') / 'cmake',
+  configuration : cmake_conf,
+)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.54.2/test cases/cmake/19 cmake 
file/test.json" "new/meson-0.54.3/test cases/cmake/19 cmake file/test.json"
--- "old/meson-0.54.2/test cases/cmake/19 cmake file/test.json" 1970-01-01 
01:00:00.000000000 +0100
+++ "new/meson-0.54.3/test cases/cmake/19 cmake file/test.json" 2020-06-14 
21:40:08.000000000 +0200
@@ -0,0 +1,5 @@
+{
+  "installed": [
+    {"file": "usr/lib/cmake/foolibConfig.cmake", "type": "file"}
+  ]
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.54.2/test cases/cmake/2 
advanced/meson.build" "new/meson-0.54.3/test cases/cmake/2 advanced/meson.build"
--- "old/meson-0.54.2/test cases/cmake/2 advanced/meson.build"  2020-02-25 
19:03:15.000000000 +0100
+++ "new/meson-0.54.3/test cases/cmake/2 advanced/meson.build"  2020-06-15 
00:01:55.000000000 +0200
@@ -5,6 +5,13 @@
   error('MESON_SKIP_TEST: zlib is not installed')
 endif
 
+py3 = import('python').find_installation('python3')
+get_envvar = '''import os, sys; print(os.environ.get('@0@', 0), end='')'''
+# Remove this env var from azure-pipelines.yml when fixed
+if run_command(py3, '-c', get_envvar.format('CI_JOB_VS2017')).stdout() == '1'
+  error('MESON_SKIP_TEST: broken for vs2017 jobs')
+endif
+
 cm = import('cmake')
 
 # Test the "normal" subproject call
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.54.2/test cases/cmake/2 
advanced/subprojects/cmMod/CMakeLists.txt" "new/meson-0.54.3/test cases/cmake/2 
advanced/subprojects/cmMod/CMakeLists.txt"
--- "old/meson-0.54.2/test cases/cmake/2 
advanced/subprojects/cmMod/CMakeLists.txt"     2019-12-29 23:47:27.000000000 
+0100
+++ "new/meson-0.54.3/test cases/cmake/2 
advanced/subprojects/cmMod/CMakeLists.txt"     2020-06-14 21:40:08.000000000 
+0200
@@ -20,7 +20,7 @@
 add_executable(testEXE main.cpp)
 
 target_link_libraries(cmModLib       ZLIB::ZLIB)
-target_link_libraries(cmModLibStatic ZLIB::ZLIB)
+target_link_libraries(cmModLibStatic ;ZLIB::ZLIB;)
 target_link_libraries(testEXE cmModLib)
 
 target_compile_definitions(cmModLibStatic PUBLIC CMMODLIB_STATIC_DEFINE)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.54.2/test cases/cmake/5 object 
library/meson.build" "new/meson-0.54.3/test cases/cmake/5 object 
library/meson.build"
--- "old/meson-0.54.2/test cases/cmake/5 object library/meson.build"    
2020-02-25 19:03:27.000000000 +0100
+++ "new/meson-0.54.3/test cases/cmake/5 object library/meson.build"    
2020-06-15 00:02:05.000000000 +0200
@@ -5,6 +5,13 @@
   error('MESON_SKIP_TEST: zlib is not installed')
 endif
 
+py3 = import('python').find_installation('python3')
+get_envvar = '''import os, sys; print(os.environ.get('@0@', 0), end='')'''
+# Remove this env var from azure-pipelines.yml when fixed
+if run_command(py3, '-c', get_envvar.format('CI_JOB_VS2017')).stdout() == '1'
+  error('MESON_SKIP_TEST: broken for vs2017 jobs')
+endif
+
 cm = import('cmake')
 
 sub_pro = cm.subproject('cmObjLib')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.54.2/test cases/cmake/7 cmake 
options/subprojects/cmOpts/CMakeLists.txt" "new/meson-0.54.3/test cases/cmake/7 
cmake options/subprojects/cmOpts/CMakeLists.txt"
--- "old/meson-0.54.2/test cases/cmake/7 cmake 
options/subprojects/cmOpts/CMakeLists.txt"       2019-06-16 20:54:18.000000000 
+0200
+++ "new/meson-0.54.3/test cases/cmake/7 cmake 
options/subprojects/cmOpts/CMakeLists.txt"       2020-06-14 21:40:08.000000000 
+0200
@@ -1,5 +1,10 @@
 cmake_minimum_required(VERSION 3.7)
+project(testPro)
 
 if(NOT "${SOME_CMAKE_VAR}" STREQUAL "something")
   message(FATAL_ERROR "Setting the CMake var failed")
 endif()
+
+if(NOT "${CMAKE_PREFIX_PATH}" STREQUAL "val1;val2")
+  message(FATAL_ERROR "Setting the CMAKE_PREFIX_PATH failed 
'${CMAKE_PREFIX_PATH}'")
+endif()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.54.2/test cases/cmake/7 cmake 
options/test.json" "new/meson-0.54.3/test cases/cmake/7 cmake options/test.json"
--- "old/meson-0.54.2/test cases/cmake/7 cmake options/test.json"       
1970-01-01 01:00:00.000000000 +0100
+++ "new/meson-0.54.3/test cases/cmake/7 cmake options/test.json"       
2020-06-14 21:40:08.000000000 +0200
@@ -0,0 +1,9 @@
+{
+  "matrix": {
+    "options": {
+      "cmake_prefix_path": [
+        { "val": ["val1", "val2"] }
+      ]
+    }
+  }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.54.2/test cases/fortran/7 
generated/meson.build" "new/meson-0.54.3/test cases/fortran/7 
generated/meson.build"
--- "old/meson-0.54.2/test cases/fortran/7 generated/meson.build"       
2020-02-25 18:41:07.000000000 +0100
+++ "new/meson-0.54.3/test cases/fortran/7 generated/meson.build"       
2020-06-15 00:10:51.000000000 +0200
@@ -6,6 +6,13 @@
 conf_data = configuration_data()
 conf_data.set('ONE', 1)
 conf_data.set('TWO', 2)
+conf_data.set('THREE', 3)
+
+outfile = configure_file(
+      input : 'mod3.fpp', output : 'mod3.f90', configuration : conf_data)
+# Manually build absolute path to source file to test
+# https://github.com/mesonbuild/meson/issues/7265
+three = library('mod3', meson.current_build_dir() / 'mod3.f90')
 
 templates_basenames = ['mod2', 'mod1']
 generated_sources = []
@@ -18,5 +25,5 @@
 endforeach
 
 sources = ['prog.f90'] + generated_sources
-exe = executable('generated', sources)
+exe = executable('generated', sources, link_with: three)
 test('generated', exe)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.54.2/test cases/fortran/7 
generated/mod1.fpp" "new/meson-0.54.3/test cases/fortran/7 generated/mod1.fpp"
--- "old/meson-0.54.2/test cases/fortran/7 generated/mod1.fpp"  2017-05-17 
23:09:20.000000000 +0200
+++ "new/meson-0.54.3/test cases/fortran/7 generated/mod1.fpp"  2020-06-14 
21:40:08.000000000 +0200
@@ -1,6 +1,6 @@
 module mod1
-  implicit none
+implicit none
 
-  integer, parameter :: modval1 = @ONE@
+integer, parameter :: modval1 = @ONE@
 
 end module mod1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.54.2/test cases/fortran/7 
generated/mod2.fpp" "new/meson-0.54.3/test cases/fortran/7 generated/mod2.fpp"
--- "old/meson-0.54.2/test cases/fortran/7 generated/mod2.fpp"  2017-05-17 
23:09:20.000000000 +0200
+++ "new/meson-0.54.3/test cases/fortran/7 generated/mod2.fpp"  2020-06-14 
21:40:08.000000000 +0200
@@ -1,7 +1,7 @@
 module mod2
-  use mod1
-  implicit none
+use mod1, only : modval1
+implicit none
 
-  integer, parameter :: modval2 = @TWO@
+integer, parameter :: modval2 = @TWO@
 
 end module mod2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.54.2/test cases/fortran/7 
generated/mod3.fpp" "new/meson-0.54.3/test cases/fortran/7 generated/mod3.fpp"
--- "old/meson-0.54.2/test cases/fortran/7 generated/mod3.fpp"  1970-01-01 
01:00:00.000000000 +0100
+++ "new/meson-0.54.3/test cases/fortran/7 generated/mod3.fpp"  2020-06-14 
21:40:08.000000000 +0200
@@ -0,0 +1,6 @@
+module mod3
+implicit none
+
+integer, parameter :: modval3 = @THREE@
+
+end module mod3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.54.2/test cases/fortran/7 
generated/prog.f90" "new/meson-0.54.3/test cases/fortran/7 generated/prog.f90"
--- "old/meson-0.54.2/test cases/fortran/7 generated/prog.f90"  2019-02-28 
21:43:18.000000000 +0100
+++ "new/meson-0.54.3/test cases/fortran/7 generated/prog.f90"  2020-06-14 
21:40:08.000000000 +0200
@@ -1,7 +1,8 @@
-program prog
-use mod2
+program generated
+use mod2, only : modval1, modval2
+use mod3, only : modval3
 implicit none
 
-if (modval1 + modval2 /= 3) stop 1
+if (modval1 + modval2 + modval3 /= 6) error stop
 
-end program prog
+end program generated
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.54.2/test cases/linuxlike/13 cmake 
dependency/cmake_fake1/cmMesonTestF1Config.cmake" "new/meson-0.54.3/test 
cases/linuxlike/13 cmake dependency/cmake_fake1/cmMesonTestF1Config.cmake"
--- "old/meson-0.54.2/test cases/linuxlike/13 cmake 
dependency/cmake_fake1/cmMesonTestF1Config.cmake"   1970-01-01 
01:00:00.000000000 +0100
+++ "new/meson-0.54.3/test cases/linuxlike/13 cmake 
dependency/cmake_fake1/cmMesonTestF1Config.cmake"   2020-06-14 
21:40:08.000000000 +0200
@@ -0,0 +1,9 @@
+find_package(ZLIB)
+
+if(ZLIB_FOUND OR ZLIB_Found)
+  set(cmMesonTestF1_FOUND        ON)
+  set(cmMesonTestF1_LIBRARIES    ${ZLIB_LIBRARY})
+  set(cmMesonTestF1_INCLUDE_DIRS ${ZLIB_INCLUDE_DIR})
+else()
+  set(cmMesonTestF1_FOUND       OFF)
+endif()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.54.2/test cases/linuxlike/13 cmake 
dependency/cmake_fake2/cmMesonTestF2Config.cmake" "new/meson-0.54.3/test 
cases/linuxlike/13 cmake dependency/cmake_fake2/cmMesonTestF2Config.cmake"
--- "old/meson-0.54.2/test cases/linuxlike/13 cmake 
dependency/cmake_fake2/cmMesonTestF2Config.cmake"   1970-01-01 
01:00:00.000000000 +0100
+++ "new/meson-0.54.3/test cases/linuxlike/13 cmake 
dependency/cmake_fake2/cmMesonTestF2Config.cmake"   2020-06-14 
21:40:08.000000000 +0200
@@ -0,0 +1,9 @@
+find_package(ZLIB)
+
+if(ZLIB_FOUND OR ZLIB_Found)
+  set(cmMesonTestF2_FOUND        ON)
+  set(cmMesonTestF2_LIBRARIES    ${ZLIB_LIBRARY})
+  set(cmMesonTestF2_INCLUDE_DIRS ${ZLIB_INCLUDE_DIR})
+else()
+  set(cmMesonTestF2_FOUND       OFF)
+endif()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.54.2/test cases/linuxlike/13 cmake 
dependency/meson.build" "new/meson-0.54.3/test cases/linuxlike/13 cmake 
dependency/meson.build"
--- "old/meson-0.54.2/test cases/linuxlike/13 cmake dependency/meson.build"     
2020-05-15 09:23:11.000000000 +0200
+++ "new/meson-0.54.3/test cases/linuxlike/13 cmake dependency/meson.build"     
2020-06-14 22:17:21.000000000 +0200
@@ -41,6 +41,8 @@
 # Try to find cmMesonTestDep in a custom prefix
 # setup_env.json is used by run_project_tests.py:_run_test to point to 
./cmake_pref_env/
 depPrefEnv = dependency('cmMesonTestDep', required : true, method : 'cmake')
+depPrefEnv1 = dependency('cmMesonTestF1', required : true, method : 'cmake')
+depPrefEnv2 = dependency('cmMesonTestF2', required : true, method : 'cmake')
 
 # Try to find a dependency with a custom CMake module
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' "old/meson-0.54.2/test cases/linuxlike/13 cmake 
dependency/test.json" "new/meson-0.54.3/test cases/linuxlike/13 cmake 
dependency/test.json"
--- "old/meson-0.54.2/test cases/linuxlike/13 cmake dependency/test.json"       
2020-03-23 18:22:09.000000000 +0100
+++ "new/meson-0.54.3/test cases/linuxlike/13 cmake dependency/test.json"       
2020-06-14 21:40:08.000000000 +0200
@@ -1,5 +1,5 @@
 {
   "env": {
-    "CMAKE_PREFIX_PATH": "@ROOT@/cmake_pref_env"
+    "CMAKE_PREFIX_PATH": 
"@ROOT@/cmake_fake1;@ROOT@/cmake_fake2:@ROOT@/cmake_pref_env"
   }
 }


Reply via email to