diff --git a/0001-Add-missing-dependency-in-gnome.mkenums-test.patch b/0001-Add-missing-dependency-in-gnome.mkenums-test.patch index 1ab61c2..8d66981 100644 --- a/0001-Add-missing-dependency-in-gnome.mkenums-test.patch +++ b/0001-Add-missing-dependency-in-gnome.mkenums-test.patch @@ -1,8 +1,9 @@ -From 71eddecdc7e82b16c5e454137d641f2a5f7c9c94 Mon Sep 17 00:00:00 2001 +From 07a44766805965f3f9f2afd1b7515e0a853399e6 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Mon, 3 Oct 2016 17:52:26 -0400 -Subject: [PATCH] Add missing dependency in gnome.mkenums test. +Subject: [PATCH 01/16] Add missing dependency in gnome.mkenums test. +(cherry picked from commit 71eddecdc7e82b16c5e454137d641f2a5f7c9c94) --- test cases/frameworks/7 gnome/mkenums/meson.build | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) @@ -37,5 +38,5 @@ index f0989cf..efd6b04 100644 install_dir : get_option('includedir')) -- -2.10.0 +2.10.1 diff --git a/0002-run_tests-Print-stdo-and-stde-in-failing-test-logs.patch b/0002-run_tests-Print-stdo-and-stde-in-failing-test-logs.patch new file mode 100644 index 0000000..b51d456 --- /dev/null +++ b/0002-run_tests-Print-stdo-and-stde-in-failing-test-logs.patch @@ -0,0 +1,47 @@ +From 14bb66ded6a957d868d91b1349fe982ea864ecef Mon Sep 17 00:00:00 2001 +From: Nirbheek Chauhan +Date: Wed, 5 Oct 2016 16:45:52 +0530 +Subject: [PATCH 02/16] run_tests: Print stdo and stde in failing test logs + +This is a superset of the mlog output, and also contains the ninja +output and the test output. + +(cherry picked from commit 81423270f58369de1b033bfcff52e889219e88ac) +--- + run_tests.py | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/run_tests.py b/run_tests.py +index b57dd39..1e094ad 100755 +--- a/run_tests.py ++++ b/run_tests.py +@@ -68,6 +68,7 @@ failing_tests = 0 + skipped_tests = 0 + failing_logs = [] + print_debug = 'MESON_PRINT_TEST_OUTPUT' in os.environ ++do_debug = not {'MESON_PRINT_TEST_OUTPUT', 'TRAVIS', 'APPVEYOR'}.isdisjoint(os.environ) + + meson_command = os.path.join(os.getcwd(), 'meson') + if not os.path.exists(meson_command): +@@ -117,7 +118,7 @@ def setup_commands(backend): + ninja_command = environment.detect_ninja() + if ninja_command is None: + raise RuntimeError('Could not find Ninja v1.6 or newer') +- if print_debug: ++ if do_debug: + compile_commands = [ninja_command, '-v'] + else: + compile_commands = [ninja_command] +@@ -378,7 +379,8 @@ def run_tests(extra_args): + print('Failed test%s: %s' % (without_install, t)) + print('Reason:', result.msg) + failing_tests += 1 +- failing_logs.append(result.mlog) ++ failing_logs.append(result.stdo) ++ failing_logs.append(result.stde) + else: + print('Succeeded test%s: %s' % (without_install, t)) + passing_tests += 1 +-- +2.10.1 + diff --git a/0003-Remove-shebangs-on-files-that-are-not-runnable-and-a.patch b/0003-Remove-shebangs-on-files-that-are-not-runnable-and-a.patch new file mode 100644 index 0000000..e42e5b9 --- /dev/null +++ b/0003-Remove-shebangs-on-files-that-are-not-runnable-and-a.patch @@ -0,0 +1,128 @@ +From dcbb80c5ae3b9dd53a3a1addb69f9e804bf21c14 Mon Sep 17 00:00:00 2001 +From: Jussi Pakkanen +Date: Tue, 4 Oct 2016 00:38:42 +0300 +Subject: [PATCH 03/16] Remove shebangs on files that are not runnable and add + execute bits to those that are. + +(cherry picked from commit 1f4cce86add495fb07ae9ace83907dbd1415dd68) +--- + mesonbuild/mconf.py | 2 -- + mesonbuild/mesonmain.py | 2 -- + mesonbuild/mintro.py | 2 -- + mesonbuild/scripts/commandrunner.py | 0 + mesonbuild/scripts/delwithsuffix.py | 0 + mesonbuild/scripts/depfixer.py | 0 + mesonbuild/scripts/dirchanger.py | 0 + mesonbuild/scripts/gettext.py | 2 -- + mesonbuild/scripts/gtkdochelper.py | 0 + mesonbuild/scripts/meson_benchmark.py | 0 + mesonbuild/scripts/meson_exe.py | 0 + mesonbuild/scripts/meson_install.py | 0 + mesonbuild/scripts/meson_test.py | 0 + mesonbuild/scripts/regen_checker.py | 0 + mesonbuild/scripts/scanbuild.py | 1 - + mesonbuild/scripts/symbolextractor.py | 0 + mesonbuild/scripts/vcstagger.py | 0 + 17 files changed, 9 deletions(-) + mode change 100644 => 100755 mesonbuild/scripts/commandrunner.py + mode change 100644 => 100755 mesonbuild/scripts/delwithsuffix.py + mode change 100644 => 100755 mesonbuild/scripts/depfixer.py + mode change 100644 => 100755 mesonbuild/scripts/dirchanger.py + mode change 100644 => 100755 mesonbuild/scripts/gtkdochelper.py + mode change 100644 => 100755 mesonbuild/scripts/meson_benchmark.py + mode change 100644 => 100755 mesonbuild/scripts/meson_exe.py + mode change 100644 => 100755 mesonbuild/scripts/meson_install.py + mode change 100644 => 100755 mesonbuild/scripts/meson_test.py + mode change 100644 => 100755 mesonbuild/scripts/regen_checker.py + mode change 100644 => 100755 mesonbuild/scripts/symbolextractor.py + mode change 100644 => 100755 mesonbuild/scripts/vcstagger.py + +diff --git a/mesonbuild/mconf.py b/mesonbuild/mconf.py +index afabc62..25f2c6b 100644 +--- a/mesonbuild/mconf.py ++++ b/mesonbuild/mconf.py +@@ -1,5 +1,3 @@ +-#!/usr/bin/env python3 +- + # Copyright 2014-2016 The Meson development team + + # Licensed under the Apache License, Version 2.0 (the "License"); +diff --git a/mesonbuild/mesonmain.py b/mesonbuild/mesonmain.py +index f35d821..f7da1e0 100644 +--- a/mesonbuild/mesonmain.py ++++ b/mesonbuild/mesonmain.py +@@ -1,5 +1,3 @@ +-#!/usr/bin/env python3 +- + # Copyright 2012-2016 The Meson development team + + # Licensed under the Apache License, Version 2.0 (the "License"); +diff --git a/mesonbuild/mintro.py b/mesonbuild/mintro.py +index 2086c37..a18912e 100644 +--- a/mesonbuild/mintro.py ++++ b/mesonbuild/mintro.py +@@ -1,5 +1,3 @@ +-#!/usr/bin/env python3 +- + # Copyright 2014-2016 The Meson development team + + # Licensed under the Apache License, Version 2.0 (the "License"); +diff --git a/mesonbuild/scripts/commandrunner.py b/mesonbuild/scripts/commandrunner.py +old mode 100644 +new mode 100755 +diff --git a/mesonbuild/scripts/delwithsuffix.py b/mesonbuild/scripts/delwithsuffix.py +old mode 100644 +new mode 100755 +diff --git a/mesonbuild/scripts/depfixer.py b/mesonbuild/scripts/depfixer.py +old mode 100644 +new mode 100755 +diff --git a/mesonbuild/scripts/dirchanger.py b/mesonbuild/scripts/dirchanger.py +old mode 100644 +new mode 100755 +diff --git a/mesonbuild/scripts/gettext.py b/mesonbuild/scripts/gettext.py +index 1f0a391..ba6b242 100644 +--- a/mesonbuild/scripts/gettext.py ++++ b/mesonbuild/scripts/gettext.py +@@ -1,5 +1,3 @@ +-#!/usr/bin/env python3 +- + # Copyright 2016 The Meson development team + + # Licensed under the Apache License, Version 2.0 (the "License"); +diff --git a/mesonbuild/scripts/gtkdochelper.py b/mesonbuild/scripts/gtkdochelper.py +old mode 100644 +new mode 100755 +diff --git a/mesonbuild/scripts/meson_benchmark.py b/mesonbuild/scripts/meson_benchmark.py +old mode 100644 +new mode 100755 +diff --git a/mesonbuild/scripts/meson_exe.py b/mesonbuild/scripts/meson_exe.py +old mode 100644 +new mode 100755 +diff --git a/mesonbuild/scripts/meson_install.py b/mesonbuild/scripts/meson_install.py +old mode 100644 +new mode 100755 +diff --git a/mesonbuild/scripts/meson_test.py b/mesonbuild/scripts/meson_test.py +old mode 100644 +new mode 100755 +diff --git a/mesonbuild/scripts/regen_checker.py b/mesonbuild/scripts/regen_checker.py +old mode 100644 +new mode 100755 +diff --git a/mesonbuild/scripts/scanbuild.py b/mesonbuild/scripts/scanbuild.py +index f90c3c7..f13a1a4 100644 +--- a/mesonbuild/scripts/scanbuild.py ++++ b/mesonbuild/scripts/scanbuild.py +@@ -1,5 +1,4 @@ + # Copyright 2016 The Meson development team +- + # Licensed under the Apache License, Version 2.0 (the "License"); + # you may not use this file except in compliance with the License. + # You may obtain a copy of the License at +diff --git a/mesonbuild/scripts/symbolextractor.py b/mesonbuild/scripts/symbolextractor.py +old mode 100644 +new mode 100755 +diff --git a/mesonbuild/scripts/vcstagger.py b/mesonbuild/scripts/vcstagger.py +old mode 100644 +new mode 100755 +-- +2.10.1 + diff --git a/0004-Test-arrays-in-languages-for-the-project-method.patch b/0004-Test-arrays-in-languages-for-the-project-method.patch new file mode 100644 index 0000000..4ccb7dd --- /dev/null +++ b/0004-Test-arrays-in-languages-for-the-project-method.patch @@ -0,0 +1,30 @@ +From 6f0aaea65895f359c989df89d9751143a46a8368 Mon Sep 17 00:00:00 2001 +From: Nirbheek Chauhan +Date: Fri, 7 Oct 2016 18:30:35 +0530 +Subject: [PATCH 04/16] Test arrays in languages for the project() method + +This broke in 6590b7221e1e3a30b33a6b74b380ee5a2b24d7ef and we didn't +have a test for it. + +(cherry picked from commit 4990dd197c8bc8b61b940d3564f4d8479ce32d1c) +--- + test cases/common/1 trivial/meson.build | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/test cases/common/1 trivial/meson.build b/test cases/common/1 trivial/meson.build +index 3f14539..1f7b375 100644 +--- a/test cases/common/1 trivial/meson.build ++++ b/test cases/common/1 trivial/meson.build +@@ -1,5 +1,8 @@ + # Comment on the first line +-project('trivial test', 'c', meson_version : '>=0.27.0') ++project('trivial test', ++ # Comment inside a function call + array for language list ++ ['c'], ++ meson_version : '>=0.27.0') + #this is a comment + sources = 'trivial.c' + +-- +2.10.1 + diff --git a/0005-intrp-Don-t-do-custom-AST-parsing-for-project.patch b/0005-intrp-Don-t-do-custom-AST-parsing-for-project.patch new file mode 100644 index 0000000..6a4b76c --- /dev/null +++ b/0005-intrp-Don-t-do-custom-AST-parsing-for-project.patch @@ -0,0 +1,81 @@ +From 5abbbaa2cc5bc554555ead8464ba659f4cd8e4c0 Mon Sep 17 00:00:00 2001 +From: Nirbheek Chauhan +Date: Fri, 7 Oct 2016 18:37:03 +0530 +Subject: [PATCH 05/16] intrp: Don't do custom AST parsing for project() + +Reuse the standard evaluate_codeblock() parsing since it does proper +error handling, and also handles, for instance, lists in string +arguments (flatten), etc. properly. + +We need to declare more variables in advance now, but that should be ok. + +(cherry picked from commit 411d6c8bc4919c28adfe5041a5576a937876ea29) +--- + mesonbuild/interpreter.py | 22 ++++++++++------------ + 1 file changed, 10 insertions(+), 12 deletions(-) + +diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py +index cc85e77..b3bb1f2 100644 +--- a/mesonbuild/interpreter.py ++++ b/mesonbuild/interpreter.py +@@ -1129,6 +1129,12 @@ class Interpreter(): + self.sanity_check_ast() + self.variables = {} + self.builtin = {} ++ self.generators = [] ++ self.visited_subdirs = {} ++ self.global_args_frozen = False ++ self.subprojects = {} ++ self.subproject_stack = [] ++ self.build_func_dict() + self.parse_project() + self.builtin['build_machine'] = BuildMachine(self.coredata.compilers) + if not self.build.environment.is_cross_build(): +@@ -1145,13 +1151,7 @@ class Interpreter(): + else: + self.builtin['target_machine'] = self.builtin['host_machine'] + self.builtin['meson'] = MesonMain(build, self) +- self.build_func_dict() + self.build_def_files = [os.path.join(self.subdir, environment.build_filename)] +- self.generators = [] +- self.visited_subdirs = {} +- self.global_args_frozen = False +- self.subprojects = {} +- self.subproject_stack = [] + + def build_func_dict(self): + self.funcs = {'project' : self.func_project, +@@ -1203,9 +1203,7 @@ class Interpreter(): + Parses project() and initializes languages, compilers etc. Do this + early because we need this before we parse the rest of the AST. + """ +- project = self.ast.lines[0] +- args, kwargs = self.reduce_arguments(project.args) +- self.func_project(project, args, kwargs) ++ self.evaluate_codeblock(self.ast, end=1) + + def module_method_callback(self, invalues): + unwrap_single = False +@@ -1282,7 +1280,7 @@ class Interpreter(): + self.evaluate_codeblock(self.ast, start=1) + mlog.log('Build targets in project:', mlog.bold(str(len(self.build.targets)))) + +- def evaluate_codeblock(self, node, start=0): ++ def evaluate_codeblock(self, node, start=0, end=None): + if node is None: + return + if not isinstance(node, mparser.CodeBlockNode): +@@ -1290,8 +1288,8 @@ class Interpreter(): + e.lineno = node.lineno + e.colno = node.colno + raise e +- statements = node.lines +- i = start ++ statements = node.lines[start:end] ++ i = 0 + while i < len(statements): + cur = statements[i] + try: +-- +2.10.1 + diff --git a/0006-gnome.generate_gir-Also-include-current-build-dir.patch b/0006-gnome.generate_gir-Also-include-current-build-dir.patch new file mode 100644 index 0000000..99c8c8f --- /dev/null +++ b/0006-gnome.generate_gir-Also-include-current-build-dir.patch @@ -0,0 +1,29 @@ +From 6fda56e6be2a9f33e647b5c4d9c1b20b9e29c972 Mon Sep 17 00:00:00 2001 +From: Patrick Griffis +Date: Mon, 3 Oct 2016 12:51:23 -0400 +Subject: [PATCH 06/16] gnome.generate_gir(): Also include current build dir + +Continuation of 084b854ce057ee6d954c24e58321caa92f542bc5 + +(cherry picked from commit 94b7b59546cfbc311336ec3700393cfff3d4a840) +--- + mesonbuild/modules/gnome.py | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py +index 81cc462..be111ea 100644 +--- a/mesonbuild/modules/gnome.py ++++ b/mesonbuild/modules/gnome.py +@@ -225,7 +225,8 @@ class GnomeModule: + + extra_args = mesonlib.stringlistify(kwargs.pop('extra_args', [])) + scan_command += extra_args +- scan_command += ['-I' + os.path.join(state.environment.get_source_dir(), state.subdir)] ++ scan_command += ['-I' + os.path.join(state.environment.get_source_dir(), state.subdir), ++ '-I' + os.path.join(state.environment.get_build_dir(), state.subdir)] + scan_command += self.get_include_args(state, girtarget.get_include_dirs()) + + if 'link_with' in kwargs: +-- +2.10.1 + diff --git a/0007-rpm-couple-of-improvements-and-fixes.patch b/0007-rpm-couple-of-improvements-and-fixes.patch new file mode 100644 index 0000000..b976d7a --- /dev/null +++ b/0007-rpm-couple-of-improvements-and-fixes.patch @@ -0,0 +1,133 @@ +From 90f928d01f917fcc8944272ad4b30b81a29f53ca Mon Sep 17 00:00:00 2001 +From: Igor Gnatenko +Date: Sat, 8 Oct 2016 16:54:03 +0200 +Subject: [PATCH 07/16] rpm: couple of improvements and fixes + +* Don't hardcode /usr/bin, use %{_bindir} +* Implement %meson_build / %meson_install / %meson_test +* Automatic handling of out-of-tree builds + +Signed-off-by: Igor Gnatenko +(cherry picked from commit 0d58ddd739c1d7f8c0e6e49b721dd3df965167c0) +--- + data/macros.meson | 48 +++++++++++++++++++++++++++-------------------- + mesonbuild/modules/rpm.py | 22 +++++++--------------- + 2 files changed, 35 insertions(+), 35 deletions(-) + +diff --git a/data/macros.meson b/data/macros.meson +index c89854b..05ff484 100644 +--- a/data/macros.meson ++++ b/data/macros.meson +@@ -1,21 +1,29 @@ +-%__meson /usr/bin/meson ++%__meson %{_bindir}/meson ++%__sourcedir . ++%__builddir %{_target_platform} ++%__meson_ninja_opts -v %{?_smp_mflags} -C %{__builddir} + +-%meson() %{expand:\ +- export CFLAGS="%{optflags}" ; \ +- export CXXFLAGS="%{optflags}" ; \ +- export FFLAGS="%{optflags} -I%{_fmoddir}" ; \ +- export FCFLAGS="%{optflags} -I%{_fmoddir}" ; \ +- export LDFLAGS="%{__global_ldflags}" ; \ +- %__meson %{?1} \\\ +- --prefix=%{_prefix} \\\ +- --libdir=%{_libdir} \\\ +- --libexecdir=%{_libexecdir} \\\ +- --bindir=%{_bindir} \\\ +- --includedir=%{_includedir} \\\ +- --datadir=%{_datadir} \\\ +- --mandir=%{_mandir} \\\ +- --localedir=%{_datadir}/locale \\\ +- --sysconfdir=%{_sysconfdir} \\\ +- --buildtype=plain \ +- %{nil} \ +-} ++%meson \ ++ export CFLAGS="%{optflags}" \ ++ export CXXFLAGS="%{optflags}" \ ++ export FFLAGS="%{optflags} -I%{_fmoddir}" \ ++ export FCFLAGS="%{optflags} -I%{_fmoddir}" \ ++ export LDFLAGS="%{?__global_ldflags}" \ ++ mkdir -p %{__builddir} \ ++ pushd %{__builddir} \ ++ %{__meson} \\\ ++ --buildtype=plain \\\ ++ --prefix=%{_prefix} \\\ ++ --libdir=%{_libdir} \\\ ++ --libexecdir=%{_libexecdir} \\\ ++ --bindir=%{_bindir} \\\ ++ --includedir=%{_includedir} \\\ ++ --datadir=%{_datadir} \\\ ++ --mandir=%{_mandir} \\\ ++ --localedir=%{_datadir}/locale \\\ ++ --sysconfdir=%{_sysconfdir} \\\ ++ $OLDPWD/%{__sourcedir} \ ++ popd ++%meson_build %ninja_build -C %{__builddir} ++%meson_install %ninja_install -C %{__builddir} ++%meson_test %ninja_test -C %{__builddir} +diff --git a/mesonbuild/modules/rpm.py b/mesonbuild/modules/rpm.py +index 89194e9..13aa20b 100644 +--- a/mesonbuild/modules/rpm.py ++++ b/mesonbuild/modules/rpm.py +@@ -104,7 +104,7 @@ class RPMModule: + mlog.bold('dnf provides %s' % lib.fullpath)) + for prog in state.environment.coredata.ext_progs.values(): + if not prog.found(): +- fn.write('BuildRequires: /usr/bin/%s # FIXME\n' % ++ fn.write('BuildRequires: %{_bindir}/%s # FIXME\n' % + prog.get_name()) + else: + fn.write('BuildRequires: %s\n' % ' '.join(prog.fullpath)) +@@ -115,32 +115,25 @@ class RPMModule: + if devel_subpkg: + fn.write('%package devel\n') + fn.write('Summary: Development files for %{name}\n') +- fn.write('Requires: %{name}%{?_isa} = %{version}-%{release}\n') ++ fn.write('Requires: %{name}%{?_isa} = %{?epoch:%{epoch}:}{version}-%{release}\n') + fn.write('\n') + fn.write('%description devel\n') + fn.write('Development files for %{name}.\n') + fn.write('\n') + fn.write('%prep\n') + fn.write('%autosetup\n') +- fn.write('rm -rf rpmbuilddir && mkdir rpmbuilddir\n') + fn.write('\n') + fn.write('%build\n') +- fn.write('pushd rpmbuilddir\n') +- fn.write(' %meson ..\n') +- fn.write(' ninja-build -v\n') +- fn.write('popd\n') ++ fn.write('%meson\n') ++ fn.write('%meson_build\n') + fn.write('\n') + fn.write('%install\n') +- fn.write('pushd rpmbuilddir\n') +- fn.write(' DESTDIR=%{buildroot} ninja-build -v install\n') +- fn.write('popd\n') ++ fn.write('%meson_install\n') + if len(to_delete) > 0: +- fn.write('rm -rf %s\n' % ' '.join(to_delete)) ++ fn.write('rm -vf %s\n' % ' '.join(to_delete)) + fn.write('\n') + fn.write('%check\n') +- fn.write('pushd rpmbuilddir\n') +- fn.write(' ninja-build -v test\n') +- fn.write('popd\n') ++ fn.write('%meson_test\n') + fn.write('\n') + fn.write('%files\n') + for f in files: +@@ -153,7 +146,6 @@ class RPMModule: + fn.write('\n') + if so_installed: + fn.write('%post -p /sbin/ldconfig\n') +- fn.write('\n') + fn.write('%postun -p /sbin/ldconfig\n') + fn.write('\n') + fn.write('%changelog\n') +-- +2.10.1 + diff --git a/0008-fixup-rpm-couple-of-improvements-and-fixes.patch b/0008-fixup-rpm-couple-of-improvements-and-fixes.patch new file mode 100644 index 0000000..6041dbd --- /dev/null +++ b/0008-fixup-rpm-couple-of-improvements-and-fixes.patch @@ -0,0 +1,25 @@ +From 9fdf87523943b38a59093fa9bde126f37a6b489b Mon Sep 17 00:00:00 2001 +From: Igor Gnatenko +Date: Sat, 8 Oct 2016 17:13:37 +0200 +Subject: [PATCH 08/16] fixup! rpm: couple of improvements and fixes + +(cherry picked from commit b0fc370e727a9ad46516d13dac442c42801884b1) +--- + data/macros.meson | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/data/macros.meson b/data/macros.meson +index 05ff484..dd0e60c 100644 +--- a/data/macros.meson ++++ b/data/macros.meson +@@ -1,7 +1,6 @@ + %__meson %{_bindir}/meson + %__sourcedir . + %__builddir %{_target_platform} +-%__meson_ninja_opts -v %{?_smp_mflags} -C %{__builddir} + + %meson \ + export CFLAGS="%{optflags}" \ +-- +2.10.1 + diff --git a/0009-fixup-fixup-rpm-couple-of-improvements-and-fixes.patch b/0009-fixup-fixup-rpm-couple-of-improvements-and-fixes.patch new file mode 100644 index 0000000..8598ed8 --- /dev/null +++ b/0009-fixup-fixup-rpm-couple-of-improvements-and-fixes.patch @@ -0,0 +1,33 @@ +From 15e90969547bc3946540dfc75e7912bd350972fa Mon Sep 17 00:00:00 2001 +From: Igor Gnatenko +Date: Sat, 8 Oct 2016 17:15:02 +0200 +Subject: [PATCH 09/16] fixup! fixup! rpm: couple of improvements and fixes + +(cherry picked from commit 1e640955b6f7730e365f50d810e7031511b0473b) +--- + data/macros.meson | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +diff --git a/data/macros.meson b/data/macros.meson +index dd0e60c..4b91c70 100644 +--- a/data/macros.meson ++++ b/data/macros.meson +@@ -23,6 +23,12 @@ + --sysconfdir=%{_sysconfdir} \\\ + $OLDPWD/%{__sourcedir} \ + popd +-%meson_build %ninja_build -C %{__builddir} +-%meson_install %ninja_install -C %{__builddir} +-%meson_test %ninja_test -C %{__builddir} ++ ++%meson_build \ ++ %ninja_build -C %{__builddir} ++ ++%meson_install \ ++ %ninja_install -C %{__builddir} ++ ++%meson_test \ ++ %ninja_test -C %{__builddir} +-- +2.10.1 + diff --git a/0010-dependencies-Fix-traceback-always-setting-variable.patch b/0010-dependencies-Fix-traceback-always-setting-variable.patch new file mode 100644 index 0000000..7e9b6f2 --- /dev/null +++ b/0010-dependencies-Fix-traceback-always-setting-variable.patch @@ -0,0 +1,49 @@ +From 749448d01669693fe846e8c6496eaf35de1f1dc3 Mon Sep 17 00:00:00 2001 +From: Thibault Saunier +Date: Sat, 8 Oct 2016 11:16:50 +0200 +Subject: [PATCH 10/16] dependencies: Fix traceback always setting 'variable' + +if pkg-config return != 0 and the dep is not required, it will not be set + +(cherry picked from commit 6eacca2024b6b4366d427a18372dd4d0aa972df7) +--- + mesonbuild/dependencies.py | 1 + + test cases/frameworks/7 gnome/gir/meson.build | 3 +++ + 2 files changed, 4 insertions(+) + +diff --git a/mesonbuild/dependencies.py b/mesonbuild/dependencies.py +index 1b9e6f4..ccff7a7 100644 +--- a/mesonbuild/dependencies.py ++++ b/mesonbuild/dependencies.py +@@ -188,6 +188,7 @@ class PkgConfigDependency(Dependency): + p = subprocess.Popen([self.pkgbin, '--variable=%s' % variable_name, self.name], + stdout=subprocess.PIPE, stderr=subprocess.PIPE) + out = p.communicate()[0] ++ variable = '' + if p.returncode != 0: + if self.required: + raise DependencyException('%s dependency %s not found.' % +diff --git a/test cases/frameworks/7 gnome/gir/meson.build b/test cases/frameworks/7 gnome/gir/meson.build +index 287c0d7..a513062 100644 +--- a/test cases/frameworks/7 gnome/gir/meson.build ++++ b/test cases/frameworks/7 gnome/gir/meson.build +@@ -14,6 +14,8 @@ girexe = executable( + link_with : girlib + ) + ++fake_dep = dependency('no-way-this-exists', required: false) ++ + gnome.generate_gir( + girlib, + sources : libsources, +@@ -22,6 +24,7 @@ gnome.generate_gir( + symbol_prefix : 'meson_', + identifier_prefix : 'Meson', + includes : ['GObject-2.0'], ++ dependencies : [fake_dep], + install : true + ) + +-- +2.10.1 + diff --git a/0011-Created-path_join-function.patch b/0011-Created-path_join-function.patch new file mode 100644 index 0000000..c7920d0 --- /dev/null +++ b/0011-Created-path_join-function.patch @@ -0,0 +1,58 @@ +From f12c0f31e27ca37400c5ca8deb700af222f0bcb6 Mon Sep 17 00:00:00 2001 +From: Jussi Pakkanen +Date: Sun, 9 Oct 2016 05:29:11 -0400 +Subject: [PATCH 11/16] Created path_join function. + +(cherry picked from commit c2b852c9b392059cba933b0787c1c7880af5e1ae) +--- + mesonbuild/interpreter.py | 10 ++++++++++ + test cases/common/119 pathjoin/meson.build | 9 +++++++++ + 2 files changed, 19 insertions(+) + create mode 100644 test cases/common/119 pathjoin/meson.build + +diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py +index b3bb1f2..be19bab 100644 +--- a/mesonbuild/interpreter.py ++++ b/mesonbuild/interpreter.py +@@ -1196,6 +1196,7 @@ class Interpreter(): + 'declare_dependency': self.func_declare_dependency, + 'assert': self.func_assert, + 'environment' : self.func_environment, ++ 'path_join' : self.func_path_join, + } + + def parse_project(self): +@@ -2237,6 +2238,15 @@ class Interpreter(): + def func_environment(self, node, args, kwargs): + return EnvironmentVariablesHolder() + ++ @stringArgs ++ @noKwargs ++ def func_path_join(self, node, args, kwargs): ++ if isinstance(args, str): ++ st = (args,) ++ else: ++ st = tuple(args) ++ return os.path.join(*args).replace('\\', '/') ++ + def flatten(self, args): + if isinstance(args, mparser.StringNode): + return args.value +diff --git a/test cases/common/119 pathjoin/meson.build b/test cases/common/119 pathjoin/meson.build +new file mode 100644 +index 0000000..dd1cf9c +--- /dev/null ++++ b/test cases/common/119 pathjoin/meson.build +@@ -0,0 +1,9 @@ ++project('pathjoin', 'c') ++ ++assert(path_join('foo') == 'foo', 'Single argument join is broken') ++assert(path_join('foo', 'bar') == 'foo/bar', 'Path joining is broken') ++assert(path_join('foo', 'bar', 'baz') == 'foo/bar/baz', 'Path joining is broken') ++assert(path_join('/foo', 'bar') == '/foo/bar', 'Path joining is broken') ++assert(path_join('foo', '/bar') == '/bar', 'Absolute path joining is broken') ++assert(path_join('/foo', '/bar') == '/bar', 'Absolute path joining is broken') ++ +-- +2.10.1 + diff --git a/0012-Show-error-log-options-in-help.patch b/0012-Show-error-log-options-in-help.patch new file mode 100644 index 0000000..458ae1a --- /dev/null +++ b/0012-Show-error-log-options-in-help.patch @@ -0,0 +1,40 @@ +From ed97ba07f3dee878aca7c5f0d802fd6d75e36704 Mon Sep 17 00:00:00 2001 +From: Jussi Pakkanen +Date: Sat, 8 Oct 2016 11:17:22 -0400 +Subject: [PATCH 12/16] Show error log options in help. + +(cherry picked from commit e2b3752f875754abcc3981754505ae0db9e18155) +--- + mesonbuild/coredata.py | 2 +- + mesonbuild/mesonmain.py | 2 ++ + 2 files changed, 3 insertions(+), 1 deletion(-) + +diff --git a/mesonbuild/coredata.py b/mesonbuild/coredata.py +index 51bf107..b32a257 100644 +--- a/mesonbuild/coredata.py ++++ b/mesonbuild/coredata.py +@@ -224,7 +224,7 @@ builtin_options = { + 'default_library' : [ UserComboOption, 'Default library type.', [ 'shared', 'static' ], 'shared' ], + 'backend' : [ UserComboOption, 'Backend to use.', backendlist, 'ninja' ], + 'stdsplit' : [ UserBooleanOption, 'Split stdout and stderr in test logs.', True ], +- 'errorlogs' : [ UserBooleanOption, "Whether to print the logs from failing tests.", False ], ++ 'errorlogs' : [ UserBooleanOption, "Whether to print the logs from failing tests.", True ], + } + + forbidden_target_names = {'clean': None, +diff --git a/mesonbuild/mesonmain.py b/mesonbuild/mesonmain.py +index f7da1e0..6374c41 100644 +--- a/mesonbuild/mesonmain.py ++++ b/mesonbuild/mesonmain.py +@@ -54,6 +54,8 @@ add_builtin_argument('werror', action='store_true') + add_builtin_argument('layout') + add_builtin_argument('default-library') + add_builtin_argument('warnlevel', dest='warning_level') ++add_builtin_argument('stdsplit', action='store_false') ++add_builtin_argument('errorlogs', action='store_false') + + parser.add_argument('--cross-file', default=None, + help='File describing cross compilation environment.') +-- +2.10.1 + diff --git a/0013-tests-gnome-Add-missing-enums.h-dep-to-enums2.c.patch b/0013-tests-gnome-Add-missing-enums.h-dep-to-enums2.c.patch new file mode 100644 index 0000000..8209899 --- /dev/null +++ b/0013-tests-gnome-Add-missing-enums.h-dep-to-enums2.c.patch @@ -0,0 +1,28 @@ +From 31b19169cc13b6af0e972db38d1d43967a49ecf0 Mon Sep 17 00:00:00 2001 +From: Nirbheek Chauhan +Date: Mon, 10 Oct 2016 23:27:50 +0530 +Subject: [PATCH 13/16] tests/gnome: Add missing enums.h dep to enums2.c + +Was causing intermittent test failures + +(cherry picked from commit 6a002a7bea8860590fd1ad54d2e12b91c5137e1f) +--- + test cases/frameworks/7 gnome/mkenums/meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/test cases/frameworks/7 gnome/mkenums/meson.build b/test cases/frameworks/7 gnome/mkenums/meson.build +index efd6b04..e01e9eb 100644 +--- a/test cases/frameworks/7 gnome/mkenums/meson.build ++++ b/test cases/frameworks/7 gnome/mkenums/meson.build +@@ -32,7 +32,7 @@ enums_h2 = gnome.mkenums('abc2', + + enums_c2 = gnome.mkenums('abc2', + sources : 'meson-sample.h', +- depends : enums_h2, ++ depends : [enums_h1, enums_h2], + c_template : 'enums2.c.in', + ftail : '/* trailing source file info */', + install_header : true, +-- +2.10.1 + diff --git a/0014-Check-contents-of-arguments-inside-project-.-Closes-.patch b/0014-Check-contents-of-arguments-inside-project-.-Closes-.patch new file mode 100644 index 0000000..d88dd59 --- /dev/null +++ b/0014-Check-contents-of-arguments-inside-project-.-Closes-.patch @@ -0,0 +1,54 @@ +From 2105e753c03555a512e3e2dc74921c69cabf40af Mon Sep 17 00:00:00 2001 +From: Jussi Pakkanen +Date: Mon, 10 Oct 2016 20:32:17 +0300 +Subject: [PATCH 14/16] Check contents of arguments inside project(). Closes + #857. + +(cherry picked from commit 60119753d629053bcd3f0fe973977b8ed8f51ea8) +--- + mesonbuild/interpreter.py | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) + +diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py +index be19bab..645c22f 100644 +--- a/mesonbuild/interpreter.py ++++ b/mesonbuild/interpreter.py +@@ -1128,7 +1128,7 @@ class Interpreter(): + raise me + self.sanity_check_ast() + self.variables = {} +- self.builtin = {} ++ self.builtin = {'meson': MesonMain(build, self)} + self.generators = [] + self.visited_subdirs = {} + self.global_args_frozen = False +@@ -1150,7 +1150,6 @@ class Interpreter(): + self.builtin['target_machine'] = CrossMachineInfo(cross_info.config['target_machine']) + else: + self.builtin['target_machine'] = self.builtin['host_machine'] +- self.builtin['meson'] = MesonMain(build, self) + self.build_def_files = [os.path.join(self.subdir, environment.build_filename)] + + def build_func_dict(self): +@@ -1254,9 +1253,6 @@ class Interpreter(): + first = self.ast.lines[0] + if not isinstance(first, mparser.FunctionNode) or first.func_name != 'project': + raise InvalidCode('First statement must be a call to project') +- args = self.reduce_arguments(first.args)[0] +- if len(args) < 2: +- raise InvalidArguments('Not enough arguments to project(). Needs at least the project name and one language') + + + def check_cross_stdlibs(self): +@@ -1615,6 +1611,8 @@ class Interpreter(): + self.build.project_name = args[0] + if self.environment.first_invocation and 'default_options' in kwargs: + self.parse_default_options(kwargs['default_options']) ++ if len(args) < 2: ++ raise InvalidArguments('Not enough arguments to project(). Needs at least the project name and one language') + self.active_projectname = args[0] + self.project_version = kwargs.get('version', 'undefined') + proj_license = mesonlib.stringlistify(kwargs.get('license', 'unknown')) +-- +2.10.1 + diff --git a/0015-setup.py-On-Unix-install-scripts-without-.py-suffix.patch b/0015-setup.py-On-Unix-install-scripts-without-.py-suffix.patch new file mode 100644 index 0000000..3d856d3 --- /dev/null +++ b/0015-setup.py-On-Unix-install-scripts-without-.py-suffix.patch @@ -0,0 +1,68 @@ +From 3a621287b7420fe72b2dbe9f1dd3f38ae1687ed5 Mon Sep 17 00:00:00 2001 +From: Patrick Griffis +Date: Fri, 30 Sep 2016 23:28:40 -0400 +Subject: [PATCH 15/16] setup.py: On Unix install scripts without .py suffix + +(cherry picked from commit 999669e8501501d4618588008e4bf4353a1ace2a) +--- + setup.py | 27 +++++++++++++++++++++++++++ + 1 file changed, 27 insertions(+) + +diff --git a/setup.py b/setup.py +index d5b79ae..42f8d49 100644 +--- a/setup.py ++++ b/setup.py +@@ -14,7 +14,9 @@ + # See the License for the specific language governing permissions and + # limitations under the License. + ++import os + import sys ++from os import path + + if sys.version_info[0] < 3: + print('Tried to install with Python 2, Meson only supports Python 3.') +@@ -25,8 +27,32 @@ if sys.version_info[0] < 3: + # plain distutils when setuptools is not available. + try: + from setuptools import setup ++ from setuptools.command.install_scripts import install_scripts as orig + except ImportError: + from distutils.core import setup ++ from distutils.command.install_scripts import install_scripts as orig ++ ++from distutils.file_util import copy_file ++from distutils.dir_util import mkpath ++from stat import ST_MODE ++ ++class install_scripts(orig): ++ def run(self): ++ if sys.platform == 'win32': ++ super().run() ++ return ++ ++ self.outfiles = [] ++ if not self.dry_run: ++ mkpath(self.install_dir) ++ ++ # We want the files to be installed without a suffix on Unix ++ for infile in self.get_inputs(): ++ in_stripped = infile[:-3] if infile.endswith('.py') else infile ++ outfile = path.join(self.install_dir, in_stripped) ++ # NOTE: Mode is preserved by default ++ copy_file(infile, outfile, dry_run=self.dry_run) ++ self.outfiles.append(outfile) + + from mesonbuild.coredata import version + +@@ -46,6 +72,7 @@ setup(name='meson', + 'mesonconf.py', + 'mesonintrospect.py', + 'wraptool.py'], ++ cmdclass={'install_scripts': install_scripts}, + data_files=[('share/man/man1', ['man/meson.1', + 'man/mesonconf.1', + 'man/mesonintrospect.1', +-- +2.10.1 + diff --git a/0016-allow-libdir-includedir-etc.-be-absolute-paths.patch b/0016-allow-libdir-includedir-etc.-be-absolute-paths.patch new file mode 100644 index 0000000..5b06bd9 --- /dev/null +++ b/0016-allow-libdir-includedir-etc.-be-absolute-paths.patch @@ -0,0 +1,52 @@ +From 02114f9d5066f54c7df9653651c083f590e1da1c Mon Sep 17 00:00:00 2001 +From: Igor Gnatenko +Date: Fri, 7 Oct 2016 23:15:55 +0200 +Subject: [PATCH 16/16] allow libdir/includedir/etc. be absolute paths + +In Fedora we don't care about prefix, we want to ensure that libdir +is /usr/lib64, localedir is /usr/share/locale, and cetera. + +Additionally, we don't need to ensure that prefix is absolute as we +check it in main. + +Fixes: cc19bf0f45f9 ("Move option validation in objects rather than doing it only in the conf script.") +Closes: https://github.com/mesonbuild/meson/issues/869 +Signed-off-by: Igor Gnatenko +(cherry picked from commit a513bcfde613f2a0403f7b0cd34d4bd62674c1d8) +--- + mesonbuild/coredata.py | 5 ----- + mesonbuild/mesonmain.py | 2 +- + 2 files changed, 1 insertion(+), 6 deletions(-) + +diff --git a/mesonbuild/coredata.py b/mesonbuild/coredata.py +index b32a257..0a4dca8 100644 +--- a/mesonbuild/coredata.py ++++ b/mesonbuild/coredata.py +@@ -36,11 +36,6 @@ class UserStringOption(UserOption): + def validate(self, value): + if not isinstance(value, str): + raise MesonException('Value "%s" for string option "%s" is not a string.' % (str(value), self.name)) +- if self.name == 'prefix' and not os.path.isabs(value): +- raise MesonException('Prefix option value \'{0}\' must be an absolute path.'.format(value)) +- if self.name in ('libdir', 'bindir', 'includedir', 'datadir', 'mandir', 'localedir') \ +- and os.path.isabs(value): +- raise MesonException('Option %s must not be an absolute path.' % self.name) + + def set_value(self, newvalue): + self.validate(newvalue) +diff --git a/mesonbuild/mesonmain.py b/mesonbuild/mesonmain.py +index 6374c41..43e4eee 100644 +--- a/mesonbuild/mesonmain.py ++++ b/mesonbuild/mesonmain.py +@@ -70,7 +70,7 @@ class MesonApp(): + def __init__(self, dir1, dir2, script_file, handshake, options, original_cmd_line_args): + (self.source_dir, self.build_dir) = self.validate_dirs(dir1, dir2, handshake) + if not os.path.isabs(options.prefix): +- raise RuntimeError('--prefix value \'{0}\' must be an absolute path: '.format(options.prefix)) ++ raise RuntimeError('--prefix value must be an absolute path: {!r}'.format(options.prefix)) + if options.prefix.endswith('/') or options.prefix.endswith('\\'): + # On Windows we need to preserve the trailing slash if the + # string is of type 'C:\' because 'C:' is not an absolute path. +-- +2.10.1 + diff --git a/meson.spec b/meson.spec index bddcbe8..3c8a508 100644 --- a/meson.spec +++ b/meson.spec @@ -2,14 +2,28 @@ Name: meson Version: 0.35.0 -Release: 2%{?dist} +Release: 3%{?dist} Summary: High productivity build system License: ASL 2.0 URL: http://mesonbuild.com/ Source0: https://github.com/mesonbuild/meson/archive/%{version}/%{name}-%{version}.tar.gz -# https://github.com/mesonbuild/meson/commit/71eddecdc7e82b16c5e454137d641f2a5f7c9c94 Patch0001: 0001-Add-missing-dependency-in-gnome.mkenums-test.patch +Patch0002: 0002-run_tests-Print-stdo-and-stde-in-failing-test-logs.patch +Patch0003: 0003-Remove-shebangs-on-files-that-are-not-runnable-and-a.patch +Patch0004: 0004-Test-arrays-in-languages-for-the-project-method.patch +Patch0005: 0005-intrp-Don-t-do-custom-AST-parsing-for-project.patch +Patch0006: 0006-gnome.generate_gir-Also-include-current-build-dir.patch +Patch0007: 0007-rpm-couple-of-improvements-and-fixes.patch +Patch0008: 0008-fixup-rpm-couple-of-improvements-and-fixes.patch +Patch0009: 0009-fixup-fixup-rpm-couple-of-improvements-and-fixes.patch +Patch0010: 0010-dependencies-Fix-traceback-always-setting-variable.patch +Patch0011: 0011-Created-path_join-function.patch +Patch0012: 0012-Show-error-log-options-in-help.patch +Patch0013: 0013-tests-gnome-Add-missing-enums.h-dep-to-enums2.c.patch +Patch0014: 0014-Check-contents-of-arguments-inside-project-.-Closes-.patch +Patch0015: 0015-setup.py-On-Unix-install-scripts-without-.py-suffix.patch +Patch0016: 0016-allow-libdir-includedir-etc.-be-absolute-paths.patch BuildArch: noarch Obsoletes: %{name}-gui < 0.31.0-3 @@ -36,7 +50,7 @@ BuildRequires: wxGTK3-devel BuildRequires: flex bison BuildRequires: gettext BuildRequires: gnustep-base-devel -BuildRequires: git +BuildRequires: git-core BuildRequires: pkgconfig(protobuf) BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(gobject-introspection-1.0) python3-gobject-base gtk-doc @@ -52,19 +66,18 @@ unit tests, coverage reports, Valgrind, CCache and the like. %prep %autosetup -p1 +find -type f -name '*.py' -executable -exec sed -i -e '1s|.*|#!%{__python3}|' {} ';' %build %py3_build %install %py3_install -install -Dpm 0644 data/macros.%{name} %{buildroot}%{_rpmconfigdir}/macros.d/macros.%{name} -for f in %{buildroot}%{_bindir}/*.py; do - mv ${f} ${f%%.py} -done +install -Dpm0644 data/macros.%{name} %{buildroot}%{rpmmacrodir}/macros.%{name} %check -MESON_PRINT_TEST_OUTPUT=1 ./run_tests.py +#export MESON_PRINT_TEST_OUTPUT=1 +%{__python3} ./run_tests.py %files %license COPYING @@ -78,9 +91,12 @@ MESON_PRINT_TEST_OUTPUT=1 ./run_tests.py %{_mandir}/man1/%{name}conf.1.* %{_mandir}/man1/%{name}introspect.1.* %{_mandir}/man1/wraptool.1.* -%{_rpmconfigdir}/macros.d/macros.%{name} +%{rpmmacrodir}/macros.%{name} %changelog +* Tue Oct 11 2016 Igor Gnatenko - 0.35.0-3 +- Backport couple of fixes + * Wed Oct 05 2016 Igor Gnatenko - 0.35.0-2 - Apply patch to fix FTBFS