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-01 22:28:57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/meson (Old) and /work/SRC/openSUSE:Factory/.meson.new.2443 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "meson" Fri Oct 1 22:28:57 2021 rev:75 rq:922180 version:0.59.2 Changes: -------- --- /work/SRC/openSUSE:Factory/meson/meson.changes 2021-08-27 21:43:20.069930960 +0200 +++ /work/SRC/openSUSE:Factory/.meson.new.2443/meson.changes 2021-10-01 22:29:02.381372527 +0200 @@ -1,0 +2,11 @@ +Wed Sep 29 12:23:31 UTC 2021 - Dominique Leuenberger <dims...@opensuse.org> + +- Add meson-rust-1.55.patch: Fix test suite run with rust 1.55. + +------------------------------------------------------------------- +Wed Sep 29 06:27:10 UTC 2021 - Dominique Leuenberger <dims...@opensuse.org> + +- Update to version 0.59.2: + + No upstream changes provided. + +------------------------------------------------------------------- Old: ---- meson-0.59.1.tar.gz meson-0.59.1.tar.gz.asc New: ---- meson-0.59.2.tar.gz meson-0.59.2.tar.gz.asc meson-rust-1.55.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ meson.spec ++++++ --- /var/tmp/diff_new_pack.ttaGZi/_old 2021-10-01 22:29:02.817373333 +0200 +++ /var/tmp/diff_new_pack.ttaGZi/_new 2021-10-01 22:29:02.817373333 +0200 @@ -28,7 +28,7 @@ %{!?vim_data_dir:%global vim_data_dir %{_datadir}/vim} %bcond_with setuptools Name: meson%{name_ext} -Version: 0.59.1 +Version: 0.59.2 Release: 0 Summary: Python-based build system License: Apache-2.0 @@ -41,6 +41,8 @@ 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 @@ -163,6 +165,9 @@ %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.1.tar.gz -> meson-0.59.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.1/PKG-INFO new/meson-0.59.2/PKG-INFO --- old/meson-0.59.1/PKG-INFO 2021-08-18 13:26:21.929528700 +0200 +++ new/meson-0.59.2/PKG-INFO 2021-09-28 19:15:11.939847000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: meson -Version: 0.59.1 +Version: 0.59.2 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.59.1/data/test.schema.json new/meson-0.59.2/data/test.schema.json --- old/meson-0.59.1/data/test.schema.json 2021-08-18 13:22:15.000000000 +0200 +++ new/meson-0.59.2/data/test.schema.json 2021-09-28 19:04:57.000000000 +0200 @@ -21,11 +21,14 @@ "type": "string", "enum": [ "file", + "python_file", "dir", "exe", "shared_lib", + "python_lib", "pdb", "implib", + "py_implib", "implibempty", "expr" ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.1/man/meson.1 new/meson-0.59.2/man/meson.1 --- old/meson-0.59.1/man/meson.1 2021-08-18 13:22:33.000000000 +0200 +++ new/meson-0.59.2/man/meson.1 2021-09-28 19:04:57.000000000 +0200 @@ -1,4 +1,4 @@ -.TH MESON "1" "August 2021" "meson 0.59.1" "User Commands" +.TH MESON "1" "September 2021" "meson 0.59.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.59.1/meson.egg-info/PKG-INFO new/meson-0.59.2/meson.egg-info/PKG-INFO --- old/meson-0.59.1/meson.egg-info/PKG-INFO 2021-08-18 13:26:15.000000000 +0200 +++ new/meson-0.59.2/meson.egg-info/PKG-INFO 2021-09-28 19:15:06.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: meson -Version: 0.59.1 +Version: 0.59.2 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.59.1/meson.egg-info/SOURCES.txt new/meson-0.59.2/meson.egg-info/SOURCES.txt --- old/meson-0.59.1/meson.egg-info/SOURCES.txt 2021-08-18 13:26:15.000000000 +0200 +++ new/meson-0.59.2/meson.egg-info/SOURCES.txt 2021-09-28 19:15:06.000000000 +0200 @@ -892,6 +892,12 @@ test cases/common/153 wrap file should not failed/subprojects/foo.wrap test cases/common/153 wrap file should not failed/subprojects/patchdir.wrap test cases/common/153 wrap file should not failed/subprojects/zlib.wrap +test cases/common/153 wrap file should not failed/subprojects/bar-1.0/bar.c +test cases/common/153 wrap file should not failed/subprojects/bar-1.0/meson.build +test cases/common/153 wrap file should not failed/subprojects/foo-1.0/foo.c +test cases/common/153 wrap file should not failed/subprojects/foo-1.0/meson.build +test cases/common/153 wrap file should not failed/subprojects/foo-1.0-patchdir/foo.c +test cases/common/153 wrap file should not failed/subprojects/foo-1.0-patchdir/meson.build test cases/common/153 wrap file should not failed/subprojects/packagecache/foo-1.0-patch.tar.xz test cases/common/153 wrap file should not failed/subprojects/packagecache/foo-1.0.tar.xz test cases/common/153 wrap file should not failed/subprojects/packagecache/zlib-1.2.8-8-wrap.zip @@ -1697,6 +1703,7 @@ test cases/common/98 subproject subdir/subprojects/sub/lib/sub.c test cases/common/98 subproject subdir/subprojects/sub/lib/sub.h test cases/common/98 subproject subdir/subprojects/sub_implicit/meson.build +test cases/common/98 subproject subdir/subprojects/sub_implicit/meson_options.txt test cases/common/98 subproject subdir/subprojects/sub_implicit/subprojects/subsub/foo.h test cases/common/98 subproject subdir/subprojects/sub_implicit/subprojects/subsub/meson.build test cases/common/98 subproject subdir/subprojects/sub_implicit/subprojects/subsub/subprojects/subsubsub.wrap @@ -1917,6 +1924,8 @@ test cases/failing/113 cmake executable dependency/test.json test cases/failing/113 cmake executable dependency/subprojects/cmlib/CMakeLists.txt test cases/failing/113 cmake executable dependency/subprojects/cmlib/main.c +test cases/failing/114 allow_fallback with fallback/meson.build +test cases/failing/114 allow_fallback with fallback/test.json test cases/failing/12 string arithmetic/meson.build test cases/failing/12 string arithmetic/test.json test cases/failing/13 array arithmetic/meson.build @@ -2450,8 +2459,12 @@ test cases/frameworks/4 qt/meson.build test cases/frameworks/4 qt/meson_options.txt test cases/frameworks/4 qt/q5core.cpp +test cases/frameworks/4 qt/qt4_lang.qrc test cases/frameworks/4 qt/qt4core_fr.ts +test cases/frameworks/4 qt/qt4embedded_fr.ts +test cases/frameworks/4 qt/qt5_lang.qrc test cases/frameworks/4 qt/qt5core_fr.ts +test cases/frameworks/4 qt/qt5embedded_fr.ts test cases/frameworks/4 qt/qtinterface.cpp test cases/frameworks/4 qt/stuff.qrc test cases/frameworks/4 qt/stuff2.qrc @@ -2778,10 +2791,13 @@ test cases/python/1 basic/gluon/gluonator.py test cases/python/1 basic/subdir/meson.build test cases/python/1 basic/subdir/subprog.py -test cases/python/2 extmodule/blaster.py +test cases/python/2 extmodule/blaster.py.in test cases/python/2 extmodule/meson.build +test cases/python/2 extmodule/test.json test cases/python/2 extmodule/ext/meson.build test cases/python/2 extmodule/ext/tachyon_module.c +test cases/python/2 extmodule/ext/nested/meson.build +test cases/python/2 extmodule/ext/wrongdir/meson.build test cases/python/3 cython/cytest.py test cases/python/3 cython/meson.build test cases/python/3 cython/libdir/cstorer.pxd @@ -3303,6 +3319,8 @@ test cases/unit/79 user options for subproject/.gitignore test cases/unit/79 user options for subproject/75 user options for subproject/.gitignore test cases/unit/79 user options for subproject/75 user options for subproject/meson.build +test cases/unit/79 user options for subproject/subprojects/sub/meson.build +test cases/unit/79 user options for subproject/subprojects/sub/meson_options.txt test cases/unit/8 -L -l order/first.pc test cases/unit/8 -L -l order/meson.build test cases/unit/8 -L -l order/prog.c diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.1/mesonbuild/_typing.py new/meson-0.59.2/mesonbuild/_typing.py --- old/meson-0.59.1/mesonbuild/_typing.py 2021-08-18 13:22:15.000000000 +0200 +++ new/meson-0.59.2/mesonbuild/_typing.py 2021-09-28 19:04:57.000000000 +0200 @@ -36,6 +36,9 @@ class StringProtocol(Protocol): def __str__(self) -> str: ... +class SizedStringProtocol(Protocol, StringProtocol, typing.Sized): + pass + class ImmutableListProtocol(Protocol[T]): """A protocol used in cases where a list is returned, but should not be diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.1/mesonbuild/compilers/compilers.py new/meson-0.59.2/mesonbuild/compilers/compilers.py --- old/meson-0.59.1/mesonbuild/compilers/compilers.py 2021-08-18 13:22:33.000000000 +0200 +++ new/meson-0.59.2/mesonbuild/compilers/compilers.py 2021-09-28 19:04:57.000000000 +0200 @@ -1150,11 +1150,12 @@ def get_compiler_check_args(self, mode: CompileCheckMode) -> T.List[str]: """Arguments to pass the compiler and/or linker for checks. - The default implementation turns off optimizations. mode should be - one of: + The default implementation turns off optimizations. Examples of things that go here: - extra arguments for error checking + - Arguments required to make the compiler exit with a non-zero status + when something is wrong. """ return self.get_no_optimization_args() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.1/mesonbuild/compilers/mixins/clang.py new/meson-0.59.2/mesonbuild/compilers/mixins/clang.py --- old/meson-0.59.1/mesonbuild/compilers/mixins/clang.py 2021-08-18 13:22:15.000000000 +0200 +++ new/meson-0.59.2/mesonbuild/compilers/mixins/clang.py 2021-09-28 19:04:57.000000000 +0200 @@ -81,7 +81,11 @@ return ['-include-pch', os.path.join(pch_dir, self.get_pch_name(header))] def get_compiler_check_args(self, mode: CompileCheckMode) -> T.List[str]: - myargs = [] # type: T.List[str] + # Clang is different than GCC, it will return True when a symbol isn't + # defined in a header. Specifically this seems ot have something to do + # with functions that may be in a header on some systems, but not all of + # them. `strlcat` specifically with can trigger this. + myargs: T.List[str] = ['-Werror=implicit-function-declaration'] if mode is CompileCheckMode.COMPILE: myargs.extend(['-Werror=unknown-warning-option', '-Werror=unused-command-line-argument']) if mesonlib.version_compare(self.version, '>=3.6.0'): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.1/mesonbuild/compilers/objc.py new/meson-0.59.2/mesonbuild/compilers/objc.py --- old/meson-0.59.1/mesonbuild/compilers/objc.py 2021-08-18 13:22:15.000000000 +0200 +++ new/meson-0.59.2/mesonbuild/compilers/objc.py 2021-09-28 19:04:57.000000000 +0200 @@ -90,7 +90,7 @@ opts.update({ OptionKey('std', machine=self.for_machine, lang='c'): coredata.UserComboOption( 'C language standard to use', - ['none', 'c89', 'c99', 'c11', 'c17', 'gnu99', 'gnu11'], + ['none', 'c89', 'c99', 'c11', 'c17', 'gnu89', 'gnu99', 'gnu11', 'gnu17'], 'none', ) }) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.1/mesonbuild/compilers/objcpp.py new/meson-0.59.2/mesonbuild/compilers/objcpp.py --- old/meson-0.59.1/mesonbuild/compilers/objcpp.py 2021-08-18 13:22:15.000000000 +0200 +++ new/meson-0.59.2/mesonbuild/compilers/objcpp.py 2021-09-28 19:04:57.000000000 +0200 @@ -91,7 +91,7 @@ opts.update({ OptionKey('std', machine=self.for_machine, lang='cpp'): coredata.UserComboOption( 'C++ language standard to use', - ['none', 'c++98', 'c++11', 'c++14', 'c++17'], + ['none', 'c++98', 'c++11', 'c++14', 'c++17', 'gnu++98', 'gnu++11', 'gnu++14', 'gnu++17'], 'none', ) }) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.1/mesonbuild/coredata.py new/meson-0.59.2/mesonbuild/coredata.py --- old/meson-0.59.1/mesonbuild/coredata.py 2021-08-18 13:22:33.000000000 +0200 +++ new/meson-0.59.2/mesonbuild/coredata.py 2021-09-28 19:04:57.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.1' +version = '0.59.2' 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.1/mesonbuild/dependencies/base.py new/meson-0.59.2/mesonbuild/dependencies/base.py --- old/meson-0.59.1/mesonbuild/dependencies/base.py 2021-08-18 13:22:33.000000000 +0200 +++ new/meson-0.59.2/mesonbuild/dependencies/base.py 2021-09-28 19:04:57.000000000 +0200 @@ -104,7 +104,7 @@ return mlog.red('NO') if not self.version: return mlog.green('YES') - return mlog.AnsiText([mlog.green('YES'), ' ', mlog.cyan(self.version)]) + return mlog.AnsiText(mlog.green('YES'), ' ', mlog.cyan(self.version)) def get_compile_args(self) -> T.List[str]: if self.include_type == 'system': diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.1/mesonbuild/environment.py new/meson-0.59.2/mesonbuild/environment.py --- old/meson-0.59.1/mesonbuild/environment.py 2021-08-18 13:22:15.000000000 +0200 +++ new/meson-0.59.2/mesonbuild/environment.py 2021-09-28 19:04:57.000000000 +0200 @@ -313,6 +313,9 @@ trial = 'x86' elif trial == 'arm64': trial = 'aarch64' + elif trial.startswith('aarch64'): + # This can be `aarch64_be` + trial = 'aarch64' elif trial.startswith('arm') or trial.startswith('earm'): trial = 'arm' elif trial.startswith(('powerpc64', 'ppc64')): @@ -358,7 +361,7 @@ return trial -def detect_cpu(compilers: CompilersDict): +def detect_cpu(compilers: CompilersDict) -> str: if mesonlib.is_windows(): trial = detect_windows_arch(compilers) elif mesonlib.is_freebsd() or mesonlib.is_netbsd() or mesonlib.is_openbsd() or mesonlib.is_aix(): @@ -372,10 +375,13 @@ # Same check as above for cpu_family if any_compiler_has_define(compilers, '__i386__'): trial = 'i686' # All 64 bit cpus have at least this level of x86 support. - elif trial == 'aarch64': + elif trial.startswith('aarch64'): # Same check as above for cpu_family if any_compiler_has_define(compilers, '__arm__'): trial = 'arm' + else: + # for aarch64_be + trial = 'aarch64' elif trial.startswith('earm'): trial = 'arm' elif trial == 'e2k': @@ -386,20 +392,22 @@ trial = 'mips' else: trial = 'mips64' + elif trial == 'ppc': + # AIX always returns powerpc, check here for 64-bit + if any_compiler_has_define(compilers, '__64BIT__'): + trial = 'ppc64' # Add more quirks here as bugs are reported. Keep in sync with # detect_cpu_family() above. return trial -def detect_system(): +def detect_system() -> str: if sys.platform == 'cygwin': return 'cygwin' return platform.system().lower() -def detect_msys2_arch(): - if 'MSYSTEM_CARCH' in os.environ: - return os.environ['MSYSTEM_CARCH'] - return None +def detect_msys2_arch() -> T.Optional[str]: + return os.environ.get('MSYSTEM_CARCH', None) def detect_machine_info(compilers: T.Optional[CompilersDict] = None) -> MachineInfo: """Detect the machine we're running on diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.1/mesonbuild/interpreter/dependencyfallbacks.py new/meson-0.59.2/mesonbuild/interpreter/dependencyfallbacks.py --- old/meson-0.59.1/mesonbuild/interpreter/dependencyfallbacks.py 2021-08-18 13:22:25.000000000 +0200 +++ new/meson-0.59.2/mesonbuild/interpreter/dependencyfallbacks.py 2021-09-28 19:04:57.000000000 +0200 @@ -16,7 +16,8 @@ class DependencyFallbacksHolder(MesonInterpreterObject): - def __init__(self, interpreter: 'Interpreter', names: T.List[str], allow_fallback: T.Optional[bool] = None) -> None: + def __init__(self, interpreter: 'Interpreter', names: T.List[str], allow_fallback: T.Optional[bool] = None, + default_options: T.Optional[T.List[str]] = None) -> None: super().__init__(subproject=interpreter.subproject) self.interpreter = interpreter self.subproject = interpreter.subproject @@ -27,7 +28,7 @@ self.allow_fallback = allow_fallback self.subproject_name = None self.subproject_varname = None - self.subproject_kwargs = None + self.subproject_kwargs = {'default_options': default_options or []} self.names: T.List[str] = [] for name in names: if not name: @@ -39,13 +40,12 @@ raise InterpreterException('dependency_fallbacks name {name!r} is duplicated') self.names.append(name) - def set_fallback(self, fbinfo: T.Optional[T.Union[T.List[str], str]], default_options: T.Optional[T.List[str]] = None) -> None: - # Legacy: This converts dependency()'s fallback and default_options kwargs. + def set_fallback(self, fbinfo: T.Optional[T.Union[T.List[str], str]]) -> None: + # Legacy: This converts dependency()'s fallback kwargs. if fbinfo is None: - if default_options is not None: - mlog.warning('The "default_options" keyword argument does nothing without a fallback subproject.', - location=self.interpreter.current_node) return + if self.allow_fallback is not None: + raise InvalidArguments('"fallback" and "allow_fallback" arguments are mutually exclusive') fbinfo = stringlistify(fbinfo) if len(fbinfo) == 0: # dependency('foo', fallback: []) is the same as dependency('foo', allow_fallback: false) @@ -58,10 +58,9 @@ subp_name, varname = fbinfo else: raise InterpreterException('Fallback info must have one or two items.') - kwargs = {'default_options': default_options or []} - self._subproject_impl(subp_name, varname, kwargs) + self._subproject_impl(subp_name, varname) - def _subproject_impl(self, subp_name: str, varname: str, kwargs: TYPE_nkwargs) -> None: + def _subproject_impl(self, subp_name: str, varname: str) -> None: if not varname: # If no variable name is specified, check if the wrap file has one. # If the wrap file has a variable name, better use it because the @@ -73,7 +72,6 @@ assert self.subproject_name is None self.subproject_name = subp_name self.subproject_varname = varname - self.subproject_kwargs = kwargs def _do_dependency_cache(self, kwargs: TYPE_nkwargs, func_args: TYPE_nvar, func_kwargs: TYPE_nkwargs) -> T.Optional[Dependency]: name = func_args[0] @@ -316,7 +314,7 @@ if subp_name: self.forcefallback |= subp_name in force_fallback_for if self.forcefallback or self.allow_fallback is True or required or self._get_subproject(subp_name): - self._subproject_impl(subp_name, varname, {}) + self._subproject_impl(subp_name, varname) break candidates = self._get_candidates() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.1/mesonbuild/interpreter/interpreter.py new/meson-0.59.2/mesonbuild/interpreter/interpreter.py --- old/meson-0.59.1/mesonbuild/interpreter/interpreter.py 2021-08-18 13:22:33.000000000 +0200 +++ new/meson-0.59.2/mesonbuild/interpreter/interpreter.py 2021-09-28 19:04:57.000000000 +0200 @@ -1560,8 +1560,8 @@ raise InvalidArguments('"allow_fallback" argument must be boolean') fallback = kwargs.get('fallback') default_options = kwargs.get('default_options') - df = DependencyFallbacksHolder(self, names, allow_fallback) - df.set_fallback(fallback, default_options) + df = DependencyFallbacksHolder(self, names, allow_fallback, default_options) + df.set_fallback(fallback) not_found_message = kwargs.get('not_found_message', '') if not isinstance(not_found_message, str): raise InvalidArguments('The not_found_message must be a string.') @@ -1582,7 +1582,7 @@ raise InvalidArguments('The `include_type` kwarg must be a string') actual = d.get_include_type() if wanted != actual: - mlog.debug(f'Current include type of {names[0]} is {actual}. Converting to requested {wanted}') + mlog.debug(f'Current include type of {args[0]} is {actual}. Converting to requested {wanted}') d = d.generate_system_dependency(wanted) return d diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.1/mesonbuild/mesonlib/universal.py new/meson-0.59.2/mesonbuild/mesonlib/universal.py --- old/meson-0.59.1/mesonbuild/mesonlib/universal.py 2021-08-18 13:22:15.000000000 +0200 +++ new/meson-0.59.2/mesonbuild/mesonlib/universal.py 2021-09-28 19:04:57.000000000 +0200 @@ -644,7 +644,7 @@ return platname == 'windows' def is_wsl() -> bool: - return is_linux() and 'microsoft' in platform.version().lower() + return is_linux() and 'microsoft' in platform.release().lower() def is_cygwin() -> bool: return sys.platform == 'cygwin' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.1/mesonbuild/mesonmain.py new/meson-0.59.2/mesonbuild/mesonmain.py --- old/meson-0.59.1/mesonbuild/mesonmain.py 2021-08-18 13:22:33.000000000 +0200 +++ new/meson-0.59.2/mesonbuild/mesonmain.py 2021-09-28 19:04:57.000000000 +0200 @@ -82,6 +82,7 @@ '-requiresAny', '-requires', 'Microsoft.VisualStudio.Component.VC.Tools.x86.x64', '-products', '*', + '-utf8', '-format', 'json' ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.1/mesonbuild/mlog.py new/meson-0.59.2/mesonbuild/mlog.py --- old/meson-0.59.1/mesonbuild/mlog.py 2021-08-18 13:22:15.000000000 +0200 +++ new/meson-0.59.2/mesonbuild/mlog.py 2021-09-28 19:04:57.000000000 +0200 @@ -22,7 +22,7 @@ from pathlib import Path if T.TYPE_CHECKING: - from ._typing import StringProtocol + from ._typing import StringProtocol, SizedStringProtocol """This is (mostly) a standalone module used to write logging information about Meson runs. Some output goes to screen, @@ -143,7 +143,7 @@ TV_LoggableList = T.List[TV_Loggable] class AnsiText: - def __init__(self, *args: TV_LoggableList): + def __init__(self, *args: 'SizedStringProtocol'): self.args = args def __len__(self) -> int: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.1/mesonbuild/modules/gnome.py new/meson-0.59.2/mesonbuild/modules/gnome.py --- old/meson-0.59.1/mesonbuild/modules/gnome.py 2021-08-18 13:22:33.000000000 +0200 +++ new/meson-0.59.2/mesonbuild/modules/gnome.py 2021-09-28 19:04:57.000000000 +0200 @@ -815,7 +815,9 @@ def _get_scanner_cflags(cflags): 'g-ir-scanner only accepts -I/-D/-U; must ignore all other flags' for f in cflags: - if f.startswith(('-D', '-U', '-I')): + # _FORTIFY_SOURCE depends on / works together with -O, on the other hand this + # just invokes the preprocessor anyway + if f.startswith(('-D', '-U', '-I')) and not f.startswith('-D_FORTIFY_SOURCE'): yield f @staticmethod diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.1/mesonbuild/modules/python.py new/meson-0.59.2/mesonbuild/modules/python.py --- old/meson-0.59.1/mesonbuild/modules/python.py 2021-08-18 13:22:33.000000000 +0200 +++ new/meson-0.59.2/mesonbuild/modules/python.py 2021-09-28 19:04:57.000000000 +0200 @@ -272,6 +272,7 @@ 'variables': sysconfig.get_config_vars(), 'paths': sysconfig.get_paths(), 'install_paths': install_paths, + 'sys_paths': sys.path, 'version': sysconfig.get_python_version(), 'platform': sysconfig.get_platform(), 'is_pypy': '__pypy__' in sys.builtin_module_names, @@ -279,15 +280,82 @@ })) ''' +if T.TYPE_CHECKING: + class PythonIntrospectionDict(TypedDict): + + install_paths: T.Dict[str, str] + is_pypy: bool + link_libpython: bool + paths: T.Dict[str, str] + platform: str + suffix : str + variables: T.Dict[str, str] + version: str + class PythonExternalProgram(ExternalProgram): def __init__(self, name: str, command: T.Optional[T.List[str]] = None, ext_prog: T.Optional[ExternalProgram] = None): if ext_prog is None: super().__init__(name, command=command, silent=True) else: - self.name = ext_prog.name + self.name = name self.command = ext_prog.command self.path = ext_prog.path - self.info: T.Dict[str, str] = {} + self.info: 'PythonIntrospectionDict' = { + 'install_paths': {}, + 'is_pypy': False, + 'link_libpython': False, + 'paths': {}, + 'platform': 'sentinal', + 'variables': {}, + 'version': '0.0', + } + + def _check_version(self, version: str) -> bool: + if self.name == 'python2': + return mesonlib.version_compare(version, '< 3.0') + elif self.name == 'python3': + return mesonlib.version_compare(version, '>= 3.0') + return True + + def sanity(self) -> bool: + # Sanity check, we expect to have something that at least quacks in tune + cmd = self.get_command() + ['-c', INTROSPECT_COMMAND] + p, stdout, stderr = mesonlib.Popen_safe(cmd) + try: + info = json.loads(stdout) + except json.JSONDecodeError: + info = None + mlog.debug('Could not introspect Python (%s): exit code %d' % (str(p.args), p.returncode)) + mlog.debug('Program stdout:\n') + mlog.debug(stdout) + mlog.debug('Program stderr:\n') + mlog.debug(stderr) + + if info is not None and self._check_version(info['version']): + variables = info['variables'] + info['suffix'] = variables.get('EXT_SUFFIX') or variables.get('SO') or variables.get('.so') + self.info = T.cast('PythonIntrospectionDict', info) + self.platlib = self._get_path('platlib') + self.purelib = self._get_path('purelib') + return True + else: + return False + + def _get_path(self, key: str) -> None: + user_dir = str(Path.home()) + sys_paths = self.info['sys_paths'] + rel_path = self.info['install_paths'][key][1:] + if not any(p.endswith(rel_path) for p in sys_paths if not p.startswith(user_dir)): + # On Debian derivatives sysconfig install path is broken and is not + # included in the locations python actually lookup. + # See https://github.com/mesonbuild/meson/issues/8739. + mlog.warning('Broken python installation detected. Python files', + 'installed by Meson might not be found by python interpreter.', + once=True) + if mesonlib.is_debianlike(): + rel_path = 'lib/python3/dist-packages' + return rel_path + class PythonInstallation(ExternalProgramHolder): def __init__(self, python, interpreter): @@ -295,10 +363,10 @@ info = python.info prefix = self.interpreter.environment.coredata.get_option(mesonlib.OptionKey('prefix')) self.variables = info['variables'] + self.suffix = info['suffix'] self.paths = info['paths'] - install_paths = info['install_paths'] - self.platlib_install_path = os.path.join(prefix, install_paths['platlib'][1:]) - self.purelib_install_path = os.path.join(prefix, install_paths['purelib'][1:]) + self.platlib_install_path = os.path.join(prefix, python.platlib) + self.purelib_install_path = os.path.join(prefix, python.purelib) self.version = info['version'] self.platform = info['platform'] self.is_pypy = info['is_pypy'] @@ -319,10 +387,10 @@ @permittedKwargs(mod_kwargs) def extension_module_method(self, args, kwargs): - if 'subdir' in kwargs and 'install_dir' in kwargs: - raise InvalidArguments('"subdir" and "install_dir" are mutually exclusive') - - if 'subdir' in kwargs: + if 'install_dir' in kwargs: + if 'subdir' in kwargs: + raise InvalidArguments('"subdir" and "install_dir" are mutually exclusive') + else: subdir = kwargs.pop('subdir', '') if not isinstance(subdir, str): raise InvalidArguments('"subdir" argument must be a string.') @@ -340,12 +408,10 @@ new_deps.append(dep) kwargs['dependencies'] = new_deps - suffix = self.variables.get('EXT_SUFFIX') or self.variables.get('SO') or self.variables.get('.so') - # msys2's python3 has "-cpython-36m.dll", we have to be clever - split = suffix.rsplit('.', 1) - suffix = split.pop(-1) - args[0] += ''.join(s for s in split) + # FIXME: explain what the specific cleverness is here + split, suffix = self.suffix.rsplit('.', 1) + args[0] += split kwargs['name_prefix'] = '' kwargs['name_suffix'] = suffix @@ -498,12 +564,6 @@ else: return None - def _check_version(self, name_or_path, version): - if name_or_path == 'python2': - return mesonlib.version_compare(version, '< 3.0') - elif name_or_path == 'python3': - return mesonlib.version_compare(version, '>= 3.0') - return True @FeatureNewKwargs('python.find_installation', '0.49.0', ['disabler']) @FeatureNewKwargs('python.find_installation', '0.51.0', ['modules']) @@ -515,13 +575,15 @@ want_modules = mesonlib.extract_as_list(kwargs, 'modules') # type: T.List[str] found_modules = [] # type: T.List[str] missing_modules = [] # type: T.List[str] + fallback = args[0] if args else '' + display_name = fallback or 'python' if len(args) > 1: raise InvalidArguments('find_installation takes zero or one positional argument.') name_or_path = state.environment.lookup_binary_entry(MachineChoice.HOST, 'python') if name_or_path is None and args: - name_or_path = args[0] + name_or_path = fallback if not isinstance(name_or_path, str): raise InvalidArguments('find_installation argument must be a string.') @@ -532,8 +594,8 @@ if not name_or_path: python = PythonExternalProgram('python3', mesonlib.python_command) else: - tmp_python = ExternalProgram.from_entry('python3', name_or_path) - python = PythonExternalProgram('python3', ext_prog=tmp_python) + tmp_python = ExternalProgram.from_entry(display_name, name_or_path) + python = PythonExternalProgram(display_name, ext_prog=tmp_python) if not python.found() and mesonlib.is_windows(): pythonpath = self._get_win_pythonpath(name_or_path) @@ -581,25 +643,13 @@ raise mesonlib.MesonException('{} is missing modules: {}'.format(name_or_path or 'python', ', '.join(missing_modules))) return NonExistingExternalProgram() else: - # Sanity check, we expect to have something that at least quacks in tune - try: - cmd = python.get_command() + ['-c', INTROSPECT_COMMAND] - p, stdout, stderr = mesonlib.Popen_safe(cmd) - info = json.loads(stdout) - except json.JSONDecodeError: - info = None - mlog.debug('Could not introspect Python (%s): exit code %d' % (str(p.args), p.returncode)) - mlog.debug('Program stdout:\n') - mlog.debug(stdout) - mlog.debug('Program stderr:\n') - mlog.debug(stderr) + sane = python.sanity() - if isinstance(info, dict) and 'version' in info and self._check_version(name_or_path, info['version']): - python.info = info + if sane: return python else: if required: - raise mesonlib.MesonException(f'{python} is not a valid python or it is missing setuptools') + raise mesonlib.MesonException(f'{python} is not a valid python or it is missing distutils') return NonExistingExternalProgram() raise mesonlib.MesonBugException('Unreachable code was reached (PythonModule.find_installation).') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.1/mesonbuild/modules/qt.py new/meson-0.59.2/mesonbuild/modules/qt.py --- old/meson-0.59.1/mesonbuild/modules/qt.py 2021-08-18 13:22:33.000000000 +0200 +++ new/meson-0.59.2/mesonbuild/modules/qt.py 2021-09-28 19:04:57.000000000 +0200 @@ -103,10 +103,12 @@ def __init__(self, interpreter: 'Interpreter', qt_version: int = 5): ExtensionModule.__init__(self, interpreter) self.qt_version = qt_version - self.moc: ExternalProgram = NonExistingExternalProgram('moc') - self.uic: ExternalProgram = NonExistingExternalProgram('uic') - self.rcc: ExternalProgram = NonExistingExternalProgram('rcc') - self.lrelease: ExternalProgram = NonExistingExternalProgram('lrelease') + self.tools: T.Dict[str, ExternalProgram] = { + 'moc': NonExistingExternalProgram('moc'), + 'uic': NonExistingExternalProgram('uic'), + 'rcc': NonExistingExternalProgram('rcc'), + 'lrelease': NonExistingExternalProgram('lrelease'), + } self.methods.update({ 'has_tools': self.has_tools, 'preprocess': self.preprocess, @@ -120,13 +122,10 @@ """Detect Qt (4 or 5) moc, uic, rcc in the specified bindir or in PATH""" # It is important that this list does not change order as the order of # the returned ExternalPrograms will change as well - bins = ['moc', 'uic', 'rcc', 'lrelease'] - found = {b: NonExistingExternalProgram(name=f'{b}-qt{qt_dep.qtver}') - for b in bins} wanted = f'== {qt_dep.version}' def gen_bins() -> T.Generator[T.Tuple[str, str], None, None]: - for b in bins: + for b in self.tools: if qt_dep.bindir: yield os.path.join(qt_dep.bindir, b), b # prefer the <tool>-qt<version> of the tool to the plain one, as we @@ -135,7 +134,7 @@ yield b, b for b, name in gen_bins(): - if found[name].found(): + if self.tools[name].found(): continue if name == 'lrelease': @@ -158,7 +157,7 @@ version_func=get_version, wanted=wanted) if p.found(): - setattr(self, name, p) + self.tools[name] = p def _detect_tools(self, state: 'ModuleState', method: str, required: bool = True) -> None: if self._tools_detected: @@ -178,10 +177,10 @@ mlog.bold('https://bugreports.qt.io/browse/QTBUG-45460'), fatal=False) else: suffix = f'-qt{self.qt_version}' - self.moc = NonExistingExternalProgram(name='moc' + suffix) - self.uic = NonExistingExternalProgram(name='uic' + suffix) - self.rcc = NonExistingExternalProgram(name='rcc' + suffix) - self.lrelease = NonExistingExternalProgram(name='lrelease' + suffix) + self.tools['moc'] = NonExistingExternalProgram(name='moc' + suffix) + self.tools['uic'] = NonExistingExternalProgram(name='uic' + suffix) + self.tools['rcc'] = NonExistingExternalProgram(name='rcc' + suffix) + self.tools['lrelease'] = NonExistingExternalProgram(name='lrelease' + suffix) @staticmethod def _qrc_nodes(state: 'ModuleState', rcc_file: 'FileOrString') -> T.Tuple[str, T.List[str]]: @@ -255,7 +254,7 @@ mlog.log('qt.has_tools skipped: feature', mlog.bold(feature), 'disabled') return False self._detect_tools(state, method, required=False) - for tool in (self.moc, self.uic, self.rcc, self.lrelease): + for tool in self.tools.values(): if not tool.found(): if required: raise MesonException('Qt tools not found') @@ -282,7 +281,7 @@ def _compile_resources_impl(self, state: 'ModuleState', kwargs: 'ResourceCompilerKwArgs') -> T.List[build.CustomTarget]: # Avoid the FeatureNew when dispatching from preprocess self._detect_tools(state, kwargs['method']) - if not self.rcc.found(): + if not self.tools['rcc'].found(): err_msg = ("{0} sources specified and couldn't find {1}, " "please check your qt{2} installation") raise MesonException(err_msg.format('RCC', f'rcc-qt{self.qt_version}', self.qt_version)) @@ -307,7 +306,7 @@ rcc_kwargs: T.Dict[str, T.Any] = { # TODO: if CustomTarget had typing information we could use that here... 'input': sources, 'output': name + '.cpp', - 'command': self.rcc.get_command() + ['-name', name, '-o', '@OUTPUT@'] + extra_args + ['@INPUT@'] + DEPFILE_ARGS, + 'command': self.tools['rcc'].get_command() + ['-name', name, '-o', '@OUTPUT@'] + extra_args + ['@INPUT@'] + DEPFILE_ARGS, 'depend_files': qrc_deps, 'depfile': f'{name}.d', } @@ -324,7 +323,7 @@ rcc_kwargs = { 'input': rcc_file, 'output': f'{name}.cpp', - 'command': self.rcc.get_command() + ['-name', '@BASENAME@', '-o', '@OUTPUT@'] + extra_args + ['@INPUT@'] + DEPFILE_ARGS, + 'command': self.tools['rcc'].get_command() + ['-name', '@BASENAME@', '-o', '@OUTPUT@'] + extra_args + ['@INPUT@'] + DEPFILE_ARGS, 'depend_files': qrc_deps, 'depfile': f'{name}.d', } @@ -349,14 +348,14 @@ def _compile_ui_impl(self, state: 'ModuleState', kwargs: 'UICompilerKwArgs') -> build.GeneratedList: # Avoid the FeatureNew when dispatching from preprocess self._detect_tools(state, kwargs['method']) - if not self.uic.found(): + if not self.tools['uic'].found(): err_msg = ("{0} sources specified and couldn't find {1}, " "please check your qt{2} installation") raise MesonException(err_msg.format('UIC', f'uic-qt{self.qt_version}', self.qt_version)) # TODO: This generator isn't added to the generator list in the Interpreter gen = build.Generator( - self.uic, + self.tools['uic'], kwargs['extra_args'] + ['-o', '@OUTPUT@', '@INPUT@'], ['ui_@BASENAME@.h'], name=f'Qt{self.qt_version} ui') @@ -380,7 +379,7 @@ def _compile_moc_impl(self, state: 'ModuleState', kwargs: 'MocCompilerKwArgs') -> T.List[build.GeneratedList]: # Avoid the FeatureNew when dispatching from preprocess self._detect_tools(state, kwargs['method']) - if not self.moc.found(): + if not self.tools['moc'].found(): err_msg = ("{0} sources specified and couldn't find {1}, " "please check your qt{2} installation") raise MesonException(err_msg.format('MOC', f'uic-qt{self.qt_version}', self.qt_version)) @@ -398,12 +397,12 @@ arguments = kwargs['extra_args'] + inc + compile_args + ['@INPUT@', '-o', '@OUTPUT@'] if kwargs['headers']: moc_gen = build.Generator( - self.moc, arguments, ['moc_@BASENAME@.cpp'], + self.tools['moc'], arguments, ['moc_@BASENAME@.cpp'], name=f'Qt{self.qt_version} moc header') output.append(moc_gen.process_files(kwargs['headers'], state)) if kwargs['sources']: moc_gen = build.Generator( - self.moc, arguments, ['@BASENAME@.moc'], + self.tools['moc'], arguments, ['@BASENAME@.moc'], name=f'Qt{self.qt_version} moc source') output.append(moc_gen.process_files(kwargs['sources'], state)) @@ -497,19 +496,19 @@ ts_files.append(c.rstrip('.qm') + '.ts') else: raise MesonException(f'qt.compile_translations: qresource can only contain qm files, found {c}') - results = self.preprocess(state, [], {'qresources': qresource, 'rcc_extra_arguments': kwargs['rcc_extra_arguments']}) + results = self.preprocess(state, [], {'qresources': qresource_file, 'rcc_extra_arguments': kwargs['rcc_extra_arguments']}) self._detect_tools(state, kwargs['method']) translations: T.List[build.CustomTarget] = [] for ts in ts_files: - if not self.lrelease.found(): + if not self.tools['lrelease'].found(): raise MesonException('qt.compile_translations: ' + - self.lrelease.name + ' not found') + self.tools['lrelease'].name + ' not found') if qresource: outdir = os.path.dirname(os.path.normpath(os.path.join(state.subdir, ts))) ts = os.path.basename(ts) else: outdir = state.subdir - cmd = [self.lrelease, '@INPUT@', '-qm', '@OUTPUT@'] + cmd = [self.tools['lrelease'], '@INPUT@', '-qm', '@OUTPUT@'] lrelease_kwargs = {'output': '@BASENAME@.qm', 'input': ts, 'install': kwargs.get('install', False), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.1/mesonbuild/mtest.py new/meson-0.59.2/mesonbuild/mtest.py --- old/meson-0.59.1/mesonbuild/mtest.py 2021-07-20 10:56:20.000000000 +0200 +++ new/meson-0.59.2/mesonbuild/mtest.py 2021-09-28 19:04:57.000000000 +0200 @@ -990,7 +990,14 @@ if self.test.workdir: filename = os.path.join(self.test.workdir, filename) - self.junit = et.parse(filename) + try: + self.junit = et.parse(filename) + except FileNotFoundError: + # This can happen if the test fails to run or complete for some + # reason, like the rpath for libgtest isn't properly set. ExitCode + # will handle the failure, don't generate a stacktrace. + pass + super().complete(returncode, res, stdo, stde) TestRun.PROTOCOL_TO_CLASS[TestProtocol.GTEST] = TestRunGTest diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.1/mesonbuild/programs.py new/meson-0.59.2/mesonbuild/programs.py --- old/meson-0.59.1/mesonbuild/programs.py 2021-08-18 13:22:15.000000000 +0200 +++ new/meson-0.59.2/mesonbuild/programs.py 2021-09-28 19:04:57.000000000 +0200 @@ -295,6 +295,9 @@ commands = self._search_dir(name, search_dir) if commands: return commands + # If there is a directory component, do not look in PATH + if os.path.dirname(name) and not os.path.isabs(name): + return [None] # Do a standard search in PATH path = os.environ.get('PATH', None) if mesonlib.is_windows() and path: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.1/mesonbuild/wrap/wraptool.py new/meson-0.59.2/mesonbuild/wrap/wraptool.py --- old/meson-0.59.1/mesonbuild/wrap/wraptool.py 2021-08-18 13:22:15.000000000 +0200 +++ new/meson-0.59.2/mesonbuild/wrap/wraptool.py 2021-09-28 19:04:57.000000000 +0200 @@ -98,24 +98,24 @@ f.write(url.read()) print(f'Installed {name} version {version} revision {revision}') -def parse_patch_url(patch_url: str) -> T.Tuple[str, int]: +def parse_patch_url(patch_url: str) -> T.Tuple[str, str]: u = urlparse(patch_url) if u.netloc != 'wrapdb.mesonbuild.com': raise WrapException(f'URL {patch_url} does not seems to be a wrapdb patch') arr = u.path.strip('/').split('/') if arr[0] == 'v1': # e.g. https://wrapdb.mesonbuild.com/v1/projects/zlib/1.2.11/5/get_zip - return arr[-3], int(arr[-2]) + return arr[-3], arr[-2] elif arr[0] == 'v2': # e.g. https://wrapdb.mesonbuild.com/v2/zlib_1.2.11-5/get_patch tag = arr[-2] name, version = tag.rsplit('_', 1) version, revision = version.rsplit('-', 1) - return version, int(revision) + return version, revision else: raise WrapException(f'Invalid wrapdb URL {patch_url}') -def get_current_version(wrapfile: str) -> T.Tuple[str, int, str, str, str]: +def get_current_version(wrapfile: str) -> T.Tuple[str, str, str, str, str]: cp = configparser.ConfigParser(interpolation=None) cp.read(wrapfile) wrap_data = cp['wrap-file'] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.1/run_project_tests.py new/meson-0.59.2/run_project_tests.py --- old/meson-0.59.1/run_project_tests.py 2021-08-18 13:22:33.000000000 +0200 +++ new/meson-0.59.2/run_project_tests.py 2021-09-28 19:04:57.000000000 +0200 @@ -52,6 +52,7 @@ from mesonbuild.mlog import blue, bold, cyan, green, red, yellow, normal_green from mesonbuild.coredata import backendlist, version as meson_version from mesonbuild.mesonmain import setup_vsenv +from mesonbuild.modules.python import PythonExternalProgram from run_tests import get_fake_options, run_configure, get_meson_script from run_tests import get_backend_commands, get_backend_args_for_dir, Backend from run_tests import ensure_backend_detects_changes @@ -122,6 +123,9 @@ def fail(self, msg: str) -> None: self.msg = msg +python = PythonExternalProgram(sys.executable) +python.sanity() + class InstalledFile: def __init__(self, raw: T.Dict[str, str]): self.path = raw['file'] @@ -143,6 +147,8 @@ (env.machines.host.is_windows() and compiler in {'pgi', 'dmd', 'ldc'})): canonical_compiler = 'msvc' + python_suffix = python.info['suffix'] + has_pdb = False if self.language in {'c', 'cpp'}: has_pdb = canonical_compiler == 'msvc' @@ -161,6 +167,15 @@ return None # Handle the different types + if self.typ in {'py_implib', 'python_lib', 'python_file'}: + val = p.as_posix() + val = val.replace('@PYTHON_PLATLIB@', python.platlib) + val = val.replace('@PYTHON_PURELIB@', python.purelib) + p = Path(val) + if self.typ == 'python_file': + return p + if self.typ == 'python_lib': + return p.with_suffix(python_suffix) if self.typ in ['file', 'dir']: return p elif self.typ == 'shared_lib': @@ -195,13 +210,15 @@ if self.version: p = p.with_name('{}-{}'.format(p.name, self.version[0])) return p.with_suffix('.pdb') if has_pdb else None - elif self.typ == 'implib' or self.typ == 'implibempty': + elif self.typ in {'implib', 'implibempty', 'py_implib'}: if env.machines.host.is_windows() and canonical_compiler == 'msvc': # only MSVC doesn't generate empty implibs if self.typ == 'implibempty' and compiler == 'msvc': return None return p.parent / (re.sub(r'^lib', '', p.name) + '.lib') elif env.machines.host.is_windows() or env.machines.host.is_cygwin(): + if self.typ == 'py_implib': + p = p.with_suffix(python_suffix) return p.with_suffix('.dll.a') else: return None diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/meson-0.59.1/run_unittests.py new/meson-0.59.2/run_unittests.py --- old/meson-0.59.1/run_unittests.py 2021-08-18 13:22:33.000000000 +0200 +++ new/meson-0.59.2/run_unittests.py 2021-09-28 19:04:57.000000000 +0200 @@ -1708,6 +1708,100 @@ self.assertEqual(k.default, 'foo') self.assertEqual(v.default, 'bar') + def test_detect_cpu_family(self) -> None: + """Test the various cpu familes that we detect and normalize. + + This is particularly useful as both documentation, and to keep testing + platforms that are less common. + """ + + @contextmanager + def mock_trial(value: str) -> T.Iterable[None]: + """Mock all of the ways we could get the trial at once.""" + mocked = mock.Mock(return_value=value) + + with mock.patch('mesonbuild.environment.detect_windows_arch', mocked), \ + mock.patch('mesonbuild.environment.platform.processor', mocked), \ + mock.patch('mesonbuild.environment.platform.machine', mocked): + yield + + cases = [ + ('x86', 'x86'), + ('i386', 'x86'), + ('bepc', 'x86'), # Haiku + ('earm', 'arm'), # NetBSD + ('arm', 'arm'), + ('ppc64', 'ppc64'), + ('powerpc64', 'ppc64'), + ('powerpc', 'ppc'), + ('ppc', 'ppc'), + ('macppc', 'ppc'), + ('power macintosh', 'ppc'), + ('mips64el', 'mips64'), + ('mips64', 'mips64'), + ('mips', 'mips'), + ('mipsel', 'mips'), + ('ip30', 'mips64'), + ('ip35', 'mips64'), + ('parisc64', 'parisc'), + ('sun4u', 'sparc64'), + ('sun4v', 'sparc64'), + ('amd64', 'x86_64'), + ('x64', 'x86_64'), + ('i86pc', 'x86_64'), # Solaris + ('aarch64', 'aarch64'), + ('aarch64_be', 'aarch64'), + ] + + with mock.patch('mesonbuild.environment.any_compiler_has_define', mock.Mock(return_value=False)): + for test, expected in cases: + with self.subTest(test, has_define=False), mock_trial(test): + actual = mesonbuild.environment.detect_cpu_family({}) + self.assertEqual(actual, expected) + + with mock.patch('mesonbuild.environment.any_compiler_has_define', mock.Mock(return_value=True)): + for test, expected in [('x86_64', 'x86'), ('aarch64', 'arm'), ('ppc', 'ppc64')]: + with self.subTest(test, has_define=True), mock_trial(test): + actual = mesonbuild.environment.detect_cpu_family({}) + self.assertEqual(actual, expected) + + def test_detect_cpu(self) -> None: + + @contextmanager + def mock_trial(value: str) -> T.Iterable[None]: + """Mock all of the ways we could get the trial at once.""" + mocked = mock.Mock(return_value=value) + + with mock.patch('mesonbuild.environment.detect_windows_arch', mocked), \ + mock.patch('mesonbuild.environment.platform.processor', mocked), \ + mock.patch('mesonbuild.environment.platform.machine', mocked): + yield + + cases = [ + ('amd64', 'x86_64'), + ('x64', 'x86_64'), + ('i86pc', 'x86_64'), + ('earm', 'arm'), + ('mips64el', 'mips64'), + ('mips64', 'mips64'), + ('mips', 'mips'), + ('mipsel', 'mips'), + ('aarch64', 'aarch64'), + ('aarch64_be', 'aarch64'), + ] + + with mock.patch('mesonbuild.environment.any_compiler_has_define', mock.Mock(return_value=False)): + for test, expected in cases: + with self.subTest(test, has_define=False), mock_trial(test): + actual = mesonbuild.environment.detect_cpu({}) + self.assertEqual(actual, expected) + + with mock.patch('mesonbuild.environment.any_compiler_has_define', mock.Mock(return_value=True)): + for test, expected in [('x86_64', 'i686'), ('aarch64', 'arm'), ('ppc', 'ppc64')]: + with self.subTest(test, has_define=True), mock_trial(test): + actual = mesonbuild.environment.detect_cpu({}) + self.assertEqual(actual, expected) + @unittest.skipIf(is_tarball(), 'Skipping because this is a tarball release') class DataTests(unittest.TestCase): @@ -5334,6 +5428,7 @@ missing prog : NO existing prog : ''' + sys.executable + ''' missing dep : NO + external dep : YES 1.2.3 internal dep : YES Plugins @@ -5351,9 +5446,13 @@ if sys.version_info < (3, 7, 0): # Dictionary order is not stable in Python <3.7, so sort the lines # while comparing - self.assertEqual(sorted(expected_lines), sorted(out_lines)) - else: - self.assertEqual(expected_lines, out_lines) + expected_lines = sorted(expected_lines) + out_lines = sorted(out_lines) + for e, o in zip(expected_lines, out_lines): + if e.startswith(' external dep'): + self.assertRegex(o, r'^ external dep : (YES [0-9.]*|NO)$') + else: + self.assertEqual(o, e) def test_meson_compile(self): """Test the meson compile command.""" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.1/test cases/common/153 wrap file should not failed/subprojects/bar-1.0/bar.c" "new/meson-0.59.2/test cases/common/153 wrap file should not failed/subprojects/bar-1.0/bar.c" --- "old/meson-0.59.1/test cases/common/153 wrap file should not failed/subprojects/bar-1.0/bar.c" 1970-01-01 01:00:00.000000000 +0100 +++ "new/meson-0.59.2/test cases/common/153 wrap file should not failed/subprojects/bar-1.0/bar.c" 2020-03-21 11:05:46.000000000 +0100 @@ -0,0 +1,3 @@ +int bar_dummy_func(void) { + return 42; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.1/test cases/common/153 wrap file should not failed/subprojects/bar-1.0/meson.build" "new/meson-0.59.2/test cases/common/153 wrap file should not failed/subprojects/bar-1.0/meson.build" --- "old/meson-0.59.1/test cases/common/153 wrap file should not failed/subprojects/bar-1.0/meson.build" 1970-01-01 01:00:00.000000000 +0100 +++ "new/meson-0.59.2/test cases/common/153 wrap file should not failed/subprojects/bar-1.0/meson.build" 2020-04-25 15:59:16.000000000 +0200 @@ -0,0 +1,2 @@ +project('static lib bar', 'c') +libbar = static_library('bar', 'bar.c') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.1/test cases/common/153 wrap file should not failed/subprojects/foo-1.0/foo.c" "new/meson-0.59.2/test cases/common/153 wrap file should not failed/subprojects/foo-1.0/foo.c" --- "old/meson-0.59.1/test cases/common/153 wrap file should not failed/subprojects/foo-1.0/foo.c" 1970-01-01 01:00:00.000000000 +0100 +++ "new/meson-0.59.2/test cases/common/153 wrap file should not failed/subprojects/foo-1.0/foo.c" 2020-03-21 11:23:04.000000000 +0100 @@ -0,0 +1,3 @@ +int dummy_func(void) { + return 42; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.1/test cases/common/153 wrap file should not failed/subprojects/foo-1.0/meson.build" "new/meson-0.59.2/test cases/common/153 wrap file should not failed/subprojects/foo-1.0/meson.build" --- "old/meson-0.59.1/test cases/common/153 wrap file should not failed/subprojects/foo-1.0/meson.build" 1970-01-01 01:00:00.000000000 +0100 +++ "new/meson-0.59.2/test cases/common/153 wrap file should not failed/subprojects/foo-1.0/meson.build" 2020-04-25 15:52:29.000000000 +0200 @@ -0,0 +1,2 @@ +project('static lib', 'c') +libfoo = static_library('foo', 'foo.c') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.1/test cases/common/153 wrap file should not failed/subprojects/foo-1.0-patchdir/foo.c" "new/meson-0.59.2/test cases/common/153 wrap file should not failed/subprojects/foo-1.0-patchdir/foo.c" --- "old/meson-0.59.1/test cases/common/153 wrap file should not failed/subprojects/foo-1.0-patchdir/foo.c" 1970-01-01 01:00:00.000000000 +0100 +++ "new/meson-0.59.2/test cases/common/153 wrap file should not failed/subprojects/foo-1.0-patchdir/foo.c" 2020-03-21 11:23:04.000000000 +0100 @@ -0,0 +1,3 @@ +int dummy_func(void) { + return 42; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.1/test cases/common/153 wrap file should not failed/subprojects/foo-1.0-patchdir/meson.build" "new/meson-0.59.2/test cases/common/153 wrap file should not failed/subprojects/foo-1.0-patchdir/meson.build" --- "old/meson-0.59.1/test cases/common/153 wrap file should not failed/subprojects/foo-1.0-patchdir/meson.build" 1970-01-01 01:00:00.000000000 +0100 +++ "new/meson-0.59.2/test cases/common/153 wrap file should not failed/subprojects/foo-1.0-patchdir/meson.build" 2021-04-27 08:50:21.000000000 +0200 @@ -0,0 +1,2 @@ +project('static lib patchdir', 'c') +libfoo = static_library('foo', 'foo.c') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.1/test cases/common/219 include_type dependency/meson.build" "new/meson-0.59.2/test cases/common/219 include_type dependency/meson.build" --- "old/meson-0.59.1/test cases/common/219 include_type dependency/meson.build" 2021-04-27 08:50:21.000000000 +0200 +++ "new/meson-0.59.2/test cases/common/219 include_type dependency/meson.build" 2021-09-28 19:04:57.000000000 +0200 @@ -36,6 +36,9 @@ fallback = dependency('sdffgagf_does_not_exist', include_type: 'system', fallback: ['subDep', 'subDep_dep']) assert(fallback.include_type() == 'system', 'include_type works with dependency fallback') +fallback_empty = dependency('', include_type: 'system', fallback: ['subDep', 'subDep_dep']) +assert(fallback_empty.include_type() == 'system', 'include_type works with empty name dependency fallback') + # Check that PCH works with `include_type : 'system'` See https://github.com/mesonbuild/meson/issues/7167 main_exe = executable('main_exe', 'main.cpp', cpp_pch: 'pch/test.hpp', dependencies: boost_dep) test('main_test', main_exe) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.1/test cases/common/98 subproject subdir/meson.build" "new/meson-0.59.2/test cases/common/98 subproject subdir/meson.build" --- "old/meson-0.59.1/test cases/common/98 subproject subdir/meson.build" 2021-04-27 08:50:21.000000000 +0200 +++ "new/meson-0.59.2/test cases/common/98 subproject subdir/meson.build" 2021-09-28 19:04:57.000000000 +0200 @@ -27,7 +27,7 @@ assert(not d.found(), 'Dependency should be not-found') # Verify that implicit fallback works because subprojects/sub_implicit directory exists -d = dependency('sub_implicit') +d = dependency('sub_implicit', default_options: 'opt=overriden') assert(d.found(), 'Should implicitly fallback') # Verify that implicit fallback works because sub_implicit.wrap has diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.1/test cases/common/98 subproject subdir/subprojects/sub_implicit/meson.build" "new/meson-0.59.2/test cases/common/98 subproject subdir/subprojects/sub_implicit/meson.build" --- "old/meson-0.59.1/test cases/common/98 subproject subdir/subprojects/sub_implicit/meson.build" 2021-04-27 08:50:21.000000000 +0200 +++ "new/meson-0.59.2/test cases/common/98 subproject subdir/subprojects/sub_implicit/meson.build" 2021-09-28 19:04:57.000000000 +0200 @@ -9,3 +9,5 @@ # This one is not overridden but the wrap file tells the variable name to use. glib_dep = dep + +assert(get_option('opt') == 'overriden') \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.1/test cases/common/98 subproject subdir/subprojects/sub_implicit/meson_options.txt" "new/meson-0.59.2/test cases/common/98 subproject subdir/subprojects/sub_implicit/meson_options.txt" --- "old/meson-0.59.1/test cases/common/98 subproject subdir/subprojects/sub_implicit/meson_options.txt" 1970-01-01 01:00:00.000000000 +0100 +++ "new/meson-0.59.2/test cases/common/98 subproject subdir/subprojects/sub_implicit/meson_options.txt" 2021-09-28 19:04:57.000000000 +0200 @@ -0,0 +1 @@ +option('opt', type: 'string', value: 'default') \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.1/test cases/failing/114 allow_fallback with fallback/meson.build" "new/meson-0.59.2/test cases/failing/114 allow_fallback with fallback/meson.build" --- "old/meson-0.59.1/test cases/failing/114 allow_fallback with fallback/meson.build" 1970-01-01 01:00:00.000000000 +0100 +++ "new/meson-0.59.2/test cases/failing/114 allow_fallback with fallback/meson.build" 2021-09-28 19:04:57.000000000 +0200 @@ -0,0 +1,3 @@ +project('fallback and allow_fallback') + +dependency('foo', fallback: 'foo', allow_fallback: false) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.1/test cases/failing/114 allow_fallback with fallback/test.json" "new/meson-0.59.2/test cases/failing/114 allow_fallback with fallback/test.json" --- "old/meson-0.59.1/test cases/failing/114 allow_fallback with fallback/test.json" 1970-01-01 01:00:00.000000000 +0100 +++ "new/meson-0.59.2/test cases/failing/114 allow_fallback with fallback/test.json" 2021-09-28 19:04:57.000000000 +0200 @@ -0,0 +1,8 @@ +{ + "stdout": [ + { + "line": "test cases/failing/114 allow_fallback with fallback/meson.build:3:0: ERROR: \"fallback\" and \"allow_fallback\" arguments are mutually exclusive" + } + ] +} + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.1/test cases/frameworks/4 qt/main.cpp" "new/meson-0.59.2/test cases/frameworks/4 qt/main.cpp" --- "old/meson-0.59.1/test cases/frameworks/4 qt/main.cpp" 2020-08-15 18:27:05.000000000 +0200 +++ "new/meson-0.59.2/test cases/frameworks/4 qt/main.cpp" 2021-09-28 19:04:57.000000000 +0200 @@ -1,4 +1,6 @@ #include <QApplication> +#include <QTranslator> +#include <QDebug> #include "mainWindow.h" #if QT_VERSION > 0x050000 @@ -16,6 +18,13 @@ Q_INIT_RESOURCE(stuff2); #endif QApplication app(argc, argv); + + auto *translator = new QTranslator; + if (translator->load(QLocale(), QT "embedded", "_", ":/lang")) + qApp->installTranslator(translator); + + qDebug() << QObject::tr("Translate me!"); + MainWindow *win = new MainWindow(); QImage qi(":/thing.png"); if(qi.width() != 640) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.1/test cases/frameworks/4 qt/meson.build" "new/meson-0.59.2/test cases/frameworks/4 qt/meson.build" --- "old/meson-0.59.1/test cases/frameworks/4 qt/meson.build" 2021-08-18 13:22:33.000000000 +0200 +++ "new/meson-0.59.2/test cases/frameworks/4 qt/meson.build" 2021-09-28 19:04:57.000000000 +0200 @@ -81,10 +81,16 @@ # qt4-rcc and qt5-rcc take different arguments, for example qt4: ['-compress', '3']; qt5: '--compress=3' qtmodule.preprocess(qt + 'testrccarg', qresources : files(['stuff.qrc', 'stuff2.qrc']), rcc_extra_arguments : '--compress=3', method : get_option('method')) + translations_cpp = qtmodule.compile_translations(qresource: qt+'_lang.qrc') + # unity builds suck and definitely cannot handle two qrc embeds in one compilation unit + unityproof_translations = static_library('unityproof_translations', translations_cpp) + + extra_cpp_args += '-DQT="@0@"'.format(qt) qexe = executable(qt + 'app', sources : ['main.cpp', 'mainWindow.cpp', # Sources that don't need preprocessing. prep, prep_rcc], dependencies : qtdep, + link_with: unityproof_translations, cpp_args: extra_cpp_args, gui_app : true) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.1/test cases/frameworks/4 qt/qt4_lang.qrc" "new/meson-0.59.2/test cases/frameworks/4 qt/qt4_lang.qrc" --- "old/meson-0.59.1/test cases/frameworks/4 qt/qt4_lang.qrc" 1970-01-01 01:00:00.000000000 +0100 +++ "new/meson-0.59.2/test cases/frameworks/4 qt/qt4_lang.qrc" 2021-09-28 19:04:57.000000000 +0200 @@ -0,0 +1,6 @@ +<RCC> + <qresource prefix="/lang"> + <file>qt4embedded_fr.qm</file> + </qresource> +</RCC> + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.1/test cases/frameworks/4 qt/qt4embedded_fr.ts" "new/meson-0.59.2/test cases/frameworks/4 qt/qt4embedded_fr.ts" --- "old/meson-0.59.1/test cases/frameworks/4 qt/qt4embedded_fr.ts" 1970-01-01 01:00:00.000000000 +0100 +++ "new/meson-0.59.2/test cases/frameworks/4 qt/qt4embedded_fr.ts" 2021-09-28 19:04:57.000000000 +0200 @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="fr_FR"> +<context> + <name>QObject</name> + <message> + <location filename="q5core.cpp" line="23"/> + <source>Translate me!</source> + <translation>Traduisez moi!</translation> + </message> +</context> +</TS> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.1/test cases/frameworks/4 qt/qt5_lang.qrc" "new/meson-0.59.2/test cases/frameworks/4 qt/qt5_lang.qrc" --- "old/meson-0.59.1/test cases/frameworks/4 qt/qt5_lang.qrc" 1970-01-01 01:00:00.000000000 +0100 +++ "new/meson-0.59.2/test cases/frameworks/4 qt/qt5_lang.qrc" 2021-09-28 19:04:57.000000000 +0200 @@ -0,0 +1,6 @@ +<RCC> + <qresource prefix="/lang"> + <file>qt5embedded_fr.qm</file> + </qresource> +</RCC> + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.1/test cases/frameworks/4 qt/qt5embedded_fr.ts" "new/meson-0.59.2/test cases/frameworks/4 qt/qt5embedded_fr.ts" --- "old/meson-0.59.1/test cases/frameworks/4 qt/qt5embedded_fr.ts" 1970-01-01 01:00:00.000000000 +0100 +++ "new/meson-0.59.2/test cases/frameworks/4 qt/qt5embedded_fr.ts" 2021-09-28 19:04:57.000000000 +0200 @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.1" language="fr_FR"> +<context> + <name>QObject</name> + <message> + <location filename="q5core.cpp" line="23"/> + <source>Translate me!</source> + <translation>Traduisez moi!</translation> + </message> +</context> +</TS> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.1/test cases/python/2 extmodule/blaster.py" "new/meson-0.59.2/test cases/python/2 extmodule/blaster.py" --- "old/meson-0.59.1/test cases/python/2 extmodule/blaster.py" 2021-04-27 08:49:45.000000000 +0200 +++ "new/meson-0.59.2/test cases/python/2 extmodule/blaster.py" 1970-01-01 01:00:00.000000000 +0100 @@ -1,11 +0,0 @@ -#!/usr/bin/env python3 - -import tachyon - -result = tachyon.phaserize('shoot') - -if not isinstance(result, int): - raise SystemExit('Returned result not an integer.') - -if result != 1: - raise SystemExit(f'Returned result {result} is not 1.') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.1/test cases/python/2 extmodule/blaster.py.in" "new/meson-0.59.2/test cases/python/2 extmodule/blaster.py.in" --- "old/meson-0.59.1/test cases/python/2 extmodule/blaster.py.in" 1970-01-01 01:00:00.000000000 +0100 +++ "new/meson-0.59.2/test cases/python/2 extmodule/blaster.py.in" 2021-09-28 19:04:57.000000000 +0200 @@ -0,0 +1,11 @@ +#!/usr/bin/env python3 + +import @tachyon_module@ as tachyon + +result = tachyon.phaserize('shoot') + +if not isinstance(result, int): + raise SystemExit('Returned result not an integer.') + +if result != 1: + raise SystemExit(f'Returned result {result} is not 1.') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.1/test cases/python/2 extmodule/ext/meson.build" "new/meson-0.59.2/test cases/python/2 extmodule/ext/meson.build" --- "old/meson-0.59.1/test cases/python/2 extmodule/ext/meson.build" 2020-08-15 18:27:05.000000000 +0200 +++ "new/meson-0.59.2/test cases/python/2 extmodule/ext/meson.build" 2021-09-28 19:04:57.000000000 +0200 @@ -1,6 +1,10 @@ pylib = py.extension_module('tachyon', 'tachyon_module.c', dependencies : py_dep, + c_args: '-DMESON_MODULENAME="tachyon"', + install: true, ) +subdir('nested') +subdir('wrongdir') pypathdir = meson.current_build_dir() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.1/test cases/python/2 extmodule/ext/nested/meson.build" "new/meson-0.59.2/test cases/python/2 extmodule/ext/nested/meson.build" --- "old/meson-0.59.1/test cases/python/2 extmodule/ext/nested/meson.build" 1970-01-01 01:00:00.000000000 +0100 +++ "new/meson-0.59.2/test cases/python/2 extmodule/ext/nested/meson.build" 2021-09-28 19:04:57.000000000 +0200 @@ -0,0 +1,16 @@ +py.extension_module('tachyon', + '../tachyon_module.c', + dependencies : py_dep, + c_args: '-DMESON_MODULENAME="nested.tachyon"', + install: true, + subdir: 'nested' +) +py.install_sources( + configure_file( + input: '../../blaster.py.in', + output: 'blaster.py', + configuration: {'tachyon_module': 'nested.tachyon'} + ), + pure: false, + subdir: 'nested', +) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.1/test cases/python/2 extmodule/ext/tachyon_module.c" "new/meson-0.59.2/test cases/python/2 extmodule/ext/tachyon_module.c" --- "old/meson-0.59.1/test cases/python/2 extmodule/ext/tachyon_module.c" 2020-08-15 18:27:05.000000000 +0200 +++ "new/meson-0.59.2/test cases/python/2 extmodule/ext/tachyon_module.c" 2021-09-28 19:04:57.000000000 +0200 @@ -38,7 +38,7 @@ static struct PyModuleDef tachyonmodule = { PyModuleDef_HEAD_INIT, - "tachyon", + MESON_MODULENAME, NULL, -1, TachyonMethods diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.1/test cases/python/2 extmodule/ext/wrongdir/meson.build" "new/meson-0.59.2/test cases/python/2 extmodule/ext/wrongdir/meson.build" --- "old/meson-0.59.1/test cases/python/2 extmodule/ext/wrongdir/meson.build" 1970-01-01 01:00:00.000000000 +0100 +++ "new/meson-0.59.2/test cases/python/2 extmodule/ext/wrongdir/meson.build" 2021-09-28 19:04:57.000000000 +0200 @@ -0,0 +1,7 @@ +py.extension_module('tachyon', + '../tachyon_module.c', + dependencies : py_dep, + c_args: '-DMESON_MODULENAME="tachyon"', + install: true, + install_dir: get_option('libdir') +) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.1/test cases/python/2 extmodule/meson.build" "new/meson-0.59.2/test cases/python/2 extmodule/meson.build" --- "old/meson-0.59.1/test cases/python/2 extmodule/meson.build" 2021-04-01 23:12:21.000000000 +0200 +++ "new/meson-0.59.2/test cases/python/2 extmodule/meson.build" 2021-09-28 19:04:57.000000000 +0200 @@ -18,11 +18,19 @@ subdir('ext') +blaster = configure_file( + input: 'blaster.py.in', + output: 'blaster.py', + configuration: {'tachyon_module': 'tachyon'} +) + test('extmod', py, - args : files('blaster.py'), + args : blaster, env : ['PYTHONPATH=' + pypathdir]) +py.install_sources(blaster, pure: false) +py.install_sources(blaster, subdir: 'pure') py3_pkg_dep = dependency('python3', method: 'pkg-config', required : false) if py3_pkg_dep.found() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.1/test cases/python/2 extmodule/test.json" "new/meson-0.59.2/test cases/python/2 extmodule/test.json" --- "old/meson-0.59.1/test cases/python/2 extmodule/test.json" 1970-01-01 01:00:00.000000000 +0100 +++ "new/meson-0.59.2/test cases/python/2 extmodule/test.json" 2021-09-28 19:04:57.000000000 +0200 @@ -0,0 +1,13 @@ +{ + "installed": [ + { "type": "python_file", "file": "usr/@PYTHON_PLATLIB@/blaster.py" }, + { "type": "python_lib", "file": "usr/@PYTHON_PLATLIB@/tachyon" }, + { "type": "py_implib", "file": "usr/@PYTHON_PLATLIB@/tachyon" }, + { "type": "python_file", "file": "usr/@PYTHON_PURELIB@/pure/blaster.py" }, + { "type": "python_file", "file": "usr/@PYTHON_PLATLIB@/nested/blaster.py" }, + { "type": "python_lib", "file": "usr/@PYTHON_PLATLIB@/nested/tachyon" }, + { "type": "py_implib", "file": "usr/@PYTHON_PLATLIB@/nested/tachyon" }, + { "type": "python_lib", "file": "usr/lib/tachyon" }, + { "type": "py_implib", "file": "usr/lib/tachyon" } + ] +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.1/test cases/unit/72 summary/meson.build" "new/meson-0.59.2/test cases/unit/72 summary/meson.build" --- "old/meson-0.59.1/test cases/unit/72 summary/meson.build" 2021-04-27 08:50:21.000000000 +0200 +++ "new/meson-0.59.2/test cases/unit/72 summary/meson.build" 2021-09-28 19:04:57.000000000 +0200 @@ -13,6 +13,7 @@ summary({'missing prog': find_program('xyzzy', required: false), 'existing prog': import('python').find_installation(), 'missing dep': dependency('', required: false), + 'external dep': dependency('zlib', required: false), 'internal dep': declare_dependency(), }, section: 'Stuff') summary('A number', 1, section: 'Configuration') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.1/test cases/unit/79 user options for subproject/subprojects/sub/meson.build" "new/meson-0.59.2/test cases/unit/79 user options for subproject/subprojects/sub/meson.build" --- "old/meson-0.59.1/test cases/unit/79 user options for subproject/subprojects/sub/meson.build" 1970-01-01 01:00:00.000000000 +0100 +++ "new/meson-0.59.2/test cases/unit/79 user options for subproject/subprojects/sub/meson.build" 2021-04-27 08:50:21.000000000 +0200 @@ -0,0 +1,45 @@ +project('options', 'c') + +if get_option('testoption') != 'optval' + error('Incorrect value to test option') +endif + +if get_option('other_one') != false + error('Incorrect value to boolean option.') +endif + +if get_option('combo_opt') != 'combo' + error('Incorrect value to combo option.') +endif + +if get_option('array_opt') != ['one', 'two'] + message(get_option('array_opt')) + error('Incorrect value for array option') +endif + +# If the default changes, update test cases/unit/13 reconfigure +if get_option('b_lto') != false + error('Incorrect value in base option.') +endif + +if get_option('includedir') != 'include' + error('Incorrect value in builtin option.') +endif + +if get_option('integer_opt') != 3 + error('Incorrect value in integer option.') +endif + +if get_option('neg_int_opt') != -3 + error('Incorrect value in negative integer option.') +endif + +if get_option('CaseSenSiTivE') != 'Some CAPS' + error('Incorrect value in mixed caps option.') +endif + +if get_option('CASESENSITIVE') != 'ALL CAPS' + error('Incorrect value in all caps option.') +endif + +assert(get_option('wrap_mode') == 'default', 'Wrap mode option is broken.') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' "old/meson-0.59.1/test cases/unit/79 user options for subproject/subprojects/sub/meson_options.txt" "new/meson-0.59.2/test cases/unit/79 user options for subproject/subprojects/sub/meson_options.txt" --- "old/meson-0.59.1/test cases/unit/79 user options for subproject/subprojects/sub/meson_options.txt" 1970-01-01 01:00:00.000000000 +0100 +++ "new/meson-0.59.2/test cases/unit/79 user options for subproject/subprojects/sub/meson_options.txt" 2021-04-27 08:50:21.000000000 +0200 @@ -0,0 +1,9 @@ +option('testoption', type : 'string', value : 'optval', description : 'An option ' + 'to do something') +option('other_one', type : 'boolean', value : not (not (not (not false)))) +option('combo_opt', type : 'co' + 'mbo', choices : ['one', 'two', 'combo'], value : 'combo') +option('array_opt', type : 'array', choices : ['one', 'two', 'three'], value : ['one', 'two']) +option('free_array_opt', type : 'array') +option('integer_opt', type : 'integer', min : 0, max : -(-5), value : 3) +option('neg' + '_' + 'int' + '_' + 'opt', type : 'integer', min : -5, max : 5, value : -3) +option('CaseSenSiTivE', type : 'string', value: 'Some CAPS', description : 'An option with mixed capitaliziation') +option('CASESENSITIVE', type : 'string', value: 'ALL CAPS', description : 'An option with all caps') ++++++ meson-rust-1.55.patch ++++++ Index: meson-0.59.2/test cases/rust/5 polyglot static/meson.build =================================================================== --- meson-0.59.2.orig/test cases/rust/5 polyglot static/meson.build +++ meson-0.59.2/test cases/rust/5 polyglot static/meson.build @@ -2,6 +2,7 @@ project('static rust and c polyglot exec deps = [ meson.get_compiler('c').find_library('dl', required: false), + meson.get_compiler('c').find_library('m', required: false), dependency('threads'), ]