docs: generate files into build dir and stop distributing them

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@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Pavel Hrdina 2019-10-18 17:21:06 +02:00
parent 2b2c3361b6
commit 67a61a1bf6
3 changed files with 74 additions and 78 deletions

View File

@ -116,15 +116,15 @@ kbase_html_in = \
$(patsubst $(srcdir)/%,%,$(wildcard $(srcdir)/kbase/*.html.in)) $(patsubst $(srcdir)/%,%,$(wildcard $(srcdir)/kbase/*.html.in))
kbase_html = $(kbase_html_in:%.html.in=%.html) 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. # Generate hvsupport.html and news.html first, since they take one extra step.
dot_html_in = \ dot_html_generated_in = \
hvsupport.html.in \ hvsupport.html.in \
news.html.in \ news.html.in
dot_html_in = \
$(notdir $(wildcard $(srcdir)/*.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 = \ xml = \
libvirt-api.xml \ libvirt-api.xml \
@ -166,27 +166,32 @@ EXTRA_DIST= \
apibuild.py genaclperms.pl \ apibuild.py genaclperms.pl \
site.xsl subsite.xsl newapi.xsl page.xsl \ site.xsl subsite.xsl newapi.xsl page.xsl \
wrapstring.xsl \ wrapstring.xsl \
$(dot_html) $(dot_html_in) $(gif) $(apihtml) $(apipng) \ $(dot_html_in) $(gif) $(apipng) \
$(xml) $(qemu_xml) $(lxc_xml) $(admin_xml) $(fig) $(png) $(css) \ $(fig) $(png) $(css) \
$(javascript) $(logofiles) \ $(javascript) $(logofiles) \
$(internals_html_in) $(internals_html) $(fonts) \ $(internals_html_in) $(fonts) \
$(kbase_html_in) $(kbase_html) \ $(kbase_html_in) \
aclperms.htmlinc \ aclperms.htmlinc \
hvsupport.pl \ hvsupport.pl \
$(schema_DATA) $(schema_DATA)
acl_generated = aclperms.htmlinc 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 $(srcdir)/genaclperms.pl Makefile.am
$(AM_V_GEN)$(PERL) $(srcdir)/genaclperms.pl $< > $@ $(AM_V_GEN)$(PERL) $(srcdir)/genaclperms.pl $< > $@
MAINTAINERCLEANFILES = \ CLEANFILES = \
$(addprefix $(srcdir)/,$(dot_html)) \ $(dot_html) \
$(addprefix $(srcdir)/,$(apihtml)) \ $(apihtml) \
$(addprefix $(srcdir)/,$(internals_html)) \ $(internals_html) \
$(addprefix $(srcdir)/,$(kbase_html)) \ $(kbase_html) \
$(srcdir)/hvsupport.html.in $(srcdir)/aclperms.htmlinc $(xml) \
$(qemu_xml) \
$(lxc_xml) \
$(admin_xml) \
$(dot_html_generated_in) \
aclperms.htmlinc
timestamp="$(shell if test -n "$$SOURCE_DATE_EPOCH"; \ timestamp="$(shell if test -n "$$SOURCE_DATE_EPOCH"; \
then \ then \
@ -197,21 +202,21 @@ timestamp="$(shell if test -n "$$SOURCE_DATE_EPOCH"; \
all-am: web all-am: web
api: $(srcdir)/libvirt-api.xml $(srcdir)/libvirt-refs.xml api: libvirt-api.xml libvirt-refs.xml
qemu_api: $(srcdir)/libvirt-qemu-api.xml $(srcdir)/libvirt-qemu-refs.xml qemu_api: libvirt-qemu-api.xml libvirt-qemu-refs.xml
lxc_api: $(srcdir)/libvirt-lxc-api.xml $(srcdir)/libvirt-lxc-refs.xml lxc_api: libvirt-lxc-api.xml libvirt-lxc-refs.xml
admin_api: $(srcdir)/libvirt-admin-api.xml $(srcdir)/libvirt-admin-refs.xml admin_api: libvirt-admin-api.xml libvirt-admin-refs.xml
web: $(dot_html) $(internals_html) $(kbase_html) \ web: $(dot_html) $(internals_html) $(kbase_html) \
html/index.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_public.syms \
$(top_srcdir)/src/libvirt_qemu.syms $(top_srcdir)/src/libvirt_lxc.syms \ $(top_srcdir)/src/libvirt_qemu.syms $(top_srcdir)/src/libvirt_lxc.syms \
$(top_srcdir)/src/driver.h $(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; } || { rm $@ && exit 1; }
news.html.in: \ news.html.in: \
@ -226,8 +231,6 @@ EXTRA_DIST += \
$(srcdir)/news.xml \ $(srcdir)/news.xml \
$(srcdir)/news.rng \ $(srcdir)/news.rng \
$(srcdir)/news-html.xsl $(srcdir)/news-html.xsl
MAINTAINERCLEANFILES += \
$(srcdir)/news.html.in
%.png: %.fig %.png: %.fig
convert -rotate 90 $< $@ convert -rotate 90 $< $@
@ -249,36 +252,36 @@ MAINTAINERCLEANFILES += \
|| { rm $@ && exit 1; } || { rm $@ && exit 1; }
%.html: %.html.tmp %.html: %.html.tmp
$(AM_V_GEN)$(XMLLINT) --nonet --format $< > $(srcdir)/$@ \ $(AM_V_GEN)$(XMLLINT) --nonet --format $< > $@ \
|| { rm $(srcdir)/$@ && exit 1; } || { rm $@ && exit 1; }
$(apihtml_generated): html/index.html $(apihtml_generated): html/index.html
html/index.html: libvirt-api.xml newapi.xsl page.xsl $(APIBUILD_STAMP) 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 builddir '$(abs_top_builddir)' \
--stringparam timestamp $(timestamp) \ --stringparam timestamp $(timestamp) \
$(srcdir)/newapi.xsl $(srcdir)/libvirt-api.xml && \ $(srcdir)/newapi.xsl libvirt-api.xml && \
$(XMLLINT) --nonet --noout $(srcdir)/html/*.html $(XMLLINT) --nonet --noout html/*.html
python_generated_files = \ python_generated_files = \
$(srcdir)/html/libvirt-libvirt-lxc.html \ html/libvirt-libvirt-lxc.html \
$(srcdir)/html/libvirt-libvirt-qemu.html \ html/libvirt-libvirt-qemu.html \
$(srcdir)/html/libvirt-libvirt-admin.html \ html/libvirt-libvirt-admin.html \
$(srcdir)/html/libvirt-virterror.html \ html/libvirt-virterror.html \
$(srcdir)/libvirt-api.xml \ libvirt-api.xml \
$(srcdir)/libvirt-refs.xml \ libvirt-refs.xml \
$(srcdir)/libvirt-lxc-api.xml \ libvirt-lxc-api.xml \
$(srcdir)/libvirt-lxc-refs.xml \ libvirt-lxc-refs.xml \
$(srcdir)/libvirt-qemu-api.xml \ libvirt-qemu-api.xml \
$(srcdir)/libvirt-qemu-refs.xml \ libvirt-qemu-refs.xml \
$(srcdir)/libvirt-admin-api.xml \ libvirt-admin-api.xml \
$(srcdir)/libvirt-admin-refs.xml \ libvirt-admin-refs.xml \
$(NULL) $(NULL)
APIBUILD=$(srcdir)/apibuild.py APIBUILD=$(srcdir)/apibuild.py
APIBUILD_STAMP=$(APIBUILD).stamp APIBUILD_STAMP=apibuild.py.stamp
EXTRA_DIST += $(APIBUILD_STAMP) CLEANFILES += $(APIBUILD_STAMP)
$(python_generated_files): $(APIBUILD_STAMP) $(python_generated_files): $(APIBUILD_STAMP)
@ -327,22 +330,14 @@ $(APIBUILD_STAMP): $(srcdir)/apibuild.py \
check-local: all check-local: all
dist-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 rebuild: api qemu_api lxc_api admin_api all
install-data-local: install-data-local:
$(mkinstalldirs) $(DESTDIR)$(HTML_DIR) $(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 $(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 $(mkinstalldirs) $(DESTDIR)$(HTML_DIR)/js
for f in $(javascript); do \ for f in $(javascript); do \
$(INSTALL) -m 0644 $(srcdir)/$$f $(DESTDIR)$(HTML_DIR)/js/; done $(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 $(INSTALL) -m 0644 $(srcdir)/$$f $(DESTDIR)$(HTML_DIR)/logos; done
$(mkinstalldirs) $(DESTDIR)$(HTML_DIR)/html $(mkinstalldirs) $(DESTDIR)$(HTML_DIR)/html
for h in $(apihtml); do \ 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 \ for p in $(apipng); do \
$(INSTALL) -m 0644 $(srcdir)/$$p $(DESTDIR)$(HTML_DIR)/html; done $(INSTALL) -m 0644 $(srcdir)/$$p $(DESTDIR)$(HTML_DIR)/html; done
$(mkinstalldirs) $(DESTDIR)$(HTML_DIR)/internals $(mkinstalldirs) $(DESTDIR)$(HTML_DIR)/internals
for f in $(internals_html); do \ 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 $(mkinstalldirs) $(DESTDIR)$(HTML_DIR)/kbase
for f in $(kbase_html); do \ 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 $(mkinstalldirs) $(DESTDIR)$(HTML_DIR)/fonts
for f in $(fonts); do \ for f in $(fonts); do \
$(INSTALL) -m 0644 $(srcdir)/$$f $(DESTDIR)$(HTML_DIR)/fonts; \ $(INSTALL) -m 0644 $(srcdir)/$$f $(DESTDIR)$(HTML_DIR)/fonts; \

View File

@ -2551,7 +2551,7 @@ class app:
srcdir + "/../src/util", srcdir + "/../src/util",
srcdir + "/../include/libvirt", srcdir + "/../include/libvirt",
builddir + "/../include/libvirt"] builddir + "/../include/libvirt"]
builder = docBuilder(name, srcdir, dirs, []) builder = docBuilder(name, builddir, dirs, [])
else: else:
self.warning("rebuild() failed, unable to guess the module") self.warning("rebuild() failed, unable to guess the module")
return None return None

View File

@ -5,23 +5,24 @@ use warnings;
use File::Find; 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 $srcdir = shift @ARGV;
my $builddir = shift @ARGV;
my $symslibvirt = "$srcdir/libvirt_public.syms"; my $symslibvirt = "$srcdir/src/libvirt_public.syms";
my $symsqemu = "$srcdir/libvirt_qemu.syms"; my $symsqemu = "$srcdir/src/libvirt_qemu.syms";
my $symslxc = "$srcdir/libvirt_lxc.syms"; my $symslxc = "$srcdir/src/libvirt_lxc.syms";
my @drivertable = ( my @drivertable = (
"$srcdir/driver-hypervisor.h", "$srcdir/src/driver-hypervisor.h",
"$srcdir/driver-interface.h", "$srcdir/src/driver-interface.h",
"$srcdir/driver-network.h", "$srcdir/src/driver-network.h",
"$srcdir/driver-nodedev.h", "$srcdir/src/driver-nodedev.h",
"$srcdir/driver-nwfilter.h", "$srcdir/src/driver-nwfilter.h",
"$srcdir/driver-secret.h", "$srcdir/src/driver-secret.h",
"$srcdir/driver-state.h", "$srcdir/src/driver-state.h",
"$srcdir/driver-storage.h", "$srcdir/src/driver-storage.h",
"$srcdir/driver-stream.h", "$srcdir/src/driver-stream.h",
); );
my %groupheaders = ( my %groupheaders = (
@ -38,10 +39,10 @@ my %groupheaders = (
my @srcs; my @srcs;
find({ find({
wanted => sub { 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/; 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 # Map API functions to the header and documentation files they're in
# so that we can generate proper hyperlinks to their documentation. # so that we can generate proper hyperlinks to their documentation.
@ -120,13 +121,13 @@ sub parseSymsFile {
my %apis; my %apis;
# Get the list of all public APIs and their corresponding version # 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 # 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 # 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, # Some special things which aren't public APIs,