Hello community, here is the log from the commit of package meson for openSUSE:Factory checked in at 2018-03-24 16:10:24 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/meson (Old) and /work/SRC/openSUSE:Factory/.meson.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "meson" Sat Mar 24 16:10:24 2018 rev:31 rq:590397 version:0.45.0 Changes: -------- --- /work/SRC/openSUSE:Factory/meson/meson-testsuite.changes 2018-03-20 21:52:06.239518450 +0100 +++ /work/SRC/openSUSE:Factory/.meson.new/meson-testsuite.changes 2018-03-24 16:10:26.926163476 +0100 @@ -1,0 +2,16 @@ +Wed Mar 21 23:46:12 UTC 2018 - [email protected] + +- Only apply meson-suse-fix-llvm-3.8.patch, + meson-restore-python3.4.patch, meson-fix-gcc48.patch on Leap 42.x + or older. + +------------------------------------------------------------------- +Wed Mar 21 10:20:37 UTC 2018 - [email protected] + +- Fix meson-fix-gcc48.patch. +- Add meson-restore-python3.4.patch: Restore Python 3.4 support for + SLE 12 and openSUSE Leap 42.x. +- Add meson-suse-fix-llvm-3.8.patch: Fix LLVM 3.8 tests for SLE 12 + and openSUSE Leap 42.x.. + +------------------------------------------------------------------- meson.changes: same change New: ---- meson-restore-python3.4.patch meson-suse-fix-llvm-3.8.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ meson-testsuite.spec ++++++ --- /var/tmp/diff_new_pack.8aDbN5/_old 2018-03-24 16:10:29.022087921 +0100 +++ /var/tmp/diff_new_pack.8aDbN5/_new 2018-03-24 16:10:29.026087777 +0100 @@ -29,17 +29,21 @@ Summary: Python-based build system License: Apache-2.0 Group: Development/Tools/Building -URL: http://mesonbuild.com/ +Url: http://mesonbuild.com/ Source: https://github.com/%{_name}/meson/releases/download/%{version}/meson-%{version}.tar.gz Source1: https://github.com/%{_name}/meson/releases/download/%{version}/meson-%{version}.tar.gz.asc Source2: meson.keyring # PATCH-FIX-OPENSUSE meson-suse-ify-macros.patch [email protected] -- Make the macros non-RedHat specific: so far there are no separate {C,CXX,F}FLAGS. Patch0: meson-suse-ify-macros.patch +# PATCH-FIX-OPENSUSE meson-suse-fix-llvm-3.8.patch -- Fix LLVM 3.8 tests. +Patch1: meson-suse-fix-llvm-3.8.patch +# PATCH-FIX-OPENSUSE meson-restore-python3.4.patch -- Restore Python 3.4 support (reverts commit 0538009). +Patch2: meson-restore-python3.4.patch # PATCH-FIX-OPENSUSE meson-fix-gcc48.patch [email protected] -- Fix GCC 4.8 handling for openSUSE Leap 42.x. -Patch1: meson-fix-gcc48.patch +Patch3: meson-fix-gcc48.patch # PATCH-FIX-OPENSUSE meson-test-installed-bin.patch [email protected] -- We want the test suite to run against /usr/bin/meson coming from our meson package. Patch100: meson-test-installed-bin.patch -BuildRequires: python3 >= 3.4 +BuildRequires: python3 BuildArch: noarch %if %{testsuite} BuildRequires: bison @@ -64,7 +68,7 @@ BuildRequires: ninja BuildRequires: openmpi-devel BuildRequires: pkgconfig -BuildRequires: python3-devel +BuildRequires: python3-devel >= 3.4 BuildRequires: python3-gobject BuildRequires: python3-setuptools BuildRequires: vala @@ -79,7 +83,7 @@ BuildRequires: pkgconfig(gtk+-3.0) BuildRequires: pkgconfig(sdl2) BuildRequires: pkgconfig(zlib) -%if 0%{?suse_version} > 1320 +%if 0%{?suse_version} >= 1500 BuildRequires: libboost_log-devel BuildRequires: libboost_system-devel BuildRequires: libboost_test-devel @@ -124,8 +128,13 @@ %prep %setup -q -n meson-%{version} %patch0 -p1 +%if 0%{?suse_version} < 1500 %patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%endif %patch100 -p1 + # Remove static boost tests from test cases/frameworks/1 boost (can't use patch due to spaces in dirname) sed -i "/static/d" test\ cases/frameworks/1\ boost/meson.build @@ -141,7 +150,7 @@ %build # If this is the test suite, we don't need anything else but the meson package -%if ! %{testsuite} +%if !%{testsuite} python3 setup.py build %else # Ensure we have no mesonbuild / meson in CWD, thus guaranteeing we use meson in $PATH @@ -175,7 +184,11 @@ %endif %files +%if 0%{?suse_version} >= 1500 %license COPYING +%else +%doc COPYING +%endif %if !%{testsuite} %{_bindir}/meson %{_bindir}/mesonconf ++++++ meson.spec ++++++ --- /var/tmp/diff_new_pack.8aDbN5/_old 2018-03-24 16:10:29.062086479 +0100 +++ /var/tmp/diff_new_pack.8aDbN5/_new 2018-03-24 16:10:29.094085326 +0100 @@ -1,5 +1,5 @@ # -# spec file for package meson +# spec file for package meson-testsuite # # Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. # @@ -29,14 +29,18 @@ Summary: Python-based build system License: Apache-2.0 Group: Development/Tools/Building -URL: http://mesonbuild.com/ +Url: http://mesonbuild.com/ Source: https://github.com/%{_name}/meson/releases/download/%{version}/meson-%{version}.tar.gz Source1: https://github.com/%{_name}/meson/releases/download/%{version}/meson-%{version}.tar.gz.asc Source2: meson.keyring # PATCH-FIX-OPENSUSE meson-suse-ify-macros.patch [email protected] -- Make the macros non-RedHat specific: so far there are no separate {C,CXX,F}FLAGS. Patch0: meson-suse-ify-macros.patch +# PATCH-FIX-OPENSUSE meson-suse-fix-llvm-3.8.patch -- Fix LLVM 3.8 tests. +Patch1: meson-suse-fix-llvm-3.8.patch +# PATCH-FIX-OPENSUSE meson-restore-python3.4.patch -- Restore Python 3.4 support (reverts commit 0538009). +Patch2: meson-restore-python3.4.patch # PATCH-FIX-OPENSUSE meson-fix-gcc48.patch [email protected] -- Fix GCC 4.8 handling for openSUSE Leap 42.x. -Patch1: meson-fix-gcc48.patch +Patch3: meson-fix-gcc48.patch # PATCH-FIX-OPENSUSE meson-test-installed-bin.patch [email protected] -- We want the test suite to run against /usr/bin/meson coming from our meson package. Patch100: meson-test-installed-bin.patch BuildRequires: python3 @@ -64,7 +68,7 @@ BuildRequires: ninja BuildRequires: openmpi-devel BuildRequires: pkgconfig -BuildRequires: python3-devel +BuildRequires: python3-devel >= 3.4 BuildRequires: python3-gobject BuildRequires: python3-setuptools BuildRequires: vala @@ -124,8 +128,13 @@ %prep %setup -q -n meson-%{version} %patch0 -p1 +%if 0%{?suse_version} < 1500 %patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%endif %patch100 -p1 + # Remove static boost tests from test cases/frameworks/1 boost (can't use patch due to spaces in dirname) sed -i "/static/d" test\ cases/frameworks/1\ boost/meson.build @@ -175,7 +184,11 @@ %endif %files +%if 0%{?suse_version} >= 1500 %license COPYING +%else +%doc COPYING +%endif %if !%{testsuite} %{_bindir}/meson %{_bindir}/mesonconf ++++++ meson-fix-gcc48.patch ++++++ --- /var/tmp/diff_new_pack.8aDbN5/_old 2018-03-24 16:10:29.238080135 +0100 +++ /var/tmp/diff_new_pack.8aDbN5/_new 2018-03-24 16:10:29.238080135 +0100 @@ -1,20 +1,55 @@ -Index: meson-0.44.0/mesonbuild/compilers/cpp.py -=================================================================== ---- meson-0.44.0.orig/mesonbuild/compilers/cpp.py -+++ meson-0.44.0/mesonbuild/compilers/cpp.py -@@ -75,9 +75,13 @@ class ClangCPPCompiler(ClangCompiler, CP +--- a/mesonbuild/compilers/cpp.py ++++ b/mesonbuild/compilers/cpp.py +@@ -102,9 +102,11 @@ class GnuCPPCompiler(GnuCompiler, CPPCom '3': default_warn_args + ['-Wextra', '-Wpedantic']} def get_options(self): -+ c_stds = ['c++98', 'c++03', 'c++11'] -+ g_stds = ['gnu++11'] ++ cpp_stds = ['c++98', 'c++03', 'c++11', 'c++1y', 'gnu++03', 'gnu++11', 'gnu++1y'] + if version_compare(self.version, '>=5.0.0'): -+ c_stds += ['c++14', 'c++17', 'c++1z'] -+ g_stds += ['gnu++14', 'gnu++17', 'gnu++1z'] - return {'cpp_std': coredata.UserComboOption('cpp_std', 'C++ language standard to use', ++ cpp_stds += ['c++14', 'c++17', 'c++1z', 'gnu++14', 'gnu++17', 'gnu++1z'] + opts = {'cpp_std': coredata.UserComboOption('cpp_std', 'C++ language standard to use', - ['none', 'c++98', 'c++03', 'c++11', 'c++14', 'c++17', 'c++1z', -- 'gnu++11', 'gnu++14', 'gnu++17', 'gnu++1z'], -+ ['none'] + c_stds + g_stds, - 'none')} +- 'gnu++03', 'gnu++11', 'gnu++14', 'gnu++17', 'gnu++1z'], ++ ['none'] + cpp_stds, + 'none'), + 'cpp_debugstl': coredata.UserBooleanOption('cpp_debugstl', + 'STL debug mode', +--- a/mesonbuild/minit.py ++++ b/mesonbuild/minit.py +@@ -123,8 +123,7 @@ int main(int argc, char **argv) {{ - def get_option_compile_args(self, options): + hello_c_meson_template = '''project('{project_name}', 'c', + version : '{version}', +- default_options : ['warning_level=3', +- 'cpp_std=c++14']) ++ default_options : ['warning_level=3']) + + exe = executable('{exe_name}', '{source_name}', + install : true) +@@ -148,7 +147,8 @@ int main(int argc, char **argv) {{ + + hello_cpp_meson_template = '''project('{project_name}', 'cpp', + version : '{version}', +- default_options : ['warning_level=3']) ++ default_options : ['warning_level=3', ++ 'cpp_std=c++1y']) + + exe = executable('{exe_name}', '{source_name}', + install : true) +@@ -219,7 +219,7 @@ int main(int argc, char **argv) {{ + + lib_cpp_meson_template = '''project('{project_name}', 'cpp', + version : '{version}', +- default_options : ['warning_level=3', 'cpp_std=c++14']) ++ default_options : ['warning_level=3', 'cpp_std=c++1y']) + + # These arguments are only used to build the shared library + # not the executables that use the library. +--- "a/test cases/unit/16 prebuilt shared/patron.c" ++++ "b/test cases/unit/16 prebuilt shared/patron.c" +@@ -5,4 +5,5 @@ int main(int argc, char **argv) { + printf("You are standing outside the Great Library of Alexandria.\n"); + printf("You decide to go inside.\n\n"); + alexandria_visit(); ++ return 0; + } ++++++ meson-restore-python3.4.patch ++++++ --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -26,7 +26,7 @@ from .. import compilers from ..compilers import CompilerArgs from ..linkers import ArLinker from ..mesonlib import File, MesonException, OrderedSet -from ..mesonlib import get_compiler_for_source +from ..mesonlib import get_compiler_for_source, commonpath from .backends import CleanTrees, InstallData from ..build import InvalidArguments @@ -1166,8 +1166,8 @@ int dummy; # Check if the vala file is in a subdir of --basedir abs_srcbasedir = os.path.join(self.environment.get_source_dir(), target.get_subdir()) abs_vala_file = os.path.join(self.environment.get_build_dir(), vala_file) - if PurePath(os.path.commonpath((abs_srcbasedir, abs_vala_file))) == PurePath(abs_srcbasedir): - vala_c_subdir = PurePath(abs_vala_file).parent.relative_to(abs_srcbasedir) + if PurePath(commonpath((abs_srcbasedir, abs_vala_file))) == PurePath(abs_srcbasedir): + vala_c_subdir = str(PurePath(abs_vala_file).parent.relative_to(abs_srcbasedir)) vala_c_file = os.path.join(vala_c_subdir, vala_c_file) else: path_to_target = os.path.join(self.build_to_src, target.get_subdir()) --- a/mesonbuild/coredata.py +++ b/mesonbuild/coredata.py @@ -17,7 +17,7 @@ import pickle, os, uuid import sys from pathlib import PurePath from collections import OrderedDict -from .mesonlib import MesonException +from .mesonlib import MesonException, commonpath from .mesonlib import default_libdir, default_libexecdir, default_prefix import ast @@ -286,7 +286,7 @@ class CoreData: # commonpath will always return a path in the native format, so we # must use pathlib.PurePath to do the same conversion before # comparing. - if os.path.commonpath([value, prefix]) != str(PurePath(prefix)): + if commonpath([value, prefix]) != str(PurePath(prefix)): m = 'The value of the {!r} option is {!r} which must be a ' \ 'subdir of the prefix {!r}.\nNote that if you pass a ' \ 'relative path, it is assumed to be a subdir of prefix.' --- a/mesonbuild/mesonlib.py +++ b/mesonbuild/mesonlib.py @@ -935,6 +935,30 @@ def detect_subprojects(spdir_name, curre result[basename] = [trial] return result +def commonpath(paths): + ''' + For use on Python 3.4 where os.path.commonpath is not available. + ''' + if sys.version_info >= (3, 5): + return os.path.commonpath(paths) + + import pathlib + if not paths: + raise ValueError('commonpath() arg is an empty sequence') + common = pathlib.PurePath(paths[0]) + for path in paths[1:]: + new = [] + path = pathlib.PurePath(path) + for c, p in zip(common.parts, path.parts): + if c != p: + break + new.append(c) + if not new: + raise ValueError("Can't mix absolute and relative paths") from None + new = os.path.join(*new) + common = pathlib.PurePath(new) + return str(common) + class OrderedSet(collections.MutableSet): """A set that preserves the order in which items are added, by first insertion. --- a/mesonbuild/mesonmain.py +++ b/mesonbuild/mesonmain.py @@ -274,8 +274,8 @@ def run_script_command(args): return cmdfunc(cmdargs) def run(original_args, mainfile=None): - if sys.version_info < (3, 5): - print('Meson works correctly only with python 3.5+.') + if sys.version_info < (3, 4): + print('Meson works correctly only with python 3.4+.') print('You have python %s.' % sys.version) print('Please update your environment') return 1 --- a/run_unittests.py +++ b/run_unittests.py @@ -427,6 +427,24 @@ class InternalTests(unittest.TestCase): kwargs = {'sources': [1, 2, 3], 'pch_sources': [4, 5, 6]} self.assertEqual([[1, 2, 3], [4, 5, 6]], extract(kwargs, 'sources', 'pch_sources')) + def test_commonpath(self): + from os.path import sep + commonpath = mesonbuild.mesonlib.commonpath + self.assertRaises(ValueError, commonpath, []) + self.assertEqual(commonpath(['/usr', '/usr']), sep + 'usr') + self.assertEqual(commonpath(['/usr', '/usr/']), sep + 'usr') + self.assertEqual(commonpath(['/usr', '/usr/bin']), sep + 'usr') + self.assertEqual(commonpath(['/usr/', '/usr/bin']), sep + 'usr') + self.assertEqual(commonpath(['/usr/./', '/usr/bin']), sep + 'usr') + self.assertEqual(commonpath(['/usr/bin', '/usr/bin']), sep + 'usr' + sep + 'bin') + self.assertEqual(commonpath(['/usr//bin', '/usr/bin']), sep + 'usr' + sep + 'bin') + self.assertEqual(commonpath(['/usr/./bin', '/usr/bin']), sep + 'usr' + sep + 'bin') + self.assertEqual(commonpath(['/usr/local', '/usr/lib']), sep + 'usr') + self.assertEqual(commonpath(['/usr', '/bin']), sep) + prefix = '/some/path/to/prefix' + libdir = '/some/path/to/prefix/libdir' + self.assertEqual(commonpath([prefix, libdir]), str(PurePath(prefix))) + class BasePlatformTests(unittest.TestCase): def setUp(self): ++++++ meson-suse-fix-llvm-3.8.patch ++++++ --- a/mesonbuild/dependencies/dev.py +++ b/mesonbuild/dependencies/dev.py @@ -205,10 +205,10 @@ class LLVMDependency(ConfigToolDependenc not for shared-linnking, we have to figure those out ourselves, because of course we do. """ - if self.static: - self.link_args = self.get_config_value( - ['--libs', '--ldflags', '--system-libs'] + list(self.required_modules), - 'link_args') + self.link_args = self.get_config_value( + ['--libs', '--ldflags', '--system-libs'] + list(self.required_modules), + 'link_args') + """ else: # llvm-config will provide arguments for static linking, so we get # to figure out for ourselves what to link with. We'll do that by @@ -227,6 +227,7 @@ class LLVMDependency(ConfigToolDependenc else: raise DependencyException( 'Could not find a dynamically linkable library for LLVM.') + """ def check_components(self, modules, required=True): """Check for llvm components (modules in meson terms).
