summary refs log tree commit diff
path: root/gnu/packages/patches/qemu-build-info-manual.patch
blob: d57b26ea0019dff5136b407d9fa5fac50f330f5d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
From 07303a0a4daa83a0555ac4abad7a5d65584307ad Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Date: Thu, 17 Sep 2020 13:28:19 -0400
Subject: [PATCH] build: Build and install the info manual.

Take advantage of the Sphinx texinfo backend to generate a QEMU info
manual.  The texinfo format allows for more structure and info readers
provide more advanced navigation capabilities compared to manpages
readers.

* configure (infodir): Add the --infodir option, which allows
configuring the directory under which the info manuals are installed.
* docs/index.rst: Include the top level documents to prevent
warnings (treated as errors by sphinx-build).
* Makefile (sphinxdocs-info, $(MANUAL_BUILDDIR)/QEMU.texi)): New targets.
(info): Depend on sphinxdocs-info.
(install-doc): Install the info manual.
---
 Makefile       | 13 +++++++++++--
 configure      |  7 +++++++
 docs/index.rst |  2 ++
 3 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/Makefile b/Makefile
index 13dd708c..da78612d 100644
--- a/Makefile
+++ b/Makefile
@@ -864,12 +864,14 @@ endef
 # Note that we deliberately do not install the "devel" manual: it is
 # for QEMU developers, and not interesting to our users.
 .PHONY: install-sphinxdocs
-install-sphinxdocs: sphinxdocs
+install-sphinxdocs: sphinxdocs sphinxdocs-info
 	$(call install-manual,interop)
 	$(call install-manual,specs)
 	$(call install-manual,system)
 	$(call install-manual,tools)
 	$(call install-manual,user)
+	$(INSTALL_DIR) "$(DESTDIR)$(infodir)"
+	$(INSTALL_DATA) $(MANUAL_BUILDDIR)/QEMU.info "$(DESTDIR)$(infodir)"
 
 install-doc: $(DOCS) install-sphinxdocs
 	$(INSTALL_DIR) "$(DESTDIR)$(qemu_docdir)"
@@ -1067,6 +1069,13 @@ sphinxdocs: $(MANUAL_BUILDDIR)/devel/index.html \
             $(MANUAL_BUILDDIR)/tools/index.html \
             $(MANUAL_BUILDDIR)/user/index.html
 
+# Build the complete info manual.
+.PHONE: sphinxdocs-info
+sphinxdocs-info: $(MANUAL_BUILDDIR)/QEMU.info
+
+$(MANUAL_BUILDDIR)/QEMU.texi: $(call manual-deps,*) $(wildcard $(SRC_PATH)/docs/*.rst)
+	$(call build-manual,,texinfo)
+
 # Canned command to build a single manual
 # Arguments: $1 = manual name, $2 = Sphinx builder ('html' or 'man')
 # Note the use of different doctree for each (manual, builder) tuple;
@@ -1126,7 +1135,7 @@ docs/interop/qemu-ga-qapi.texi: qga/qapi-generated/qga-qapi-doc.texi
 	@cp -p $< $@
 
 html: docs/interop/qemu-qmp-ref.html docs/interop/qemu-ga-ref.html sphinxdocs
-info: docs/interop/qemu-qmp-ref.info docs/interop/qemu-ga-ref.info
+info: docs/interop/qemu-qmp-ref.info docs/interop/qemu-ga-ref.info sphinxdocs-info
 pdf: docs/interop/qemu-qmp-ref.pdf docs/interop/qemu-ga-ref.pdf
 txt: docs/interop/qemu-qmp-ref.txt docs/interop/qemu-ga-ref.txt
 
diff --git a/configure b/configure
index 2acc4d14..3691bd2e 100755
--- a/configure
+++ b/configure
@@ -415,6 +415,7 @@ LDFLAGS_SHARED="-shared"
 modules="no"
 module_upgrades="no"
 prefix="/usr/local"
+infodir="\${prefix}/share/info"
 mandir="\${prefix}/share/man"
 datadir="\${prefix}/share"
 firmwarepath="\${prefix}/share/qemu-firmware"
@@ -987,6 +988,7 @@ if test "$mingw32" = "yes" ; then
     LIBS="-liberty $LIBS"
   fi
   prefix="c:/Program Files/QEMU"
+  infodir="\${prefix}"
   mandir="\${prefix}"
   datadir="\${prefix}"
   qemu_docdir="\${prefix}"
@@ -1087,6 +1089,8 @@ for opt do
     static="yes"
     QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
   ;;
+  --infodir=*) infodir="$optarg"
+  ;;
   --mandir=*) mandir="$optarg"
   ;;
   --bindir=*) bindir="$optarg"
@@ -1780,6 +1784,7 @@ Advanced options (experts only):
   --smbd=SMBD              use specified smbd [$smbd]
   --with-git=GIT           use specified git [$git]
   --static                 enable static build [$static]
+  --infodir=PATH           install info manual in PATH
   --mandir=PATH            install man pages in PATH
   --datadir=PATH           install firmware in PATH$confsuffix
   --docdir=PATH            install documentation in PATH$confsuffix
@@ -6836,6 +6841,7 @@ echo "include directory $(eval echo $includedir)"
 echo "config directory  $(eval echo $sysconfdir)"
 if test "$mingw32" = "no" ; then
 echo "local state directory   $(eval echo $local_statedir)"
+echo "Info manual directory   $(eval echo $infodir)"
 echo "Manual directory  $(eval echo $mandir)"
 echo "ELF interp prefix $interp_prefix"
 else
@@ -7059,6 +7065,7 @@ echo "bindir=$bindir" >> $config_host_mak
 echo "libdir=$libdir" >> $config_host_mak
 echo "libexecdir=$libexecdir" >> $config_host_mak
 echo "includedir=$includedir" >> $config_host_mak
+echo "infodir=$infodir" >> $config_host_mak
 echo "mandir=$mandir" >> $config_host_mak
 echo "sysconfdir=$sysconfdir" >> $config_host_mak
 echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
diff --git a/docs/index.rst b/docs/index.rst
index 763e3d04..4f155b51 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -9,6 +9,7 @@ Welcome to QEMU's documentation!
 .. toctree::
    :maxdepth: 2
    :caption: Contents:
+   :glob:
 
    system/index
    user/index
@@ -16,3 +17,4 @@ Welcome to QEMU's documentation!
    interop/index
    specs/index
    devel/index
+   *
-- 
2.28.0