pve-docs/Makefile
Thomas Lamprecht 9c2d4f5308 switch opt-out NOVIEW to opt-in PVE_DOC_INSTANTVIEW
As we had to set NOVIEW _everywhere_, which is a good sign that
opt-in is much better suited than opt out.

Especially as one can point the browser or man to the resulting build
documentation html file or manpage once and then hit just reload after
a re-build, which is almost zero effort.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2019-09-24 17:24:56 +02:00

247 lines
9.0 KiB
Makefile

include /usr/share/dpkg/pkg-info.mk
# overwriting below ensures that we can build without full PVE installed
DGDIR=.
ASCIIDOC_PVE=./asciidoc-pve
GEN_PACKAGE=pve-doc-generator
DOC_PACKAGE=pve-docs
MEDIAWIKI_PACKAGE=pve-docs-mediawiki
GITVERSION:=$(shell git rev-parse HEAD)
ARCH:=$(shell dpkg-architecture -qDEB_BUILD_ARCH)
GEN_DEB=${GEN_PACKAGE}_${DEB_VERSION_UPSTREAM_REVISION}_${ARCH}.deb
DOC_DEB=${DOC_PACKAGE}_${DEB_VERSION_UPSTREAM_REVISION}_all.deb
MEDIAWIKI_DEB=${MEDIAWIKI_PACKAGE}_${DEB_VERSION_UPSTREAM_REVISION}_all.deb
export SOURCE_DATE_EPOCH ?= $(shell dpkg-parsechangelog -STimestamp)
SOURCE_DATE_HUMAN := $(shell date -d "@${SOURCE_DATE_EPOCH}")
all: index.html
.PHONY: verify-images
verify-images:
for i in ./images/screenshot/*.png; do ./png-verify.pl $$i; done
ADOC_SOURCES_GUESS=$(filter-out %-synopsis.adoc %-opts.adoc %-table.adoc, $(wildcard *.adoc))
.pve-doc-depends link-refs.json: ${ADOC_SOURCES_GUESS} scan-adoc-refs
./scan-adoc-refs *.adoc --depends .pve-doc-depends.tmp > link-refs.json.tmp
@cmp --quiet .pve-doc-depends .pve-doc-depends.tmp || mv .pve-doc-depends.tmp .pve-doc-depends
@cmp --quiet link-refs.json link-refs.json.tmp || mv link-refs.json.tmp link-refs.json
pve-doc-generator.mk: .pve-doc-depends pve-doc-generator.mk.in
cat pve-doc-generator.mk.in .pve-doc-depends > $@.tmp
sed -i "s/@RELEASE@$$/${DEB_VERSION_UPSTREAM}/" $@.tmp
mv $@.tmp $@
-include ./pve-doc-generator.mk
GEN_DEB_SOURCES= \
pve-doc-generator.mk \
${MANUAL_SOURCES} \
pmxcfs.8-synopsis.adoc \
qmeventd.8-synopsis.adoc \
docinfo.xml
GEN_SCRIPTS= \
gen-ha-groups-opts.pl \
gen-ha-resources-opts.pl \
gen-datacenter.cfg.5-opts.pl \
gen-pct.conf.5-opts.pl \
gen-pct-network-opts.pl \
gen-pct-mountpoint-opts.pl \
gen-qm.conf.5-opts.pl \
gen-qm-cloud-init-opts.pl \
gen-vzdump.conf.5-opts.pl \
gen-pve-firewall-cluster-opts.pl \
gen-pve-firewall-host-opts.pl \
gen-pve-firewall-macros-adoc.pl \
gen-pve-firewall-rules-opts.pl \
gen-pve-firewall-vm-opts.pl \
gen-output-format-opts.pl
API_VIEWER_SOURCES= \
api-viewer/index.html \
api-viewer/apidoc.js
asciidoc-pve: asciidoc-pve.in link-refs.json
cat asciidoc-pve.in link-refs.json >asciidoc-pve.tmp
sed -e s/@RELEASE@/${DOCRELEASE}/ -i asciidoc-pve.tmp
chmod +x asciidoc-pve.tmp
mv asciidoc-pve.tmp asciidoc-pve
pve-docs-mediawiki-import: pve-docs-mediawiki-import.in link-refs.json
cat pve-docs-mediawiki-import.in link-refs.json > pve-docs-mediawiki-import.tmp
chmod +x pve-docs-mediawiki-import.tmp
mv pve-docs-mediawiki-import.tmp pve-docs-mediawiki-import
INDEX_INCLUDES= \
pve-admin-guide.pdf \
pve-admin-guide.epub \
chapter-index-table.adoc \
man1-index-table.adoc \
man5-index-table.adoc \
man8-index-table.adoc \
$(sort $(addsuffix .html, ${MANUAL_PAGES}) ${CHAPTER_LIST})
ADOC_STDARG=-b $(shell pwd)/asciidoc/pve-html -f asciidoc/asciidoc-pve.conf -a icons -a data-uri -a "date=${SOURCE_DATE_HUMAN}" -a "revnumber=${DOCRELEASE}" -a footer-style=revdate
BROWSER?=xdg-open
README.html: README.adoc
asciidoc -a toc ${ADOC_STDARG} -o $@ $<
.PHONY: index
index: index.html
test -n "$${PVE_DOC_INSTANTVIEW}" && $(BROWSER) index.html &
chapter-index-table.adoc: asciidoc-pve
./asciidoc-pve chapter-table >$@.tmp
mv $@.tmp $@
man1-index-table.adoc: asciidoc-pve
./asciidoc-pve man1page-table >$@.tmp
mv $@.tmp $@
man5-index-table.adoc: asciidoc-pve
./asciidoc-pve man5page-table >$@.tmp
mv $@.tmp $@
man8-index-table.adoc: asciidoc-pve
./asciidoc-pve man8page-table >$@.tmp
mv $@.tmp $@
index.html: index.adoc ${API_VIEWER_SOURCES} ${INDEX_INCLUDES}
asciidoc ${ADOC_STDARG} -o $@ index.adoc
pve-admin-guide.html: ${PVE_ADMIN_GUIDE_ADOCDEPENDS}
asciidoc -a pvelogo ${ADOC_STDARG} -o $@ pve-admin-guide.adoc
pve-admin-guide.chunked: ${PVE_ADMIN_GUIDE_ADOCDEPENDS}
rm -rf $@.tmp $@
mkdir $@.tmp
a2x -D $@.tmp -a docinfo -a docinfo1 -a icons -f chunked pve-admin-guide.adoc
mv $@.tmp/$@ $@
PVE_DOCBOOK_CONF=-b $(shell pwd)/asciidoc/pve-docbook -f asciidoc/asciidoc-pve.conf
PVE_DBLATEX_OPTS='-p ./asciidoc/pve-dblatex.xsl -s asciidoc/dblatex-custom.sty -c asciidoc/dblatex-export.conf'
YEAR:=$(shell date '+%Y')
pve-admin-guide-docinfo.xml: pve-admin-guide-docinfo.xml.in
sed -e 's/@RELEASE@/${DOCRELEASE}/' -e 's/@YEAR@/${YEAR}/' <$< >$@
pve-admin-guide.pdf: ${PVE_ADMIN_GUIDE_ADOCDEPENDS} docinfo.xml pve-admin-guide-docinfo.xml
rsvg-convert -f pdf -o proxmox-logo.pdf images/proxmox-logo.svg
rsvg-convert -f pdf -o proxmox-ci-header.pdf images/proxmox-ci-header.svg
grep ">Release ${DOCRELEASE}<" pve-admin-guide-docinfo.xml || (echo "wrong release in pve-admin-guide-docinfo.xml" && false);
a2x -a docinfo -a docinfo1 -f pdf -L --asciidoc-opts="${PVE_DOCBOOK_CONF}" --dblatex-opts ${PVE_DBLATEX_OPTS} pve-admin-guide.adoc
rm proxmox-logo.pdf proxmox-ci-header.pdf
pve-admin-guide.epub: ${PVE_ADMIN_GUIDE_ADOCDEPENDS}
rm -rf $@.tmp $@
mkdir $@.tmp
a2x -D $@.tmp -f epub --asciidoc-opts="${PVE_DOCBOOK_CONF}" pve-admin-guide.adoc
mv $@.tmp/$@ $@
api-viewer/apidata.js: extractapi.pl
./extractapi.pl >$@
api-viewer/apidoc.js: api-viewer/apidata.js api-viewer/PVEAPI.js
cat api-viewer/apidata.js api-viewer/PVEAPI.js >$@
.PHONY: dinstall
dinstall: ${GEN_DEB} ${DOC_DEB} ${MEDIAWIKI_DEB}
dpkg -i ${GEN_DEB} ${DOC_DEB} # ${MEDIAWIKI_DEB}
.PHONY: deb
deb: $(DOC_DEB)
$(MEDIAWIKI_DEB) $(GEN_DEB): $(DOC_DEB)
$(DOC_DEB):
rm -f ${GEN_DEB} ${DOC_DEB} ${MEDIAWIKI_DEB}
rm -rf build
rsync -a * build/
echo "git clone git://git.proxmox.com/git/pve-docs.git\\ngit checkout ${GITVERSION}" > build/debian/SOURCE
cd build; dpkg-buildpackage -b -us -uc
lintian $(DOC_DEB) $(GEN_DEB) $(MEDIAWIKI_DEB)
.PHONY: clean-build
clean-build:
rm -rf build
.PHONY: install
install: gen-install doc-install mediawiki-install
.PHONY: gen-install
gen-install: $(GEN_DEB_SOURCES) asciidoc-pve asciidoc/mediawiki.conf
install -dm755 $(DESTDIR)/usr/share/$(GEN_PACKAGE)
install -dm755 $(DESTDIR)/usr/share/doc/$(GEN_PACKAGE)
install -dm755 $(DESTDIR)/usr/bin
# install files
install -m 0644 ${GEN_DEB_SOURCES} $(DESTDIR)/usr/share/${GEN_PACKAGE}
install -m 0755 ${GEN_SCRIPTS} $(DESTDIR)/usr/share/${GEN_PACKAGE}
# install asciidoc-pve
install -m 0755 asciidoc-pve $(DESTDIR)/usr/bin/
install -D -m 0644 asciidoc/mediawiki.conf $(DESTDIR)/usr/share/${GEN_PACKAGE}/asciidoc/mediawiki.conf
install -m 0644 asciidoc/asciidoc-pve.conf $(DESTDIR)/usr/share/${GEN_PACKAGE}/asciidoc/
install -m 0644 asciidoc/pve-html.conf $(DESTDIR)/usr/share/${GEN_PACKAGE}/asciidoc/
.PHONY: doc-install
doc-install: index.html $(WIKI_IMPORTS) $(API_VIEWER_SOURCES) verify-images examples
install -dm755 $(DESTDIR)/usr/share/$(DOC_PACKAGE)
install -dm755 $(DESTDIR)/usr/share/doc/$(DOC_PACKAGE)
# install files for pvedocs package
install -dm755 $(DESTDIR)/usr/share/${DOC_PACKAGE}
install -dm755 $(DESTDIR)/usr/share/doc/${DOC_PACKAGE}
install -dm755 $(DESTDIR)/usr/share/${DOC_PACKAGE}/examples/
install -m 755 examples/guest-example-hookscript.pl $(DESTDIR)/usr/share/${DOC_PACKAGE}/examples/
install -m 0644 index.html ${INDEX_INCLUDES} $(DESTDIR)/usr/share/${DOC_PACKAGE}
install -m 0644 ${WIKI_IMPORTS} $(DESTDIR)/usr/share/${DOC_PACKAGE}
# install images
make -C images install
# install screenshot images
install -dm755 $(DESTDIR)/usr/share/${DOC_PACKAGE}/images/screenshot
install -m 0644 images/screenshot/*.png $(DESTDIR)/usr/share/${DOC_PACKAGE}/images/screenshot
# install api doc viewer
install -dm755 $(DESTDIR)/usr/share/${DOC_PACKAGE}/api-viewer
install -m 0644 ${API_VIEWER_SOURCES} $(DESTDIR)/usr/share/${DOC_PACKAGE}/api-viewer
.PHONY: mediawiki-install
mediawiki-install: pve-docs-mediawiki-import
install -dm755 $(DESTDIR)/usr/share/$(MEDIAWIKI_PACKAGE)
install -dm755 $(DESTDIR)/usr/share/doc/$(MEDIAWIKI_PACKAGE)
install -dm755 $(DESTDIR)/usr/bin
install -dm755 $(DESTDIR)/usr/share/$(MEDIAWIKI_PACKAGE)
install -dm755 $(DESTDIR)/usr/share/doc/$(MEDIAWIKI_PACKAGE)
install -m 0755 pve-docs-mediawiki-import $(DESTDIR)/usr/bin/
.PHONY: upload
upload: ${GEN_DEB} ${DOC_DEB} ${MEDIAWIKI_DEB}
tar cf - ${GEN_DEB} ${DOC_DEB} ${MEDIAWIKI_DEB} | ssh -X repoman@repo.proxmox.com -- upload --product pve --dist buster
.PHONY: update
update:
make clean clean-static
make update-static
make all
.PHONY: update-static
update-static:
make clean-static
make $(filter %-synopsis.adoc %-opts.adoc, ${PVE_ADMIN_GUIDE_ADOCDEPENDS}) pve-firewall-macros.adoc api-viewer/apidata.js
.PHONY: clean-static
clean-static:
find . -regex '.*-\(opts\|synopsis\)\.adoc' -not -name pmxcfs.8-synopsis.adoc -not -name qmeventd.8-synopsis.adoc -exec rm -f \{\} \;
rm -f api-viewer/apidata.js
rm -f pve-firewall-macros.adoc pct-network-opts.adoc pct-mountpoint-opts.adoc
clean:
rm -rf *.html *.pdf *.epub *.tmp *.1 *.5 *.8
rm -f *.deb *.changes *.buildinfo
rm -f api-viewer/apidoc.js chapter-*.html *-plain.html chapter-*.html pve-admin-guide.chunked asciidoc-pve link-refs.json .asciidoc-pve-tmp_* pve-docs-mediawiki-import
rm -rf .pve-doc-depends
rm -f pve-doc-generator.mk chapter-index-table.adoc man1-index-table.adoc man5-index-table.adoc man8-index-table.adoc pve-admin-guide-docinfo.xml
rm -rf build