Backport various gtk-doc fixes from upstream

This commit is contained in:
Kalev Lember 2017-07-18 13:28:46 +02:00
parent ba4abe8828
commit 05cd86cbd8
7 changed files with 293 additions and 1 deletions

View File

@ -0,0 +1,29 @@
From 7c8ba60384f9c6b9bdcad0345f56d73c246ab98c Mon Sep 17 00:00:00 2001
From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
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

View File

@ -0,0 +1,27 @@
From a07fd0cb7cab97bf3edb55e5e721397188c94e66 Mon Sep 17 00:00:00 2001
From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
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

View File

@ -0,0 +1,27 @@
From cf01adbf77a5a739fb7be6a1f297d16c3213da94 Mon Sep 17 00:00:00 2001
From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
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

View File

@ -0,0 +1,99 @@
From 3bf44e21bba1b83c0f8698779263a5e7679d6f19 Mon Sep 17 00:00:00 2001
From: Elliott Sales de Andrade <quantum.analyst@gmail.com>
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 @@
</para>
</partintro>
<xi:include href="xml/foo.xml"/>
+ <xi:include href="xml/foo-version.xml"/>
</reference>
</book>
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: <filename>foo-version.h</filename>
+ * @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

View File

@ -0,0 +1,58 @@
From b9caaf94bc918dc8831889e1c6de5bbc9ad2a481 Mon Sep 17 00:00:00 2001
From: Nirbheek Chauhan <nirbheek@centricular.com>
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

View File

@ -0,0 +1,41 @@
From 19f39ad05952099ecb915399231aa88f9acd3b20 Mon Sep 17 00:00:00 2001
From: Nirbheek Chauhan <nirbheek@centricular.com>
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

View File

@ -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 <klember@redhat.com> - 0.41.1-3
- Backport various gtk-doc fixes from upstream
* Thu Jul 13 2017 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.41.1-2
- Strip trailing slash from pkg-config files