[libvirt] [PATCH 11/25] docs: generate files into build dir and stop distributing them

Pavel Hrdina phrdina at redhat.com
Mon Oct 21 08:00:36 UTC 2019


Historically we did not support VPATH builds and everything was
generated into source directory.  The introduction of VPATH builds did
not changed the way how our documentation is handled.

This patch changes the rules to generate everything into build
directory and stops distributing generated files in order to have
properly separated VPATH builds.

Signed-off-by: Pavel Hrdina <phrdina at redhat.com>
---
 docs/Makefile.am  | 113 ++++++++++++++++++++++------------------------
 docs/apibuild.py  |   2 +-
 docs/hvsupport.pl |  37 +++++++--------
 3 files changed, 74 insertions(+), 78 deletions(-)

diff --git a/docs/Makefile.am b/docs/Makefile.am
index 5b2896bbe5..0311bbedd8 100644
--- a/docs/Makefile.am
+++ b/docs/Makefile.am
@@ -116,15 +116,15 @@ kbase_html_in = \
   $(patsubst $(srcdir)/%,%,$(wildcard $(srcdir)/kbase/*.html.in))
 kbase_html = $(kbase_html_in:%.html.in=%.html)
 
-# Since we ship pre-built html in the tarball, we must also
-# ship the sources, even when those sources are themselves
-# generated.
 # Generate hvsupport.html and news.html first, since they take one extra step.
-dot_html_in = \
+dot_html_generated_in = \
   hvsupport.html.in \
-  news.html.in \
+  news.html.in
+dot_html_in = \
   $(notdir $(wildcard $(srcdir)/*.html.in))
-dot_html = $(dot_html_in:%.html.in=%.html)
+dot_html = \
+  $(dot_html_generated_in:%.html.in=%.html) \
+  $(dot_html_in:%.html.in=%.html)
 
 xml = \
   libvirt-api.xml \
@@ -166,27 +166,32 @@ EXTRA_DIST= \
   apibuild.py genaclperms.pl \
   site.xsl subsite.xsl newapi.xsl page.xsl \
   wrapstring.xsl \
-  $(dot_html) $(dot_html_in) $(gif) $(apihtml) $(apipng) \
-  $(xml) $(qemu_xml) $(lxc_xml) $(admin_xml) $(fig) $(png) $(css) \
+  $(dot_html_in) $(gif) $(apipng) \
+  $(fig) $(png) $(css) \
   $(javascript) $(logofiles) \
-  $(internals_html_in) $(internals_html) $(fonts) \
-  $(kbase_html_in) $(kbase_html) \
+  $(internals_html_in) $(fonts) \
+  $(kbase_html_in) \
   aclperms.htmlinc \
   hvsupport.pl \
   $(schema_DATA)
 
 acl_generated = aclperms.htmlinc
 
-$(srcdir)/aclperms.htmlinc: $(top_srcdir)/src/access/viraccessperm.h \
+aclperms.htmlinc: $(top_srcdir)/src/access/viraccessperm.h \
         $(srcdir)/genaclperms.pl Makefile.am
 	$(AM_V_GEN)$(PERL) $(srcdir)/genaclperms.pl $< > $@
 
-MAINTAINERCLEANFILES = \
-  $(addprefix $(srcdir)/,$(dot_html)) \
-  $(addprefix $(srcdir)/,$(apihtml)) \
-  $(addprefix $(srcdir)/,$(internals_html)) \
-  $(addprefix $(srcdir)/,$(kbase_html)) \
-  $(srcdir)/hvsupport.html.in $(srcdir)/aclperms.htmlinc
+CLEANFILES = \
+  $(dot_html) \
+  $(apihtml) \
+  $(internals_html) \
+  $(kbase_html) \
+  $(xml) \
+  $(qemu_xml) \
+  $(lxc_xml) \
+  $(admin_xml) \
+  $(dot_html_generated_in) \
+  aclperms.htmlinc
 
 timestamp="$(shell if test -n "$$SOURCE_DATE_EPOCH"; \
 		   then \
@@ -197,21 +202,21 @@ timestamp="$(shell if test -n "$$SOURCE_DATE_EPOCH"; \
 
 all-am: web
 
-api: $(srcdir)/libvirt-api.xml $(srcdir)/libvirt-refs.xml
-qemu_api: $(srcdir)/libvirt-qemu-api.xml $(srcdir)/libvirt-qemu-refs.xml
-lxc_api: $(srcdir)/libvirt-lxc-api.xml $(srcdir)/libvirt-lxc-refs.xml
-admin_api: $(srcdir)/libvirt-admin-api.xml $(srcdir)/libvirt-admin-refs.xml
+api: libvirt-api.xml libvirt-refs.xml
+qemu_api: libvirt-qemu-api.xml libvirt-qemu-refs.xml
+lxc_api: libvirt-lxc-api.xml libvirt-lxc-refs.xml
+admin_api: libvirt-admin-api.xml libvirt-admin-refs.xml
 
 web: $(dot_html) $(internals_html) $(kbase_html) \
 	html/index.html
 
-hvsupport.html: $(srcdir)/hvsupport.html.in
+hvsupport.html: hvsupport.html.in
 
-$(srcdir)/hvsupport.html.in: $(srcdir)/hvsupport.pl $(api_DATA) \
+hvsupport.html.in: $(srcdir)/hvsupport.pl $(api_DATA) \
 		$(top_srcdir)/src/libvirt_public.syms \
 	$(top_srcdir)/src/libvirt_qemu.syms $(top_srcdir)/src/libvirt_lxc.syms \
 	$(top_srcdir)/src/driver.h
-	$(AM_V_GEN)$(PERL) $(srcdir)/hvsupport.pl $(top_srcdir)/src > $@ \
+	$(AM_V_GEN)$(PERL) $(srcdir)/hvsupport.pl $(top_srcdir) $(top_builddir) > $@ \
 		|| { rm $@ && exit 1; }
 
 news.html.in: \
@@ -226,8 +231,6 @@ EXTRA_DIST += \
 	$(srcdir)/news.xml \
 	$(srcdir)/news.rng \
 	$(srcdir)/news-html.xsl
-MAINTAINERCLEANFILES += \
-	$(srcdir)/news.html.in
 
 %.png: %.fig
 	convert -rotate 90 $< $@
@@ -249,36 +252,36 @@ MAINTAINERCLEANFILES += \
 	    || { rm $@ && exit 1; }
 
 %.html: %.html.tmp
-	$(AM_V_GEN)$(XMLLINT) --nonet --format $< > $(srcdir)/$@ \
-	  || { rm $(srcdir)/$@ && exit 1; }
+	$(AM_V_GEN)$(XMLLINT) --nonet --format $< > $@ \
+	  || { rm $@ && exit 1; }
 
 $(apihtml_generated): html/index.html
 
 html/index.html: libvirt-api.xml newapi.xsl page.xsl $(APIBUILD_STAMP)
-	$(AM_V_GEN)$(XSLTPROC) --nonet -o $(srcdir)/ \
+	$(AM_V_GEN)$(XSLTPROC) --nonet -o ./ \
 	  --stringparam builddir '$(abs_top_builddir)' \
 	  --stringparam timestamp $(timestamp) \
-	  $(srcdir)/newapi.xsl $(srcdir)/libvirt-api.xml && \
-	  $(XMLLINT) --nonet --noout $(srcdir)/html/*.html
+	  $(srcdir)/newapi.xsl libvirt-api.xml && \
+	  $(XMLLINT) --nonet --noout html/*.html
 
 python_generated_files = \
-		$(srcdir)/html/libvirt-libvirt-lxc.html \
-		$(srcdir)/html/libvirt-libvirt-qemu.html \
-		$(srcdir)/html/libvirt-libvirt-admin.html \
-		$(srcdir)/html/libvirt-virterror.html \
-		$(srcdir)/libvirt-api.xml \
-		$(srcdir)/libvirt-refs.xml \
-		$(srcdir)/libvirt-lxc-api.xml \
-		$(srcdir)/libvirt-lxc-refs.xml \
-		$(srcdir)/libvirt-qemu-api.xml \
-		$(srcdir)/libvirt-qemu-refs.xml \
-		$(srcdir)/libvirt-admin-api.xml \
-		$(srcdir)/libvirt-admin-refs.xml \
+		html/libvirt-libvirt-lxc.html \
+		html/libvirt-libvirt-qemu.html \
+		html/libvirt-libvirt-admin.html \
+		html/libvirt-virterror.html \
+		libvirt-api.xml \
+		libvirt-refs.xml \
+		libvirt-lxc-api.xml \
+		libvirt-lxc-refs.xml \
+		libvirt-qemu-api.xml \
+		libvirt-qemu-refs.xml \
+		libvirt-admin-api.xml \
+		libvirt-admin-refs.xml \
 		$(NULL)
 
 APIBUILD=$(srcdir)/apibuild.py
-APIBUILD_STAMP=$(APIBUILD).stamp
-EXTRA_DIST += $(APIBUILD_STAMP)
+APIBUILD_STAMP=apibuild.py.stamp
+CLEANFILES += $(APIBUILD_STAMP)
 
 $(python_generated_files): $(APIBUILD_STAMP)
 
@@ -327,22 +330,14 @@ $(APIBUILD_STAMP): $(srcdir)/apibuild.py \
 check-local: all
 dist-local: all
 
-clean-local:
-	rm -f *~ *.bak *.hierarchy *.signals *-unused.txt *.html html/*.html
-
-maintainer-clean-local: clean-local
-	rm -rf $(srcdir)/libvirt-api.xml $(srcdir)/libvirt-refs.xml
-	rm -rf $(srcdir)/libvirt-qemu-api.xml $(srcdir)/libvirt-qemu-refs.xml
-	rm -rf $(srcdir)/libvirt-lxc-api.xml $(srcdir)/libvirt-lxc-refs.xml
-	rm -rf $(srcdir)/libvirt-admin-api.xml $(srcdir)/libvirt-admin-refs.xml
-	rm -rf $(APIBUILD_STAMP)
-
 rebuild: api qemu_api lxc_api admin_api all
 
 install-data-local:
 	$(mkinstalldirs) $(DESTDIR)$(HTML_DIR)
-	for f in $(css) $(dot_html) $(gif) $(png); do \
+	for f in $(css) $(gif) $(png); do \
 	  $(INSTALL) -m 0644 $(srcdir)/$$f $(DESTDIR)$(HTML_DIR); done
+	for f in $(dot_html); do \
+	  $(INSTALL) -m 0644 $$f $(DESTDIR)$(HTML_DIR); done
 	$(mkinstalldirs) $(DESTDIR)$(HTML_DIR)/js
 	for f in $(javascript); do \
 	  $(INSTALL) -m 0644 $(srcdir)/$$f $(DESTDIR)$(HTML_DIR)/js/; done
@@ -351,15 +346,15 @@ install-data-local:
 	  $(INSTALL) -m 0644 $(srcdir)/$$f $(DESTDIR)$(HTML_DIR)/logos; done
 	$(mkinstalldirs) $(DESTDIR)$(HTML_DIR)/html
 	for h in $(apihtml); do \
-	  $(INSTALL) -m 0644 $(srcdir)/$$h $(DESTDIR)$(HTML_DIR)/html; done
+	  $(INSTALL) -m 0644 $$h $(DESTDIR)$(HTML_DIR)/html; done
 	for p in $(apipng); do \
 	  $(INSTALL) -m 0644 $(srcdir)/$$p $(DESTDIR)$(HTML_DIR)/html; done
 	$(mkinstalldirs) $(DESTDIR)$(HTML_DIR)/internals
 	for f in $(internals_html); do \
-	  $(INSTALL) -m 0644 $(srcdir)/$$f $(DESTDIR)$(HTML_DIR)/internals; done
+	  $(INSTALL) -m 0644 $$f $(DESTDIR)$(HTML_DIR)/internals; done
 	$(mkinstalldirs) $(DESTDIR)$(HTML_DIR)/kbase
 	for f in $(kbase_html); do \
-	  $(INSTALL) -m 0644 $(srcdir)/$$f $(DESTDIR)$(HTML_DIR)/kbase; done
+	  $(INSTALL) -m 0644 $$f $(DESTDIR)$(HTML_DIR)/kbase; done
 	$(mkinstalldirs) $(DESTDIR)$(HTML_DIR)/fonts
 	for f in $(fonts); do \
 	  $(INSTALL) -m 0644 $(srcdir)/$$f $(DESTDIR)$(HTML_DIR)/fonts; \
diff --git a/docs/apibuild.py b/docs/apibuild.py
index d3d0be2d83..af8595083c 100755
--- a/docs/apibuild.py
+++ b/docs/apibuild.py
@@ -2551,7 +2551,7 @@ class app:
                     srcdir + "/../src/util",
                     srcdir + "/../include/libvirt",
                     builddir + "/../include/libvirt"]
-            builder = docBuilder(name, srcdir, dirs, [])
+            builder = docBuilder(name, builddir, dirs, [])
         else:
             self.warning("rebuild() failed, unable to guess the module")
             return None
diff --git a/docs/hvsupport.pl b/docs/hvsupport.pl
index 494b8a27ec..0977098eac 100755
--- a/docs/hvsupport.pl
+++ b/docs/hvsupport.pl
@@ -5,23 +5,24 @@ use warnings;
 
 use File::Find;
 
-die "syntax: $0 SRCDIR\n" unless int(@ARGV) == 1;
+die "syntax: $0 SRCDIR BUILDDIR\n" unless int(@ARGV) == 2;
 
 my $srcdir = shift @ARGV;
+my $builddir = shift @ARGV;
 
-my $symslibvirt = "$srcdir/libvirt_public.syms";
-my $symsqemu = "$srcdir/libvirt_qemu.syms";
-my $symslxc = "$srcdir/libvirt_lxc.syms";
+my $symslibvirt = "$srcdir/src/libvirt_public.syms";
+my $symsqemu = "$srcdir/src/libvirt_qemu.syms";
+my $symslxc = "$srcdir/src/libvirt_lxc.syms";
 my @drivertable = (
-    "$srcdir/driver-hypervisor.h",
-    "$srcdir/driver-interface.h",
-    "$srcdir/driver-network.h",
-    "$srcdir/driver-nodedev.h",
-    "$srcdir/driver-nwfilter.h",
-    "$srcdir/driver-secret.h",
-    "$srcdir/driver-state.h",
-    "$srcdir/driver-storage.h",
-    "$srcdir/driver-stream.h",
+    "$srcdir/src/driver-hypervisor.h",
+    "$srcdir/src/driver-interface.h",
+    "$srcdir/src/driver-network.h",
+    "$srcdir/src/driver-nodedev.h",
+    "$srcdir/src/driver-nwfilter.h",
+    "$srcdir/src/driver-secret.h",
+    "$srcdir/src/driver-state.h",
+    "$srcdir/src/driver-storage.h",
+    "$srcdir/src/driver-stream.h",
     );
 
 my %groupheaders = (
@@ -38,10 +39,10 @@ my %groupheaders = (
 my @srcs;
 find({
     wanted => sub {
-        if (m!$srcdir/.*/\w+_(driver|common|tmpl|monitor|hal|udev)\.c$!) {
+        if (m!$srcdir/src/.*/\w+_(driver|common|tmpl|monitor|hal|udev)\.c$!) {
             push @srcs, $_ if $_ !~ /vbox_driver\.c/;
         }
-    }, no_chdir => 1}, $srcdir);
+    }, no_chdir => 1}, "$srcdir/src");
 
 # Map API functions to the header and documentation files they're in
 # so that we can generate proper hyperlinks to their documentation.
@@ -120,13 +121,13 @@ sub parseSymsFile {
 
 my %apis;
 # Get the list of all public APIs and their corresponding version
-parseSymsFile(\%apis, "LIBVIRT", $symslibvirt, "$srcdir/../docs/libvirt-api.xml");
+parseSymsFile(\%apis, "LIBVIRT", $symslibvirt, "$builddir/docs/libvirt-api.xml");
 
 # And the same for the QEMU specific APIs
-parseSymsFile(\%apis, "LIBVIRT_QEMU", $symsqemu, "$srcdir/../docs/libvirt-qemu-api.xml");
+parseSymsFile(\%apis, "LIBVIRT_QEMU", $symsqemu, "$builddir/docs/libvirt-qemu-api.xml");
 
 # And the same for the LXC specific APIs
-parseSymsFile(\%apis, "LIBVIRT_LXC", $symslxc, "$srcdir/../docs/libvirt-lxc-api.xml");
+parseSymsFile(\%apis, "LIBVIRT_LXC", $symslxc, "$builddir/docs/libvirt-lxc-api.xml");
 
 
 # Some special things which aren't public APIs,
-- 
2.21.0




More information about the libvir-list mailing list