-
Notifications
You must be signed in to change notification settings - Fork 7
/
Makefile
246 lines (200 loc) · 9.03 KB
/
Makefile
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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
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 -z "$${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