Fix building with glib2-doc 2.79.0

This commit is contained in:
Petr Písař 2024-01-29 16:38:47 +01:00
parent 36f1a0169f
commit 59d02d0db6
3 changed files with 156 additions and 1 deletions

View File

@ -24,7 +24,7 @@
Name: %{upstream_name}%{?v2_suffix}
Version: 2.15.0
Release: 7%{?dist}
Release: 8%{?dist}
Summary: Module metadata manipulation library
# COPYING: MIT
@ -37,6 +37,9 @@ Source0: %{url}/releases/download/%{version}/modulemd-%{version}.tar.xz
Source1: %{url}/releases/download/%{version}/modulemd-%{version}.tar.xz.asc
# Key exported from Petr Pisar's keyring
Source2: gpgkey-E3F42FCE156830A80358E6E94FD1AEC3365AF7BF.gpg
# Fix building with glib2-doc 2.79.0, in upstream after 2.15.0
Patch0: modulemd-2.15.0-build-Move-computing-gtk-doc-module-paths-to-the-che.patch
Patch1: modulemd-2.15.0-doc-Adapt-GLib-documentation-path-to-GLib-2.79.0.patch
BuildRequires: gnupg2
BuildRequires: meson >= 0.47
@ -181,6 +184,9 @@ mv %{buildroot}%{_mandir}/man1/modulemd-validator.1 \
%changelog
* Mon Jan 29 2024 Petr Pisar <ppisar@redhat.com> - 2.15.0-8
- Fix building with glib2-doc 2.79.0
* Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 2.15.0-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild

View File

@ -0,0 +1,96 @@
From 9d2809090cc0cccd7bab67453dc00cf43a289082 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
Date: Fri, 26 Jan 2024 15:44:39 +0100
Subject: [PATCH 1/2] build: Move computing gtk-doc module paths to the check
place
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
A checks and an application of extra directories for gtkdoc-fixxref
were computed independetly. This patch removes the code duplication.
It also adds the discovered path to a "meson setup" summary output.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
meson.build | 25 ++++++++++++-------------
modulemd/meson.build | 9 +++++----
2 files changed, 17 insertions(+), 17 deletions(-)
diff --git a/meson.build b/meson.build
index a5d1330..0b32f4d 100644
--- a/meson.build
+++ b/meson.build
@@ -67,23 +67,21 @@ sed = find_program('sed')
test = find_program('test')
with_docs = get_option('with_docs')
+gtk_doc_referred_paths = []
if with_docs
gtkdoc = dependency('gtk-doc')
glib_docpath = join_paths(glib_prefix, 'share', 'gtk-doc', 'html')
- glib_index_path = join_paths(glib_docpath, 'glib/index.html')
- ret = run_command ([test, '-e', glib_index_path],
- check: false)
- if ret.returncode() != 0
- error('Missing documentation for GLib: @0@'.format(glib_index_path))
- endif
-
- gobject_index_path = join_paths(glib_docpath, 'gobject/index.html')
- ret = run_command ([test, '-e', gobject_index_path],
- check: false)
- if ret.returncode() != 0
- error('Missing documentation for GObject: @0@'.format(gobject_index_path))
- endif
+ foreach referred_module : [ 'glib', 'gobject' ]
+ doc_module_path = join_paths(glib_docpath, referred_module)
+ doc_index_file = join_paths(doc_module_path, 'index.html')
+ ret = run_command ([test, '-e', doc_index_file],
+ check: false)
+ if ret.returncode() != 0
+ error('Missing GTK documentation for @0@: @1@'.format(referred_module, doc_index_file))
+ endif
+ gtk_doc_referred_paths += [ doc_module_path ]
+ endforeach
endif
# Keep with_manpages option a tristate feature for backward compatibility.
@@ -198,6 +196,7 @@ summary({'prefix': get_option('prefix'),
'datadir': get_option('datadir'),
'Python 2 GObject Overrides': gobject_overrides_dir_py2,
'Python 3 GObject Overrides': gobject_overrides_dir_py3,
+ 'GTK-Doc Referred Paths': gtk_doc_referred_paths,
}, section: 'Directories')
summary({'Custom Python': get_option('python_name'),
diff --git a/modulemd/meson.build b/modulemd/meson.build
index a816e13..844f135 100644
--- a/modulemd/meson.build
+++ b/modulemd/meson.build
@@ -256,6 +256,10 @@ configure_file(
# --- Documenatation --- #
if with_docs
+ fixxref_args = []
+ foreach path : gtk_doc_referred_paths
+ fixxref_args += [ '--extra-dir=@0@'.format(path) ]
+ endforeach
gnome.gtkdoc(
'modulemd-2.0',
install_dir: 'modulemd-2.0',
@@ -265,10 +269,7 @@ if with_docs
dependencies : [
modulemd_dep,
],
- fixxref_args: [
- '--extra-dir=@0@'.format(join_paths(glib_docpath, 'glib')),
- '--extra-dir=@0@'.format(join_paths(glib_docpath, 'gobject')),
- ],
+ fixxref_args: [ fixxref_args ],
install : true,
)
endif
--
2.43.0

View File

@ -0,0 +1,53 @@
From 29c339a31b1c753dcdef041e5c2e0e600e48b59d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
Date: Fri, 26 Jan 2024 17:09:11 +0100
Subject: [PATCH 2/2] doc: Adapt GLib documentation path to GLib 2.79.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
GLib 2.79.0 switched from gtk-doc to gi-docgen, whose format and
installation location are both not compatible. The libmodulemd build
script reported an error because of the new location.
This patch fixes the build failure by using the new location if GLib
is 2.79.0 or greater.
Although the libmodulemd documentation references to GLib remain
unresolved now (i.e. names of the functions and the types are not
hyperlinks), we keep using the new location because the new GLib
*.devhelp2 indices remain there and they can only improve over the
time.
If this expection does not fulfill, libmodulemd will either migrate to
gi-docgen, or drop the hard build-time dependency on GLib
documentation.
Reimplements: #611
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
meson.build | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/meson.build b/meson.build
index 0b32f4d..6108649 100644
--- a/meson.build
+++ b/meson.build
@@ -70,7 +70,13 @@ with_docs = get_option('with_docs')
gtk_doc_referred_paths = []
if with_docs
gtkdoc = dependency('gtk-doc')
- glib_docpath = join_paths(glib_prefix, 'share', 'gtk-doc', 'html')
+
+ if glib.version().version_compare('<2.79.0')
+ glib_docpath = join_paths(glib_prefix, 'share', 'gtk-doc', 'html')
+ else
+ glib_docpath = join_paths(glib_prefix, 'share', 'doc', 'glib-2.0')
+ warning('glib >= 2.79.0 documention might not be properly referred from libmodulemd documentation.')
+ endif
foreach referred_module : [ 'glib', 'gobject' ]
doc_module_path = join_paths(glib_docpath, referred_module)
--
2.43.0