Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package meson for openSUSE:Factory checked in at 2021-10-29 22:32:54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/meson (Old) and /work/SRC/openSUSE:Factory/.meson.new.1890 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "meson" Fri Oct 29 22:32:54 2021 rev:76 rq:927474 version:0.59.3 Changes: -------- --- /work/SRC/openSUSE:Factory/meson/meson.changes 2021-10-01 22:29:02.381372527 +0200 +++ /work/SRC/openSUSE:Factory/.meson.new.1890/meson.changes 2021-10-29 22:32:55.403652435 +0200 @@ -1,0 +2,7 @@ +Mon Oct 25 08:32:35 UTC 2021 - Bj??rn Lie <bjorn....@gmail.com> + +- Update to version 0.59.3: + + No upstream changes provided. +- Drop meson-rust-1.55.patch: Fixed upstream. + +------------------------------------------------------------------- Old: ---- meson-0.59.2.tar.gz meson-0.59.2.tar.gz.asc meson-rust-1.55.patch New: ---- meson-0.59.3.tar.gz meson-0.59.3.tar.gz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ meson.spec ++++++ --- /var/tmp/diff_new_pack.gF8lt6/_old 2021-10-29 22:32:56.075652689 +0200 +++ /var/tmp/diff_new_pack.gF8lt6/_new 2021-10-29 22:32:56.079652690 +0200 @@ -28,7 +28,7 @@ %{!?vim_data_dir:%global vim_data_dir %{_datadir}/vim} %bcond_with setuptools Name: meson%{name_ext} -Version: 0.59.2 +Version: 0.59.3 Release: 0 Summary: Python-based build system License: Apache-2.0 @@ -41,8 +41,6 @@ Patch1: meson-test-installed-bin.patch # PATCH-FEATURE-OPENSUSE meson-distutils.patch tchva...@suse.com -- build and install using distutils instead of full setuptools Patch2: meson-distutils.patch -# PATCH-FIX-UPSTREAM meson-rust-1.55.patch gh#mesonbuikd/meson#9310 dims...@opensuse.org -- Fix test suite with rust 1.55 -Patch3: meson-rust-1.55.patch BuildRequires: fdupes BuildRequires: python-rpm-macros BuildRequires: python3-base @@ -165,9 +163,6 @@ %if !%{with setuptools} %patch2 -p1 %endif -pushd "test cases/rust/5 polyglot static" -%patch3 -p4 -popd # We do not have gmock available at this moment - can't run the test suite for it rm -r "test cases/frameworks/3 gmock" \ ++++++ meson-0.59.2.tar.gz -> meson-0.59.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.2/PKG-INFO new/meson-0.59.3/PKG-INFO --- old/meson-0.59.2/PKG-INFO 2021-09-28 19:15:11.939847000 +0200 +++ new/meson-0.59.3/PKG-INFO 2021-10-23 19:08:57.638149000 +0200 @@ -1,12 +1,11 @@ Metadata-Version: 2.1 Name: meson -Version: 0.59.2 +Version: 0.59.3 Summary: A high performance build system Home-page: https://mesonbuild.com Author: Jussi Pakkanen Author-email: jpakk...@gmail.com License: Apache License, Version 2.0 -Description: Meson is a cross-platform build system designed to be both as fast and as user friendly as possible. It supports many languages and compilers, including GCC, Clang, PGI, Intel, and Visual Studio. Its build definitions are written in a simple non-Turing complete DSL. Keywords: meson,mesonbuild,build system,cmake Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable @@ -27,3 +26,7 @@ Requires-Python: >=3.6 Provides-Extra: progress Provides-Extra: typing +License-File: COPYING + +Meson is a cross-platform build system designed to be both as fast and as user friendly as possible. It supports many languages and compilers, including GCC, Clang, PGI, Intel, and Visual Studio. Its build definitions are written in a simple non-Turing complete DSL. + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.2/man/meson.1 new/meson-0.59.3/man/meson.1 --- old/meson-0.59.2/man/meson.1 2021-09-28 19:04:57.000000000 +0200 +++ new/meson-0.59.3/man/meson.1 2021-10-23 18:36:11.000000000 +0200 @@ -1,4 +1,4 @@ -.TH MESON "1" "September 2021" "meson 0.59.2" "User Commands" +.TH MESON "1" "October 2021" "meson 0.59.3" "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.59.2/meson.egg-info/PKG-INFO new/meson-0.59.3/meson.egg-info/PKG-INFO --- old/meson-0.59.2/meson.egg-info/PKG-INFO 2021-09-28 19:15:06.000000000 +0200 +++ new/meson-0.59.3/meson.egg-info/PKG-INFO 2021-10-23 19:08:50.000000000 +0200 @@ -1,12 +1,11 @@ Metadata-Version: 2.1 Name: meson -Version: 0.59.2 +Version: 0.59.3 Summary: A high performance build system Home-page: https://mesonbuild.com Author: Jussi Pakkanen Author-email: jpakk...@gmail.com License: Apache License, Version 2.0 -Description: Meson is a cross-platform build system designed to be both as fast and as user friendly as possible. It supports many languages and compilers, including GCC, Clang, PGI, Intel, and Visual Studio. Its build definitions are written in a simple non-Turing complete DSL. Keywords: meson,mesonbuild,build system,cmake Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable @@ -27,3 +26,7 @@ Requires-Python: >=3.6 Provides-Extra: progress Provides-Extra: typing +License-File: COPYING + +Meson is a cross-platform build system designed to be both as fast and as user friendly as possible. It supports many languages and compilers, including GCC, Clang, PGI, Intel, and Visual Studio. Its build definitions are written in a simple non-Turing complete DSL. + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.2/meson.egg-info/SOURCES.txt new/meson-0.59.3/meson.egg-info/SOURCES.txt --- old/meson-0.59.2/meson.egg-info/SOURCES.txt 2021-09-28 19:15:06.000000000 +0200 +++ new/meson-0.59.3/meson.egg-info/SOURCES.txt 2021-10-23 19:08:50.000000000 +0200 @@ -2975,6 +2975,9 @@ test cases/unit/10 build_rpath/prog.cc test cases/unit/10 build_rpath/sub/meson.build test cases/unit/10 build_rpath/sub/stuff.c +test cases/unit/100 rlib linkage/lib2.rs +test cases/unit/100 rlib linkage/main.rs +test cases/unit/100 rlib linkage/meson.build test cases/unit/11 cross prog/meson.build test cases/unit/11 cross prog/some_cross_tool.py test cases/unit/11 cross prog/sometool.py diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.2/mesonbuild/backend/ninjabackend.py new/meson-0.59.3/mesonbuild/backend/ninjabackend.py --- old/meson-0.59.2/mesonbuild/backend/ninjabackend.py 2021-08-18 13:22:33.000000000 +0200 +++ new/meson-0.59.3/mesonbuild/backend/ninjabackend.py 2021-10-23 18:36:11.000000000 +0200 @@ -1616,7 +1616,10 @@ args += compilers.get_base_compile_args(base_proxy, rustc) self.generate_generator_list_rules(target) - orderdeps = [os.path.join(t.subdir, t.get_filename()) for t in target.link_targets] + # dependencies need to cause a relink, they're not just for odering + deps = [os.path.join(t.subdir, t.get_filename()) for t in target.link_targets] + + orderdeps: T.List[str] = [] main_rust_file = None for i in target.get_sources(): @@ -1745,6 +1748,8 @@ element = NinjaBuildElement(self.all_outputs, target_name, compiler_name, main_rust_file) if orderdeps: element.add_orderdep(orderdeps) + if deps: + element.add_dep(deps) element.add_item('ARGS', args) element.add_item('targetdep', depfile) element.add_item('cratetype', cratetype) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.2/mesonbuild/backend/xcodebackend.py new/meson-0.59.3/mesonbuild/backend/xcodebackend.py --- old/meson-0.59.2/mesonbuild/backend/xcodebackend.py 2021-08-18 13:22:33.000000000 +0200 +++ new/meson-0.59.3/mesonbuild/backend/xcodebackend.py 2021-10-23 18:36:11.000000000 +0200 @@ -592,7 +592,7 @@ if isinstance(dep, dependencies.AppleFrameworks): for f in dep.frameworks: fw_dict = PbxDict() - objects_dict.add:item(self.native_frameworks[f], fw_dict, f'{f}.framework in Frameworks') + objects_dict.add_item(self.native_frameworks[f], fw_dict, f'{f}.framework in Frameworks') fw_dict.add_item('isa', 'PBXBuildFile') fw_dict.add_item('fileRef', self.native_frameworks_fileref[f], f) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.2/mesonbuild/cmake/toolchain.py new/meson-0.59.3/mesonbuild/cmake/toolchain.py --- old/meson-0.59.2/mesonbuild/cmake/toolchain.py 2021-08-18 13:22:15.000000000 +0200 +++ new/meson-0.59.3/mesonbuild/cmake/toolchain.py 2021-10-23 18:36:11.000000000 +0200 @@ -16,6 +16,7 @@ from .traceparser import CMakeTraceParser from ..envconfig import CMakeSkipCompilerTest from ..mesonlib import MachineChoice +from ..compilers import VisualStudioLikeCompiler from .common import language_map, cmake_get_generator_args from .. import mlog @@ -28,6 +29,7 @@ from .executor import CMakeExecutor from ..envconfig import MachineInfo, Properties, CMakeVariables from ..environment import Environment + from ..compilers import Compiler class CMakeExecScope(Enum): SUBPROJECT = 'subproject' @@ -183,21 +185,30 @@ # Set the compiler variables for lang, comp_obj in self.compilers.items(): - exe_list = [make_abs(x) for x in comp_obj.get_exelist()] prefix = 'CMAKE_{}_'.format(language_map.get(lang, lang.upper())) + exe_list = comp_obj.get_exelist() if not exe_list: continue - elif len(exe_list) == 2: - defaults[prefix + 'COMPILER'] = [exe_list[1]] - defaults[prefix + 'COMPILER_LAUNCHER'] = [exe_list[0]] - else: - defaults[prefix + 'COMPILER'] = exe_list + + if len(exe_list) >= 2 and not self.is_cmdline_option(comp_obj, exe_list[1]): + defaults[prefix + 'COMPILER_LAUNCHER'] = [make_abs(exe_list[0])] + exe_list = exe_list[1:] + + exe_list[0] = make_abs(exe_list[0]) + defaults[prefix + 'COMPILER'] = exe_list if comp_obj.get_id() == 'clang-cl': defaults['CMAKE_LINKER'] = comp_obj.get_linker_exelist() return defaults + @staticmethod + def is_cmdline_option(compiler: 'Compiler', arg: str) -> bool: + if isinstance(compiler, VisualStudioLikeCompiler): + return arg.startswith('/') + else: + return arg.startswith('-') + def update_cmake_compiler_state(self) -> None: # Check if all variables are already cached if self.cmakestate.languages.issuperset(self.compilers.keys()): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.2/mesonbuild/compilers/cuda.py new/meson-0.59.3/mesonbuild/compilers/cuda.py --- old/meson-0.59.2/mesonbuild/compilers/cuda.py 2021-08-18 13:22:33.000000000 +0200 +++ new/meson-0.59.3/mesonbuild/compilers/cuda.py 2021-10-23 18:36:11.000000000 +0200 @@ -623,12 +623,9 @@ # We must strip the -std option from the host compiler option set, as NVCC has # its own -std flag that may not agree with the host compiler's. - overrides = {name: opt.value for name, opt in options.items()} - overrides.pop(OptionKey('std', machine=self.for_machine, - lang=self.host_compiler.language), None) - host_options = self.host_compiler.get_options().copy() - if 'std' in host_options: - del host_options['std'] # type: ignore + host_options = {key: options.get(key, opt) for key, opt in self.host_compiler.get_options().items()} + std_key = OptionKey('std', machine=self.for_machine, lang=self.host_compiler.language) + overrides = {std_key: 'none'} return OptionOverrideProxy(overrides, host_options) def get_option_compile_args(self, options: 'KeyedOptionDictType') -> T.List[str]: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.2/mesonbuild/compilers/detect.py new/meson-0.59.3/mesonbuild/compilers/detect.py --- old/meson-0.59.2/mesonbuild/compilers/detect.py 2021-08-18 13:22:15.000000000 +0200 +++ new/meson-0.59.3/mesonbuild/compilers/detect.py 2021-10-23 18:36:11.000000000 +0200 @@ -367,7 +367,7 @@ compiler = [compiler] compiler_name = os.path.basename(compiler[0]) - if not {'cl', 'cl.exe', 'clang-cl', 'clang-cl.exe'}.isdisjoint(compiler): + if any(os.path.basename(x) in {'cl', 'cl.exe', 'clang-cl', 'clang-cl.exe'} for x in compiler): # Watcom C provides it's own cl.exe clone that mimics an older # version of Microsoft's compiler. Since Watcom's cl.exe is # just a wrapper, we skip using it if we detect its presence @@ -973,7 +973,7 @@ extra_args['direct'] = True extra_args['machine'] = cc.linker.machine else: - exelist = cc.linker.exelist.copy() + exelist = cc.linker.exelist + cc.linker.get_always_args() if 'ccache' in exelist[0]: del exelist[0] c = exelist.pop(0) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.2/mesonbuild/compilers/fortran.py new/meson-0.59.3/mesonbuild/compilers/fortran.py --- old/meson-0.59.2/mesonbuild/compilers/fortran.py 2021-08-18 13:22:33.000000000 +0200 +++ new/meson-0.59.3/mesonbuild/compilers/fortran.py 2021-10-23 18:36:11.000000000 +0200 @@ -71,7 +71,7 @@ if binary_name.is_file(): binary_name.unlink() - source_name.write_text('print *, "Fortran compilation is working."; end', encoding='utf-8') + source_name.write_text('program main; print *, "Fortran compilation is working."; end program', encoding='utf-8') extra_flags: T.List[str] = [] extra_flags += environment.coredata.get_external_args(self.for_machine, self.language) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.2/mesonbuild/coredata.py new/meson-0.59.3/mesonbuild/coredata.py --- old/meson-0.59.2/mesonbuild/coredata.py 2021-09-28 19:04:57.000000000 +0200 +++ new/meson-0.59.3/mesonbuild/coredata.py 2021-10-23 18:36:11.000000000 +0200 @@ -43,7 +43,7 @@ KeyedOptionDictType = T.Union[T.Dict['OptionKey', 'UserOption[T.Any]'], OptionOverrideProxy] CompilerCheckCacheKey = T.Tuple[T.Tuple[str, ...], str, str, T.Tuple[str, ...], str] -version = '0.59.2' +version = '0.59.3' backendlist = ['ninja', 'vs', 'vs2010', 'vs2012', 'vs2013', 'vs2015', 'vs2017', 'vs2019', 'xcode'] default_yielding = False diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.2/mesonbuild/dependencies/cmake.py new/meson-0.59.3/mesonbuild/dependencies/cmake.py --- old/meson-0.59.2/mesonbuild/dependencies/cmake.py 2021-08-18 13:22:33.000000000 +0200 +++ new/meson-0.59.3/mesonbuild/dependencies/cmake.py 2021-10-23 18:36:11.000000000 +0200 @@ -15,7 +15,7 @@ from .base import ExternalDependency, DependencyException, DependencyMethods, DependencyTypeName from ..mesonlib import is_windows, MesonException, OptionKey, PerMachine, stringlistify, extract_as_list from ..mesondata import mesondata -from ..cmake import CMakeExecutor, CMakeTraceParser, CMakeException, CMakeToolchain, CMakeExecScope, check_cmake_args +from ..cmake import CMakeExecutor, CMakeTraceParser, CMakeException, CMakeToolchain, CMakeExecScope, check_cmake_args, CMakeTarget from .. import mlog from pathlib import Path import functools @@ -433,6 +433,18 @@ modules = self._map_module_list(modules, components) autodetected_module_list = False + # Check if we need a DEBUG or RELEASE CMake dependencies + is_debug = False + if OptionKey('b_vscrt') in self.env.coredata.options: + is_debug = self.env.coredata.get_option(OptionKey('buildtype')) == 'debug' + if self.env.coredata.options[OptionKey('b_vscrt')].value in {'mdd', 'mtd'}: + is_debug = True + else: + # Don't directly assign to is_debug to make mypy happy + debug_opt = self.env.coredata.get_option(OptionKey('debug')) + assert isinstance(debug_opt, bool) + is_debug = debug_opt + # Try guessing a CMake target if none is provided if len(modules) == 0: for i in self.traceparser.targets: @@ -446,9 +458,59 @@ # Failed to guess a target --> try the old-style method if len(modules) == 0: + # Warn when there might be matching imported targets but no automatic match was used + partial_modules: T.List[CMakeTarget] = [] + for k, v in self.traceparser.targets.items(): + tg = k.lower() + lname = name.lower() + if tg.startswith(f'{lname}::'): + partial_modules += [v] + if partial_modules: + mlog.warning(textwrap.dedent(f'''\ + Could not find and exact match for the CMake dependency {name}. + + However, Meson found the following partial matches: + + {[x.name for x in partial_modules]} + + Using imported is recommended, since this approach is less error prone + and better supported by Meson. Consider explicitly specifying one of + these in the dependency call with: + + dependency('{name}', modules: ['{name}::<name>', ...]) + + Meson will now continue to use the old-style {name}_LIBRARIES CMake + variables to extract the dependency information since no explicit + target is currently specified. + + ''')) + mlog.debug('More info for the partial match targets:') + for tgt in partial_modules: + mlog.debug(tgt) + + incDirs = [x for x in self.traceparser.get_cmake_var('PACKAGE_INCLUDE_DIRS') if x] defs = [x for x in self.traceparser.get_cmake_var('PACKAGE_DEFINITIONS') if x] - libs = [x for x in self.traceparser.get_cmake_var('PACKAGE_LIBRARIES') if x] + libs_raw = [x for x in self.traceparser.get_cmake_var('PACKAGE_LIBRARIES') if x] + + # CMake has a "fun" API, where certain keywords describing + # configurations can be in the *_LIBRARIES vraiables. See: + # - https://github.com/mesonbuild/meson/issues/9197 + # - https://gitlab.freedesktop.org/libnice/libnice/-/issues/140 + # - https://cmake.org/cmake/help/latest/command/target_link_libraries.html#overview (the last point in the section) + libs: T.List[str] = [] + cfg_matches = True + cm_tag_map = {'debug': is_debug, 'optimized': not is_debug, 'general': True} + for i in libs_raw: + if i.lower() in cm_tag_map: + cfg_matches = cm_tag_map[i.lower()] + continue + if cfg_matches: + libs += [i] + # According to the CMake docs, a keyword only works for the + # directly the following item and all items without a keyword + # are implizitly `general` + cfg_matches = True # Try to use old style variables if no module is specified if len(libs) > 0: @@ -514,15 +576,6 @@ cfgs = [x for x in tgt.properties['IMPORTED_CONFIGURATIONS'] if x] cfg = cfgs[0] - if OptionKey('b_vscrt') in self.env.coredata.options: - is_debug = self.env.coredata.get_option(OptionKey('buildtype')) == 'debug' - if self.env.coredata.options[OptionKey('b_vscrt')].value in {'mdd', 'mtd'}: - is_debug = True - else: - # Don't directly assign to is_debug to make mypy happy - debug_opt = self.env.coredata.get_option(OptionKey('debug')) - assert isinstance(debug_opt, bool) - is_debug = debug_opt if is_debug: if 'DEBUG' in cfgs: cfg = 'DEBUG' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.2/mesonbuild/linkers/detect.py new/meson-0.59.3/mesonbuild/linkers/detect.py --- old/meson-0.59.2/mesonbuild/linkers/detect.py 2021-08-18 13:22:15.000000000 +0200 +++ new/meson-0.59.3/mesonbuild/linkers/detect.py 2021-10-23 18:36:11.000000000 +0200 @@ -79,7 +79,7 @@ check_args.extend(extra_args) p, o, _ = Popen_safe(compiler + check_args) - if o.startswith('LLD'): + if 'LLD' in o.split('\n')[0]: if '(compatible with GNU linkers)' in o: return LLVMDynamicLinker( compiler, for_machine, comp_class.LINKER_PREFIX, @@ -94,7 +94,7 @@ # We've already hanedled the non-direct case above p, o, e = Popen_safe(compiler + check_args) - if o.startswith('LLD'): + if 'LLD' in o.split('\n')[0]: return ClangClDynamicLinker( for_machine, [], prefix=comp_class.LINKER_PREFIX if use_linker_prefix else [], @@ -149,7 +149,7 @@ _, o, e = Popen_safe(compiler + check_args) v = search_version(o + e) linker: DynamicLinker - if o.startswith('LLD'): + if 'LLD' in o.split('\n')[0]: linker = LLVMDynamicLinker( compiler, for_machine, comp_class.LINKER_PREFIX, override, version=v) elif 'Snapdragon' in e and 'LLVM' in e: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.2/mesonbuild/mintro.py new/meson-0.59.3/mesonbuild/mintro.py --- old/meson-0.59.2/mesonbuild/mintro.py 2021-07-20 10:56:20.000000000 +0200 +++ new/meson-0.59.3/mesonbuild/mintro.py 2021-10-23 18:36:11.000000000 +0200 @@ -256,6 +256,8 @@ typestr = 'integer' elif isinstance(opt, cdata.UserArrayOption): typestr = 'array' + if opt.choices: + optdict['choices'] = opt.choices else: raise RuntimeError("Unknown option type") optdict['type'] = typestr diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.2/mesonbuild/modules/gnome.py new/meson-0.59.3/mesonbuild/modules/gnome.py --- old/meson-0.59.2/mesonbuild/modules/gnome.py 2021-09-28 19:04:57.000000000 +0200 +++ new/meson-0.59.3/mesonbuild/modules/gnome.py 2021-10-23 18:36:11.000000000 +0200 @@ -222,9 +222,9 @@ ifile = os.path.join(ifile.subdir, ifile.fname) elif isinstance(ifile, str): ifile = os.path.join(state.subdir, ifile) - elif isinstance(ifile, (interpreter.CustomTargetHolder, - interpreter.CustomTargetIndexHolder, - interpreter.GeneratedObjectsHolder)): + elif isinstance(ifile, (build.CustomTarget, + build.CustomTargetIndex, + build.GeneratedList)): m = 'Resource xml files generated at build-time cannot be used ' \ 'with gnome.compile_resources() because we need to scan ' \ 'the xml for dependencies. Use configure_file() instead ' \ @@ -286,7 +286,7 @@ kwargs['depend_files'] = depend_files kwargs['command'] = cmd else: - depfile = kwargs['output'] + '.d' + depfile = f'{output}.d' kwargs['depfile'] = depfile kwargs['command'] = copy.copy(cmd) + ['--dependency-file', '@DEPFILE@'] target_c = GResourceTarget(name, state.subdir, state.subproject, kwargs) @@ -1627,7 +1627,7 @@ arg)) install_header = kwargs.pop('install_header', False) - install_dir = kwargs.pop('install_dir', None) + install_dir = kwargs.pop('install_dir', []) custom_kwargs = { 'input': sources, @@ -1652,8 +1652,7 @@ body = build.CustomTarget(output + '_c', state.subdir, state.subproject, custom_kwargs) custom_kwargs['install'] = install_header - if install_dir is not None: - custom_kwargs['install_dir'] = install_dir + custom_kwargs['install_dir'] = install_dir if new_genmarshal: cmd += ['--pragma-once'] custom_kwargs['command'] = cmd + ['--header', '@INPUT@'] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.2/mesonbuild/modules/unstable_cuda.py new/meson-0.59.3/mesonbuild/modules/unstable_cuda.py --- old/meson-0.59.2/mesonbuild/modules/unstable_cuda.py 2021-08-18 13:22:15.000000000 +0200 +++ new/meson-0.59.3/mesonbuild/modules/unstable_cuda.py 2021-10-23 18:36:11.000000000 +0200 @@ -50,6 +50,8 @@ cuda_version = args[0] driver_version_table = [ + {'cuda_version': '>=11.5.0', 'windows': '496.04', 'linux': '495.29.05'}, + {'cuda_version': '>=11.4.1', 'windows': '471.41', 'linux': '470.57.02'}, {'cuda_version': '>=11.4.0', 'windows': '471.11', 'linux': '470.42.01'}, {'cuda_version': '>=11.3.0', 'windows': '465.89', 'linux': '465.19.01'}, {'cuda_version': '>=11.2.2', 'windows': '461.33', 'linux': '460.32.03'}, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.2/mesonbuild/modules/unstable_external_project.py new/meson-0.59.3/mesonbuild/modules/unstable_external_project.py --- old/meson-0.59.2/mesonbuild/modules/unstable_external_project.py 2021-08-18 13:22:15.000000000 +0200 +++ new/meson-0.59.3/mesonbuild/modules/unstable_external_project.py 2021-10-23 18:36:11.000000000 +0200 @@ -233,7 +233,7 @@ libs_whole = [] sources = self.target final_deps = [] - variables = [] + variables = {} dep = InternalDependency(version, incdir, compile_args, link_args, libs, libs_whole, sources, final_deps, variables) return dep diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.2/mesonbuild/mtest.py new/meson-0.59.3/mesonbuild/mtest.py --- old/meson-0.59.2/mesonbuild/mtest.py 2021-09-28 19:04:57.000000000 +0200 +++ new/meson-0.59.3/mesonbuild/mtest.py 2021-10-23 18:36:11.000000000 +0200 @@ -1893,7 +1893,10 @@ l.start(self) if sys.platform != 'win32': - asyncio.get_event_loop().add_signal_handler(signal.SIGINT, sigint_handler) + if os.getpgid(0) == os.getpid(): + asyncio.get_event_loop().add_signal_handler(signal.SIGINT, sigint_handler) + else: + asyncio.get_event_loop().add_signal_handler(signal.SIGINT, sigterm_handler) asyncio.get_event_loop().add_signal_handler(signal.SIGTERM, sigterm_handler) try: for runner in runners: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.2/mesonbuild/optinterpreter.py new/meson-0.59.3/mesonbuild/optinterpreter.py --- old/meson-0.59.2/mesonbuild/optinterpreter.py 2021-07-20 10:56:20.000000000 +0200 +++ new/meson-0.59.3/mesonbuild/optinterpreter.py 2021-10-23 18:36:11.000000000 +0200 @@ -16,7 +16,6 @@ import functools import typing as T -from . import compilers from . import coredata from . import mesonlib from . import mparser @@ -26,21 +25,6 @@ if T.TYPE_CHECKING: from .interpreterbase import TV_func -forbidden_option_names = set(coredata.BUILTIN_OPTIONS.keys()) -forbidden_prefixes = [lang + '_' for lang in compilers.all_languages] + ['b_', 'backend_'] -reserved_prefixes = ['cross_'] - -def is_invalid_name(name: str, *, log: bool = True) -> bool: - if name in forbidden_option_names: - return True - pref = name.split('_')[0] + '_' - if pref in forbidden_prefixes: - return True - if pref in reserved_prefixes: - if log: - mlog.deprecation('Option uses prefix "%s", which is reserved for Meson. This will become an error in the future.' % pref) - return False - class OptionException(mesonlib.MesonException): pass @@ -225,9 +209,9 @@ raise OptionException('Positional argument must be a string.') if optname_regex.search(opt_name) is not None: raise OptionException('Option names can only contain letters, numbers or dashes.') - if is_invalid_name(opt_name): + key = mesonlib.OptionKey.from_string(opt_name).evolve(subproject=self.subproject) + if not key.is_project(): raise OptionException('Option name %s is reserved.' % opt_name) - key = mesonlib.OptionKey(opt_name, self.subproject) if 'yield' in kwargs: FeatureNew.single_use('option yield', '0.45.0', self.subproject) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.2/mesonbuild/scripts/meson_exe.py new/meson-0.59.3/mesonbuild/scripts/meson_exe.py --- old/meson-0.59.2/mesonbuild/scripts/meson_exe.py 2021-08-18 13:22:15.000000000 +0200 +++ new/meson-0.59.3/mesonbuild/scripts/meson_exe.py 2021-10-23 18:36:11.000000000 +0200 @@ -67,6 +67,9 @@ close_fds=False, stdin=stdin, stdout=pipe, stderr=pipe) stdout, stderr = p.communicate() + if stdin is not None: + stdin.close() + if p.returncode == 0xc0000135: # STATUS_DLL_NOT_FOUND on Windows indicating a common problem that is otherwise hard to diagnose raise FileNotFoundError('due to missing DLLs') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.2/run_unittests.py new/meson-0.59.3/run_unittests.py --- old/meson-0.59.2/run_unittests.py 2021-09-28 19:04:57.000000000 +0200 +++ new/meson-0.59.3/run_unittests.py 2021-10-23 18:36:11.000000000 +0200 @@ -79,6 +79,7 @@ from mesonbuild.build import Target, ConfigurationData import mesonbuild.modules.pkgconfig from mesonbuild.scripts import destdir_join +from mesonbuild.optinterpreter import OptionInterpreter, OptionException from mesonbuild.mtest import TAPParser, TestResult from mesonbuild.mesonmain import setup_vsenv @@ -2445,6 +2446,38 @@ raise self.fail('Did not find option "prefix"') self.assertEqual(prefix, '/absoluteprefix') + def test_invalid_option_names(self): + interp = OptionInterpreter('') + + def write_file(code: str): + with tempfile.NamedTemporaryFile('w', dir=self.builddir, encoding='utf-8', delete=False) as f: + f.write(code) + return f.name + + fname = write_file("option('default_library', type: 'string')") + self.assertRaisesRegex(OptionException, 'Option name default_library is reserved.', + interp.process, fname) + + fname = write_file("option('c_anything', type: 'string')") + self.assertRaisesRegex(OptionException, 'Option name c_anything is reserved.', + interp.process, fname) + + fname = write_file("option('b_anything', type: 'string')") + self.assertRaisesRegex(OptionException, 'Option name b_anything is reserved.', + interp.process, fname) + + fname = write_file("option('backend_anything', type: 'string')") + self.assertRaisesRegex(OptionException, 'Option name backend_anything is reserved.', + interp.process, fname) + + fname = write_file("option('foo.bar', type: 'string')") + self.assertRaisesRegex(OptionException, 'Option names can only contain letters, numbers or dashes.', + interp.process, fname) + + # platlib is allowed, only python.platlib is reserved. + fname = write_file("option('platlib', type: 'string')") + interp.process(fname) + def test_do_conf_file_preserve_newlines(self): def conf_file(in_data, confdata): @@ -3908,6 +3941,7 @@ 'section': 'user', 'type': 'array', 'value': ['foo', 'bar'], + 'choices': ['foo', 'bar', 'oink', 'boink'], 'machine': 'any', } tdir = os.path.join(self.unit_test_dir, '19 array option') @@ -3934,6 +3968,7 @@ 'section': 'user', 'type': 'array', 'value': ['foo', 'bar'], + 'choices': ['foo', 'bar', 'oink', 'boink'], 'machine': 'any', } tdir = os.path.join(self.unit_test_dir, '19 array option') @@ -3960,6 +3995,7 @@ 'section': 'user', 'type': 'array', 'value': [], + 'choices': ['foo', 'bar', 'oink', 'boink'], 'machine': 'any', } tdir = os.path.join(self.unit_test_dir, '19 array option') @@ -4016,7 +4052,7 @@ if item['name'] == 'combo': self.assertEqual(item['value'], 'b') self.assertEqual(item['choices'], ['b', 'c', 'd']) - elif item['name'] == 'arr': + elif item['name'] == 'array': self.assertEqual(item['value'], ['b']) self.assertEqual(item['choices'], ['b', 'c', 'd']) @@ -4034,7 +4070,7 @@ if item['name'] == 'combo': self.assertEqual(item['value'], 'c') self.assertEqual(item['choices'], ['b', 'c', 'd']) - elif item['name'] == 'arr': + elif item['name'] == 'array': self.assertEqual(item['value'], ['b', 'c']) self.assertEqual(item['choices'], ['b', 'c', 'd']) @@ -6080,6 +6116,37 @@ link_args = env.coredata.get_external_link_args(cc.for_machine, cc.language) self.assertEqual(sorted(link_args), sorted(['-flto'])) + @skip_if_not_language('rust') + def test_rust_rlib_linkage(self) -> None: + if self.backend is not Backend.ninja: + raise unittest.SkipTest('Rust is only supported with ninja currently') + template = textwrap.dedent('''\ + use std::process::exit; + + pub fn fun() {{ + exit({}); + }} + ''') + + testdir = os.path.join(self.unit_test_dir, '100 rlib linkage') + gen_file = os.path.join(testdir, 'lib.rs') + with open(gen_file, 'w', encoding='utf-8') as f: + f.write(template.format(0)) + self.addCleanup(windows_proof_rm, gen_file) + + self.init(testdir) + self.build() + self.run_tests() + + with open(gen_file, 'w', encoding='utf-8') as f: + f.write(template.format(39)) + + self.build() + with self.assertRaises(subprocess.CalledProcessError) as cm: + self.run_tests() + self.assertEqual(cm.exception.returncode, 1) + self.assertIn('exit status 39', cm.exception.stdout) + class FailureTests(BasePlatformTests): ''' Tests that test failure conditions. Build files here should be dynamically @@ -8455,6 +8522,38 @@ self.assertEqual(len(obj_files), 1) self.assertTrue(obj_files[0].endswith('-prelink.o')) + def do_one_test_with_nativefile(self, testdir, args): + testdir = os.path.join(self.common_test_dir, testdir) + with tempfile.TemporaryDirectory() as d: + p = Path(d) / 'nativefile' + with p.open('wt', encoding='utf-8') as f: + f.write(f'''[binaries] + c = {args} + ''') + self.init(testdir, extra_args=['--native-file=' + str(p)]) + self.build() + + def test_cmake_multilib(self): + ''' + Test that the cmake module handles multilib paths correctly. + ''' + # Verify that "gcc -m32" works + try: + self.do_one_test_with_nativefile('1 trivial', "['gcc', '-m32']") + except subprocess.CalledProcessError as e: + raise unittest.SkipTest('Not GCC, or GCC does not have the -m32 option') + self.wipe() + + # Verify that cmake works + try: + self.do_one_test_with_nativefile('../cmake/1 basic', "['gcc']") + except subprocess.CalledProcessError as e: + raise unittest.SkipTest('Could not build basic cmake project') + self.wipe() + + # If so, we can test that cmake works with "gcc -m32" + self.do_one_test_with_nativefile('../cmake/1 basic', "['gcc', '-m32']") + class BaseLinuxCrossTests(BasePlatformTests): # Don't pass --libdir when cross-compiling. We have tests that # check whether meson auto-detects it correctly. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/1 basic/simple.f90" "new/meson-0.59.3/test cases/fortran/1 basic/simple.f90" --- "old/meson-0.59.2/test cases/fortran/1 basic/simple.f90" 2020-08-15 18:27:05.000000000 +0200 +++ "new/meson-0.59.3/test cases/fortran/1 basic/simple.f90" 2021-10-23 18:36:11.000000000 +0200 @@ -1,2 +1,3 @@ +program main print *, "Fortran compilation is working." end program diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/10 find library/main.f90" "new/meson-0.59.3/test cases/fortran/10 find library/main.f90" --- "old/meson-0.59.2/test cases/fortran/10 find library/main.f90" 2020-08-15 18:27:05.000000000 +0200 +++ "new/meson-0.59.3/test cases/fortran/10 find library/main.f90" 2021-10-23 18:36:11.000000000 +0200 @@ -1,4 +1,4 @@ - +program main use iso_fortran_env, only: stderr=>error_unit use iso_c_binding, only: c_int, c_char, c_null_char, c_ptr use gzip, only: gzopen, gzwrite, gzclose diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/12 submodule/parent.f90" "new/meson-0.59.3/test cases/fortran/12 submodule/parent.f90" --- "old/meson-0.59.2/test cases/fortran/12 submodule/parent.f90" 2020-08-15 18:27:05.000000000 +0200 +++ "new/meson-0.59.3/test cases/fortran/12 submodule/parent.f90" 2021-10-23 18:36:11.000000000 +0200 @@ -13,6 +13,7 @@ end module parent +program main use parent diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/13 coarray/main.f90" "new/meson-0.59.3/test cases/fortran/13 coarray/main.f90" --- "old/meson-0.59.2/test cases/fortran/13 coarray/main.f90" 2020-08-15 18:27:05.000000000 +0200 +++ "new/meson-0.59.3/test cases/fortran/13 coarray/main.f90" 2021-10-23 18:36:11.000000000 +0200 @@ -1,3 +1,4 @@ +program main implicit none if (this_image() == 1) print *, 'number of Fortran coarray images:', num_images() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/14 fortran links c/f_call_c.f90" "new/meson-0.59.3/test cases/fortran/14 fortran links c/f_call_c.f90" --- "old/meson-0.59.2/test cases/fortran/14 fortran links c/f_call_c.f90" 2020-08-15 18:27:05.000000000 +0200 +++ "new/meson-0.59.3/test cases/fortran/14 fortran links c/f_call_c.f90" 2021-10-23 18:36:11.000000000 +0200 @@ -1,3 +1,4 @@ +program main implicit none interface diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/16 openmp/main.f90" "new/meson-0.59.3/test cases/fortran/16 openmp/main.f90" --- "old/meson-0.59.2/test cases/fortran/16 openmp/main.f90" 2020-08-15 18:27:05.000000000 +0200 +++ "new/meson-0.59.3/test cases/fortran/16 openmp/main.f90" 2021-10-23 18:36:11.000000000 +0200 @@ -1,3 +1,4 @@ +program main use, intrinsic :: iso_fortran_env, only: stderr=>error_unit use omp_lib, only: omp_get_max_threads implicit none diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/18 first_arg/main.f90" "new/meson-0.59.3/test cases/fortran/18 first_arg/main.f90" --- "old/meson-0.59.2/test cases/fortran/18 first_arg/main.f90" 2020-08-15 18:27:05.000000000 +0200 +++ "new/meson-0.59.3/test cases/fortran/18 first_arg/main.f90" 2021-10-23 18:36:11.000000000 +0200 @@ -1,2 +1,3 @@ +program main i = 3 end program diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/19 fortran_std/legacy.f" "new/meson-0.59.3/test cases/fortran/19 fortran_std/legacy.f" --- "old/meson-0.59.2/test cases/fortran/19 fortran_std/legacy.f" 2020-08-15 18:27:05.000000000 +0200 +++ "new/meson-0.59.3/test cases/fortran/19 fortran_std/legacy.f" 2021-10-23 18:36:11.000000000 +0200 @@ -1,7 +1,8 @@ + program main ! non-integer loop indices are deleted in Fortran 95 standard real a do 10 a=0,0.5,0.1 10 continue - end program \ No newline at end of file + end program diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/19 fortran_std/std2003.f90" "new/meson-0.59.3/test cases/fortran/19 fortran_std/std2003.f90" --- "old/meson-0.59.2/test cases/fortran/19 fortran_std/std2003.f90" 2020-08-15 18:27:05.000000000 +0200 +++ "new/meson-0.59.3/test cases/fortran/19 fortran_std/std2003.f90" 2021-10-23 18:36:11.000000000 +0200 @@ -1,3 +1,4 @@ +program main use, intrinsic :: iso_fortran_env, only : error_unit implicit none @@ -33,4 +34,4 @@ end subroutine timestwo -end program \ No newline at end of file +end program diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/19 fortran_std/std2008.f90" "new/meson-0.59.3/test cases/fortran/19 fortran_std/std2008.f90" --- "old/meson-0.59.2/test cases/fortran/19 fortran_std/std2008.f90" 2020-08-15 18:27:05.000000000 +0200 +++ "new/meson-0.59.3/test cases/fortran/19 fortran_std/std2008.f90" 2021-10-23 18:36:11.000000000 +0200 @@ -1,3 +1,4 @@ +program main use, intrinsic :: iso_fortran_env, only : error_unit, sp=>real32, dp=>real64 implicit none @@ -29,4 +30,4 @@ end subroutine timestwo -end program \ No newline at end of file +end program diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/19 fortran_std/std2018.f90" "new/meson-0.59.3/test cases/fortran/19 fortran_std/std2018.f90" --- "old/meson-0.59.2/test cases/fortran/19 fortran_std/std2018.f90" 2020-08-15 18:27:05.000000000 +0200 +++ "new/meson-0.59.3/test cases/fortran/19 fortran_std/std2018.f90" 2021-10-23 18:36:11.000000000 +0200 @@ -1,3 +1,4 @@ +program main use, intrinsic :: iso_fortran_env, only : error_unit, sp=>real32, dp=>real64 implicit none @@ -31,4 +32,4 @@ end subroutine timestwo -end program \ No newline at end of file +end program diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/19 fortran_std/std95.f90" "new/meson-0.59.3/test cases/fortran/19 fortran_std/std95.f90" --- "old/meson-0.59.2/test cases/fortran/19 fortran_std/std95.f90" 2020-08-15 18:27:05.000000000 +0200 +++ "new/meson-0.59.3/test cases/fortran/19 fortran_std/std95.f90" 2021-10-23 18:36:11.000000000 +0200 @@ -1,3 +1,4 @@ +program main implicit none integer :: i, j @@ -10,4 +11,4 @@ A(i,j) = 1 end forall -end program \ No newline at end of file +end program diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/2 modules/prog.f90" "new/meson-0.59.3/test cases/fortran/2 modules/prog.f90" --- "old/meson-0.59.2/test cases/fortran/2 modules/prog.f90" 2021-08-18 13:22:33.000000000 +0200 +++ "new/meson-0.59.3/test cases/fortran/2 modules/prog.f90" 2021-10-23 18:36:11.000000000 +0200 @@ -1,3 +1,4 @@ +program main use circle, only: pi use line, only: length implicit none diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/20 buildtype/main.f90" "new/meson-0.59.3/test cases/fortran/20 buildtype/main.f90" --- "old/meson-0.59.2/test cases/fortran/20 buildtype/main.f90" 2020-08-15 18:27:05.000000000 +0200 +++ "new/meson-0.59.3/test cases/fortran/20 buildtype/main.f90" 2021-10-23 18:36:11.000000000 +0200 @@ -1 +1,2 @@ +program main end program diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/21 install static/main.f90" "new/meson-0.59.3/test cases/fortran/21 install static/main.f90" --- "old/meson-0.59.2/test cases/fortran/21 install static/main.f90" 2021-04-01 23:13:00.000000000 +0200 +++ "new/meson-0.59.3/test cases/fortran/21 install static/main.f90" 2021-10-23 18:36:11.000000000 +0200 @@ -1,4 +1,5 @@ +program main use main_lib implicit none call main_hello() -end program \ No newline at end of file +end program diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/5 static/main.f90" "new/meson-0.59.3/test cases/fortran/5 static/main.f90" --- "old/meson-0.59.2/test cases/fortran/5 static/main.f90" 2020-08-15 18:27:05.000000000 +0200 +++ "new/meson-0.59.3/test cases/fortran/5 static/main.f90" 2021-10-23 18:36:11.000000000 +0200 @@ -1,4 +1,4 @@ - +program main use static_hello implicit none diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/6 dynamic/main.f90" "new/meson-0.59.3/test cases/fortran/6 dynamic/main.f90" --- "old/meson-0.59.2/test cases/fortran/6 dynamic/main.f90" 2020-08-15 18:27:05.000000000 +0200 +++ "new/meson-0.59.3/test cases/fortran/6 dynamic/main.f90" 2021-10-23 18:36:11.000000000 +0200 @@ -1,3 +1,4 @@ +program main use dynamic, only: hello implicit none diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.2/test cases/fortran/8 module names/test.f90" "new/meson-0.59.3/test cases/fortran/8 module names/test.f90" --- "old/meson-0.59.2/test cases/fortran/8 module names/test.f90" 2020-08-15 18:27:05.000000000 +0200 +++ "new/meson-0.59.3/test cases/fortran/8 module names/test.f90" 2021-10-23 18:36:11.000000000 +0200 @@ -1,3 +1,4 @@ +program main use mymod1 use MyMod2 ! test inline comment diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.2/test cases/linuxlike/13 cmake dependency/cmake_fake1/cmMesonTestF1Config.cmake" "new/meson-0.59.3/test cases/linuxlike/13 cmake dependency/cmake_fake1/cmMesonTestF1Config.cmake" --- "old/meson-0.59.2/test cases/linuxlike/13 cmake dependency/cmake_fake1/cmMesonTestF1Config.cmake" 2020-08-15 18:27:05.000000000 +0200 +++ "new/meson-0.59.3/test cases/linuxlike/13 cmake dependency/cmake_fake1/cmMesonTestF1Config.cmake" 2021-10-23 18:36:11.000000000 +0200 @@ -2,8 +2,10 @@ if(ZLIB_FOUND OR ZLIB_Found) set(cmMesonTestF1_FOUND ON) - set(cmMesonTestF1_LIBRARIES ${ZLIB_LIBRARY}) + set(cmMesonTestF1_LIBRARIES general ${ZLIB_LIBRARY}) set(cmMesonTestF1_INCLUDE_DIRS ${ZLIB_INCLUDE_DIR}) + + add_library(CMMesonTESTf1::evil_non_standard_trget UNKNOWN IMPORTED) else() set(cmMesonTestF1_FOUND OFF) endif() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.2/test cases/linuxlike/13 cmake dependency/meson.build" "new/meson-0.59.3/test cases/linuxlike/13 cmake dependency/meson.build" --- "old/meson-0.59.2/test cases/linuxlike/13 cmake dependency/meson.build" 2021-08-18 14:01:28.000000000 +0200 +++ "new/meson-0.59.3/test cases/linuxlike/13 cmake dependency/meson.build" 2021-10-23 18:51:52.000000000 +0200 @@ -48,6 +48,10 @@ depPrefEnv2 = dependency('cmMesonTestF2', required : true, method : 'cmake') depPrefEnv3 = dependency('cmMesonTestF3', required : true, method : 'cmake') +# Try to actually link with depPrefEnv1, since we are doing "fun" stuff there +exe3 = executable('zlibprog3', 'prog.c', dependencies : depPrefEnv1) +test('zlibtest3', exe3) + # Try to find a dependency with a custom CMake module depm1 = dependency('SomethingLikeZLIB', required : true, components : 'required_comp', method : 'cmake', cmake_module_path : 'cmake') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.2/test cases/linuxlike/13 cmake dependency/test.json" "new/meson-0.59.3/test cases/linuxlike/13 cmake dependency/test.json" --- "old/meson-0.59.2/test cases/linuxlike/13 cmake dependency/test.json" 2021-04-01 23:13:00.000000000 +0200 +++ "new/meson-0.59.3/test cases/linuxlike/13 cmake dependency/test.json" 2021-10-23 18:36:11.000000000 +0200 @@ -2,5 +2,13 @@ "env": { "CMAKE_PREFIX_PATH": "@ROOT@/cmake_fake1;@ROOT@/cmake_fake2:@ROOT@/cmake_pref_env", "PATH": "@ROOT@/cmake_fake3/bin:@PATH@" - } + }, + "stdout": [ + { + "line": "WARNING: Could not find and exact match for the CMake dependency cmMesonTestF1." + }, + { + "line": " ['CMMesonTESTf1::evil_non_standard_trget']" + } + ] } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.2/test cases/rust/5 polyglot static/meson.build" "new/meson-0.59.3/test cases/rust/5 polyglot static/meson.build" --- "old/meson-0.59.2/test cases/rust/5 polyglot static/meson.build" 2021-08-18 14:02:28.000000000 +0200 +++ "new/meson-0.59.3/test cases/rust/5 polyglot static/meson.build" 2021-10-23 18:52:45.000000000 +0200 @@ -2,6 +2,7 @@ deps = [ meson.get_compiler('c').find_library('dl', required: false), + meson.get_compiler('c').find_library('m', required: false), dependency('threads'), ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.2/test cases/unit/100 rlib linkage/lib2.rs" "new/meson-0.59.3/test cases/unit/100 rlib linkage/lib2.rs" --- "old/meson-0.59.2/test cases/unit/100 rlib linkage/lib2.rs" 1970-01-01 01:00:00.000000000 +0100 +++ "new/meson-0.59.3/test cases/unit/100 rlib linkage/lib2.rs" 2021-10-23 18:36:11.000000000 +0200 @@ -0,0 +1,5 @@ +use lib; + +pub fn fun() { + lib::fun(); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.2/test cases/unit/100 rlib linkage/main.rs" "new/meson-0.59.3/test cases/unit/100 rlib linkage/main.rs" --- "old/meson-0.59.2/test cases/unit/100 rlib linkage/main.rs" 1970-01-01 01:00:00.000000000 +0100 +++ "new/meson-0.59.3/test cases/unit/100 rlib linkage/main.rs" 2021-10-23 18:36:11.000000000 +0200 @@ -0,0 +1,5 @@ +use lib2::fun; + +fn main() { + fun(); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.2/test cases/unit/100 rlib linkage/meson.build" "new/meson-0.59.3/test cases/unit/100 rlib linkage/meson.build" --- "old/meson-0.59.2/test cases/unit/100 rlib linkage/meson.build" 1970-01-01 01:00:00.000000000 +0100 +++ "new/meson-0.59.3/test cases/unit/100 rlib linkage/meson.build" 2021-10-23 18:36:11.000000000 +0200 @@ -0,0 +1,22 @@ +project('rlib linkage', 'rust', default_options : ['rust_std=2018']) + +lib = static_library( + 'lib', + 'lib.rs', + rust_crate_type : 'rlib', +) + +lib2 = static_library( + 'lib2', + 'lib2.rs', + rust_crate_type : 'rlib', + link_with : lib, +) + +exe = executable( + 'exe', + 'main.rs', + link_with : lib2, +) + +test('main', exe)