From 05cd86cbd86224cf1ad7c29c3d109f201a8bd0c3 Mon Sep 17 00:00:00 2001 From: Kalev Lember Date: Jul 18 2017 11:28:46 +0000 Subject: Backport various gtk-doc fixes from upstream --- diff --git a/0001-Use-absolute-path-to-target-dir-within-gnome-module.patch b/0001-Use-absolute-path-to-target-dir-within-gnome-module.patch new file mode 100644 index 0000000..033db62 --- /dev/null +++ b/0001-Use-absolute-path-to-target-dir-within-gnome-module.patch @@ -0,0 +1,29 @@ +From 7c8ba60384f9c6b9bdcad0345f56d73c246ab98c Mon Sep 17 00:00:00 2001 +From: Elliott Sales de Andrade +Date: Mon, 19 Jun 2017 19:05:42 -0400 +Subject: [PATCH 1/6] Use absolute path to target dir within gnome module. + +Stuff like gtkdoc may not be run in the top-level build directory, so +these paths need to be absolute. + +Fixes #1950. +--- + mesonbuild/modules/gnome.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py +index 6ec70403..3c80a094 100644 +--- a/mesonbuild/modules/gnome.py ++++ b/mesonbuild/modules/gnome.py +@@ -294,7 +294,7 @@ class GnomeModule(ExtensionModule): + else: + link_command = ['-l' + lib.name] + if isinstance(lib, build.SharedLibrary): +- libdir = state.backend.get_target_dir(lib) ++ libdir = os.path.join(state.environment.get_build_dir(), state.backend.get_target_dir(lib)) + link_command.append('-L' + libdir) + # Needed for the following binutils bug: + # https://github.com/mesonbuild/meson/issues/1911 +-- +2.13.0 + diff --git a/0002-Add-build-include-directory-to-gtkdoc-source-paths.patch b/0002-Add-build-include-directory-to-gtkdoc-source-paths.patch new file mode 100644 index 0000000..5005701 --- /dev/null +++ b/0002-Add-build-include-directory-to-gtkdoc-source-paths.patch @@ -0,0 +1,27 @@ +From a07fd0cb7cab97bf3edb55e5e721397188c94e66 Mon Sep 17 00:00:00 2001 +From: Elliott Sales de Andrade +Date: Mon, 19 Jun 2017 20:52:12 -0400 +Subject: [PATCH 2/6] Add build include directory to gtkdoc source paths. + +This enables gtkdoc to produce documentation on files that were +generated, using configure_file, for example. +--- + mesonbuild/modules/gnome.py | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py +index 3c80a094..00e5a8cb 100644 +--- a/mesonbuild/modules/gnome.py ++++ b/mesonbuild/modules/gnome.py +@@ -700,6 +700,8 @@ class GnomeModule(ExtensionModule): + for inc_dir in src_dir.get_incdirs(): + header_dirs.append(os.path.join(state.environment.get_source_dir(), + src_dir.get_curdir(), inc_dir)) ++ header_dirs.append(os.path.join(state.environment.get_build_dir(), ++ src_dir.get_curdir(), inc_dir)) + else: + header_dirs.append(src_dir) + +-- +2.13.0 + diff --git a/0003-Add-all-internal-dep-rpaths-to-gnome-module-builds.patch b/0003-Add-all-internal-dep-rpaths-to-gnome-module-builds.patch new file mode 100644 index 0000000..e42825b --- /dev/null +++ b/0003-Add-all-internal-dep-rpaths-to-gnome-module-builds.patch @@ -0,0 +1,27 @@ +From cf01adbf77a5a739fb7be6a1f297d16c3213da94 Mon Sep 17 00:00:00 2001 +From: Elliott Sales de Andrade +Date: Mon, 19 Jun 2017 19:07:09 -0400 +Subject: [PATCH 3/6] Add all internal dep rpaths to gnome module builds. + +Running gtkdoc on a shared library that depends on another shared +library would fail otherwise. +--- + mesonbuild/modules/gnome.py | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py +index 00e5a8cb..7d539aa8 100644 +--- a/mesonbuild/modules/gnome.py ++++ b/mesonbuild/modules/gnome.py +@@ -303,6 +303,8 @@ class GnomeModule(ExtensionModule): + for d in state.backend.determine_rpath_dirs(lib): + d = os.path.join(state.environment.get_build_dir(), d) + link_command.append('-L' + d) ++ if include_rpath: ++ link_command.append('-Wl,-rpath,' + d) + if include_rpath: + link_command.append('-Wl,-rpath,' + libdir) + if depends: +-- +2.13.0 + diff --git a/0004-Add-example-of-generated-header-in-docs.patch b/0004-Add-example-of-generated-header-in-docs.patch new file mode 100644 index 0000000..17a90e5 --- /dev/null +++ b/0004-Add-example-of-generated-header-in-docs.patch @@ -0,0 +1,99 @@ +From 3bf44e21bba1b83c0f8698779263a5e7679d6f19 Mon Sep 17 00:00:00 2001 +From: Elliott Sales de Andrade +Date: Mon, 19 Jun 2017 19:53:58 -0400 +Subject: [PATCH 4/6] Add example of generated header in docs. + +--- + .../frameworks/10 gtk-doc/doc/foobar-docs.sgml | 1 + + .../frameworks/10 gtk-doc/include/foo-version.h.in | 29 ++++++++++++++++++++++ + .../frameworks/10 gtk-doc/include/meson.build | 10 ++++++++ + test cases/frameworks/10 gtk-doc/meson.build | 4 ++- + 4 files changed, 43 insertions(+), 1 deletion(-) + create mode 100644 test cases/frameworks/10 gtk-doc/include/foo-version.h.in + create mode 100644 test cases/frameworks/10 gtk-doc/include/meson.build + +diff --git a/test cases/frameworks/10 gtk-doc/doc/foobar-docs.sgml b/test cases/frameworks/10 gtk-doc/doc/foobar-docs.sgml +index d23b22fe..028b8083 100644 +--- a/test cases/frameworks/10 gtk-doc/doc/foobar-docs.sgml ++++ b/test cases/frameworks/10 gtk-doc/doc/foobar-docs.sgml +@@ -34,6 +34,7 @@ + + + ++ + + + +diff --git a/test cases/frameworks/10 gtk-doc/include/foo-version.h.in b/test cases/frameworks/10 gtk-doc/include/foo-version.h.in +new file mode 100644 +index 00000000..30751cd7 +--- /dev/null ++++ b/test cases/frameworks/10 gtk-doc/include/foo-version.h.in +@@ -0,0 +1,29 @@ ++#pragma once ++ ++/** ++ * SECTION:version ++ * @section_id: foo-version ++ * @short_description: foo-version.h ++ * @title: Foo Versioning ++ */ ++ ++/** ++ * FOO_MAJOR_VERSION: ++ * ++ * The major version of foo. ++ */ ++#define FOO_MAJOR_VERSION (@FOO_MAJOR_VERSION@) ++ ++/** ++ * FOO_MINOR_VERSION: ++ * ++ * The minor version of foo. ++ */ ++#define FOO_MINOR_VERSION (@FOO_MINOR_VERSION@) ++ ++/** ++ * FOO_MICRO_VERSION: ++ * ++ * The micro version of foo. ++ */ ++#define FOO_MICRO_VERSION (@FOO_MICRO_VERSION@) +diff --git a/test cases/frameworks/10 gtk-doc/include/meson.build b/test cases/frameworks/10 gtk-doc/include/meson.build +new file mode 100644 +index 00000000..4c85b801 +--- /dev/null ++++ b/test cases/frameworks/10 gtk-doc/include/meson.build +@@ -0,0 +1,10 @@ ++cdata = configuration_data() ++parts = meson.project_version().split('.') ++cdata.set('FOO_MAJOR_VERSION', parts[0]) ++cdata.set('FOO_MINOR_VERSION', parts[1]) ++cdata.set('FOO_MICRO_VERSION', parts[2]) ++configure_file(input : 'foo-version.h.in', ++ output : 'foo-version.h', ++ configuration : cdata, ++ install : true, ++ install_dir : get_option('includedir')) +diff --git a/test cases/frameworks/10 gtk-doc/meson.build b/test cases/frameworks/10 gtk-doc/meson.build +index 95eeefa7..4cfcca18 100644 +--- a/test cases/frameworks/10 gtk-doc/meson.build ++++ b/test cases/frameworks/10 gtk-doc/meson.build +@@ -1,4 +1,4 @@ +-project('gtkdoctest', 'c') ++project('gtkdoctest', 'c', version : '1.0.0') + + gnome = import('gnome') + +@@ -6,6 +6,8 @@ assert(gnome.gtkdoc_html_dir('foobar') == 'share/gtkdoc/html/foobar', 'Gtkdoc in + + inc = include_directories('include') + ++subdir('include') ++ + # We have to disable this test until this bug fix has landed to + # distros https://bugzilla.gnome.org/show_bug.cgi?id=753145 + error('MESON_SKIP_TEST can not enable gtk-doc test until upstream fixes have landed.') +-- +2.13.0 + diff --git a/0005-gnome.gtkdoc-Handle-absolute-install_dirs-correctly.patch b/0005-gnome.gtkdoc-Handle-absolute-install_dirs-correctly.patch new file mode 100644 index 0000000..4d57538 --- /dev/null +++ b/0005-gnome.gtkdoc-Handle-absolute-install_dirs-correctly.patch @@ -0,0 +1,58 @@ +From b9caaf94bc918dc8831889e1c6de5bbc9ad2a481 Mon Sep 17 00:00:00 2001 +From: Nirbheek Chauhan +Date: Mon, 17 Jul 2017 12:40:09 +0530 +Subject: [PATCH 5/6] gnome.gtkdoc: Handle absolute install_dirs correctly + +Must prepend DESTDIR in case it's absolute. Also document that by +default it is relative to the gtk-doc html directory. +--- + docs/markdown/Gnome-module.md | 4 ++-- + mesonbuild/scripts/gtkdochelper.py | 8 +++++--- + 2 files changed, 7 insertions(+), 5 deletions(-) + +diff --git a/docs/markdown/Gnome-module.md b/docs/markdown/Gnome-module.md +index 61b88ada..098f030f 100644 +--- a/docs/markdown/Gnome-module.md ++++ b/docs/markdown/Gnome-module.md +@@ -134,14 +134,14 @@ This also creates two targets for translations `help-$project-update-po` and `he + + ### gnome.gtkdoc() + +-Compiles and installs gtkdoc documentation. Takes one positional arguments; The name of the module. ++Compiles and installs gtkdoc documentation into `prefix/share/gtk-doc/html`. Takes one positional argument: The name of the module. + + * `main_xml`: specifies the main XML file + * `main_sgml`: equal to `main_xml` + * `src_dir`: include_directories to include + * `dependencies`: a list of dependencies + * `install`: if true, installs the generated docs +-* `install_dir`: the directory to install the generated docs ++* `install_dir`: the directory to install the generated docs relative to the gtk-doc html dir or an absolute path (default: module name) + * `scan_args`: a list of arguments to pass to `gtkdoc-scan` + * `scanobjs_args`: a list of arguments to pass to `gtkdoc-scangobj` + * `gobject_typesfile`: a list of type files +diff --git a/mesonbuild/scripts/gtkdochelper.py b/mesonbuild/scripts/gtkdochelper.py +index a2cbf5a5..45ed96bc 100644 +--- a/mesonbuild/scripts/gtkdochelper.py ++++ b/mesonbuild/scripts/gtkdochelper.py +@@ -218,12 +218,14 @@ def run(args): + options.mode) + + if 'MESON_INSTALL_PREFIX' in os.environ: +- install_dir = options.install_dir if options.install_dir else options.modulename + destdir = os.environ.get('DESTDIR', '') +- installdir = destdir_join(destdir, os.environ['MESON_INSTALL_PREFIX']) ++ install_prefix = destdir_join(destdir, os.environ['MESON_INSTALL_PREFIX']) ++ install_dir = options.install_dir if options.install_dir else options.modulename ++ if os.path.isabs(install_dir): ++ install_dir = destdir_join(destdir, install_dir) + install_gtkdoc(options.builddir, + options.subdir, +- installdir, ++ install_prefix, + 'share/gtk-doc/html', + install_dir) + return 0 +-- +2.13.0 + diff --git a/0006-gnome-module-Add-lfoo-after-Lbar-LDFLAGS.patch b/0006-gnome-module-Add-lfoo-after-Lbar-LDFLAGS.patch new file mode 100644 index 0000000..ad518e8 --- /dev/null +++ b/0006-gnome-module-Add-lfoo-after-Lbar-LDFLAGS.patch @@ -0,0 +1,41 @@ +From 19f39ad05952099ecb915399231aa88f9acd3b20 Mon Sep 17 00:00:00 2001 +From: Nirbheek Chauhan +Date: Mon, 17 Jul 2017 12:41:54 +0530 +Subject: [PATCH 6/6] gnome module: Add -lfoo after -Lbar LDFLAGS + +Otherwise they won't take effect +--- + mesonbuild/modules/gnome.py | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py +index 7d539aa8..6e633a70 100644 +--- a/mesonbuild/modules/gnome.py ++++ b/mesonbuild/modules/gnome.py +@@ -288,11 +288,8 @@ class GnomeModule(ExtensionModule): + + def _get_link_args(self, state, lib, depends=None, include_rpath=False, + use_gir_args=False): ++ link_command = [] + # Construct link args +- if gir_has_extra_lib_arg() and use_gir_args: +- link_command = ['--extra-library=' + lib.name] +- else: +- link_command = ['-l' + lib.name] + if isinstance(lib, build.SharedLibrary): + libdir = os.path.join(state.environment.get_build_dir(), state.backend.get_target_dir(lib)) + link_command.append('-L' + libdir) +@@ -309,6 +306,10 @@ class GnomeModule(ExtensionModule): + link_command.append('-Wl,-rpath,' + libdir) + if depends: + depends.append(lib) ++ if gir_has_extra_lib_arg() and use_gir_args: ++ link_command.append('--extra-library=' + lib.name) ++ else: ++ link_command.append('-l' + lib.name) + return link_command + + def _get_dependencies_flags(self, deps, state, depends=None, include_rpath=False, +-- +2.13.0 + diff --git a/meson.spec b/meson.spec index 95a92e8..d9738b6 100644 --- a/meson.spec +++ b/meson.spec @@ -2,7 +2,7 @@ Name: meson Version: 0.41.1 -Release: 2%{?dist} +Release: 3%{?dist} Summary: High productivity build system License: ASL 2.0 @@ -12,6 +12,14 @@ Source0: https://github.com/mesonbuild/meson/archive/%{version}/%{name}-% # https://github.com/mesonbuild/meson/commit/0283a2fb41fb4c25be1d0078bb40ae761d47462a Patch0001: 0001-pkgconfig-avoid-appending-slash-at-Cflags.patch +# various gtk-doc fixes backported from upstream +Patch0002: 0001-Use-absolute-path-to-target-dir-within-gnome-module.patch +Patch0003: 0002-Add-build-include-directory-to-gtkdoc-source-paths.patch +Patch0004: 0003-Add-all-internal-dep-rpaths-to-gnome-module-builds.patch +Patch0005: 0004-Add-example-of-generated-header-in-docs.patch +Patch0006: 0005-gnome.gtkdoc-Handle-absolute-install_dirs-correctly.patch +Patch0007: 0006-gnome-module-Add-lfoo-after-Lbar-LDFLAGS.patch + BuildArch: noarch Obsoletes: %{name}-gui < 0.31.0-3 @@ -103,6 +111,9 @@ export MESON_PRINT_TEST_OUTPUT=1 %{rpmmacrodir}/macros.%{name} %changelog +* Tue Jul 18 2017 Kalev Lember - 0.41.1-3 +- Backport various gtk-doc fixes from upstream + * Thu Jul 13 2017 Igor Gnatenko - 0.41.1-2 - Strip trailing slash from pkg-config files