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" } }
