Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F142298117
D30718.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
10 KB
Referenced Files
None
Subscribers
None
D30718.diff
View Options
diff --git a/documentation/Makefile b/documentation/Makefile
--- a/documentation/Makefile
+++ b/documentation/Makefile
@@ -9,6 +9,8 @@
# clean - removes generated files
# run - serves the built documentation site for local browsing
# pdf - build PDF versions of the articles and books.
+# html - build HTML versions of the articles and books for
+# offline use
#
# The run target uses hugo's built-in webserver to make the documentation site
# available for local browsing. The documentation should have been built prior
@@ -19,6 +21,8 @@
# List of languages without book translations
ARTICLEONLY_LANGS= bd da ko tr
+# List of languages without article translations
+BOOKONLY_LANGS= mn
# List of all languages we have content for
ALL_LANGUAGES= bd da de el en es fr hu it ja ko mn nl pl pt-br ru tr zh-cn zh-tw
@@ -29,11 +33,12 @@
RUBY_CMD = ${LOCALBASE}/bin/ruby
HUGO_CMD = ${LOCALBASE}/bin/hugo
HUGO_ARGS?= --verbose --minify
+ASCIIDOCTOR_CMD= ${LOCALBASE}/bin/asciidoctor
ASCIIDOCTORPDF_CMD= ${LOCALBASE}/bin/asciidoctor-pdf
-
+SED_CMD = /usr/bin/sed
.if defined(DOC_LANG) && !empty(DOC_LANG)
LANGUAGES= ${DOC_LANG:S/,/ /g}
-.if ${LANGUAGES:Men} == "" && ${.TARGETS:Mpdf*} == ""
+.if ${LANGUAGES:Men} == "" && ${.TARGETS:Mpdf*} == "" && ${.TARGETS:Mhtml*} == ""
.warning "Warning: cannot skip 'en'; adding it back"
LANGUAGES+= en
.endif
@@ -60,13 +65,19 @@
.HOST=$(HOSTNAME)
.endif
-# Strip the languages without articles from the list of languages we
+# Strip the languages with only articles from the list of languages we
# will use to build books.
BOOK_LANGS= ${LANGUAGES}
.for a in ${ARTICLEONLY_LANGS}
BOOK_LANGS:= ${BOOK_LANGS:N${a}}
.endfor
+# Strip the languages with only books from the list of languages we
+# will use to build articles.
+ARTICLE_LANGS= ${LANGUAGES}
+.for a in ${BOOKONLY_LANGS}
+ARTICLE_LANGS:= ${ARTICLE_LANGS:N${a}}
+.endfor
# Take the list of all languages, and take out the ones we have been
# asked for. We'll feed this to hugo.
@@ -105,11 +116,13 @@
@echo ---------------------------------------------------------------
generate-books-toc: .PHONY
+.if !empty(BOOK_LANGS)
${PYTHON_CMD} ./tools/books-toc-parts-creator.py -l ${BOOK_LANGS}
${PYTHON_CMD} ./tools/books-toc-creator.py -l ${BOOK_LANGS}
${PYTHON_CMD} ./tools/books-toc-figures-creator.py -l ${BOOK_LANGS}
${PYTHON_CMD} ./tools/books-toc-tables-creator.py -l ${BOOK_LANGS}
${PYTHON_CMD} ./tools/books-toc-examples-creator.py -l ${BOOK_LANGS}
+.endif
generate-pgpkeys-txt: static/pgpkeys/pgpkeys.txt
@@ -143,18 +156,14 @@
pdf: pdf-articles pdf-books
pdf-books-target:
-.for _lang in ${LANGUAGES:S|,| |g}
-.if exists(${.CURDIR}/content/${_lang}/books/)
-TMP += ${.CURDIR}/content/${_lang}/books/*/
-.endif
+.for _lang in ${BOOK_LANGS}
+TMP+= ${.CURDIR}/content/${_lang}/books/*/
.endfor
BOOKSDIR != echo ${TMP}
pdf-articles-target:
-.for _lang in ${LANGUAGES:S|,| |g}
-.if exists(${.CURDIR}/content/${_lang}/articles/)
+.for _lang in ${ARTICLE_LANGS}
TTMP += ${.CURDIR}/content/${_lang}/articles/*/
-.endif
.endfor
ARTICLESDIR != echo ${TTMP}
@@ -231,31 +240,172 @@
.for _curpdf in ${BOOKSDIR}
rm -f ${.CURDIR}/public${_curpdf:S|^${.CURDIR}/content||}book.pdf
.endfor
-.for _lang in ${LANGUAGES:S|,| |g}
+.for _lang in ${BOOK_LANGS}
rm -fr ${.CURDIR}/public/${_lang}/books
-.if !exists(${.CURDIR}/public/${_lang}/articles)
- rm -fr ${.CURDIR}/public/${_lang}
+ -rmdir ${.CURDIR}/public/${_lang}
+.endfor
+ -rmdir ${.CURDIR}/public/
+
+#
+# HTML targets
+# Use DOC_LANG to choose the language, e.g., make DOC_LANG="en fr" html-books
+#
+html: html-articles html-books
+
+html-books-target:
+.for _lang in ${BOOK_LANGS}
+TMPH += ${.CURDIR}/content/${_lang}/books/*/
+.endfor
+BOOKSDIR != echo ${TMPH}
+
+html-articles-target:
+.for _lang in ${ARTICLE_LANGS}
+TTMPH += ${.CURDIR}/content/${_lang}/articles/*/
+.endfor
+ARTICLESDIR != echo ${TTMPH}
+
+html-books: html-books-target generate-books-toc
+
+# Books build
+#
+.for _curhtml in ${BOOKSDIR}
+ @mkdir -p ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||}
+.if exists(${_curhtml}book.adoc)
+ ${ASCIIDOCTOR_CMD} \
+ -B ${.CURDIR}/ \
+ -r ./shared/lib/man-macro.rb \
+ -r ./shared/lib/man-macro.rb \
+ -r ./shared/lib/git-macro.rb \
+ -r ./shared/lib/packages-macro.rb \
+ -r ./shared/lib/inter-document-references-macro.rb \
+ -r ./shared/lib/sectnumoffset-treeprocessor.rb \
+ --doctype=book \
+ -a skip-front-matter \
+ -a linkcss -a copycss=${.CURDIR}/themes/beastie/static/css/docbook.css -a stylesheet=docbook.css -a stylesdir=../../css \
+ -a iconfont-remote! -a iconfont-name=font-awesome-min \
+ -o ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||}book.html \
+ ${_curhtml}book.adoc
+.if exists(${.CURDIR}/static/images/books/${_curhtml:H:T})
+ @mkdir -p ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||:H:H:H}/images/books/
+ cp -R ${.CURDIR}/static/images/books/${_curhtml:H:T}/ \
+ ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||:H:H:H}/images/books/${_curhtml:H:T}/
+ ${SED_CMD} -i '' -e "s|../../../../images|../../images|g" \
+ ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||}book.html
.endif
+.else
+# some books use _index.adoc as main document
+ ${ASCIIDOCTOR_CMD} \
+ -B ${.CURDIR}/ \
+ -r ./shared/lib/man-macro.rb \
+ -r ./shared/lib/man-macro.rb \
+ -r ./shared/lib/git-macro.rb \
+ -r ./shared/lib/packages-macro.rb \
+ -r ./shared/lib/inter-document-references-macro.rb \
+ -r ./shared/lib/sectnumoffset-treeprocessor.rb \
+ --doctype=book \
+ -a skip-front-matter \
+ -a linkcss -a copycss=${.CURDIR}/themes/beastie/static/css/docbook.css -a stylesheet=docbook.css -a stylesdir=../../css \
+ -a iconfont-remote! -a iconfont-name=font-awesome-min \
+ -o ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||}book.html \
+ ${_curhtml}_index.adoc
+.if exists(${.CURDIR}/static/images/books/${_curhtml:H:T})
+ @mkdir -p ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||:H:H:H}/images/books/
+ cp -R ${.CURDIR}/static/images/books/${_curhtml:H:T}/ \
+ ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||:H:H:H}/images/books/${_curhtml:H:T}/
+ ${SED_CMD} -i '' -e "s|../../../../images|../../images|g" \
+ ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||}book.html
+.endif
+.endif
+.if !exists(${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||:H:H:H}/fonts/)
+ mkdir -p ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||:H:H:H}/fonts/
+ cp -R ${.CURDIR}/themes/beastie/static/fonts/ \
+ ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||:H:H:H}/fonts/
+ cp ${.CURDIR}/themes/beastie/static/css/font-awesome-min.css \
+ ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||:H:H:H}/css/
+.endif
+.endfor
+
+html-articles: html-articles-target
+
+# Articles build
+.for _curhtml in ${ARTICLESDIR}
+ @mkdir -p ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||}
+ ${ASCIIDOCTOR_CMD} \
+ -B ${.CURDIR}/ \
+ -r ./shared/lib/man-macro.rb \
+ -r ./shared/lib/man-macro.rb \
+ -r ./shared/lib/git-macro.rb \
+ -r ./shared/lib/packages-macro.rb \
+ -r ./shared/lib/inter-document-references-macro.rb \
+ -r ./shared/lib/sectnumoffset-treeprocessor.rb \
+ --doctype=article \
+ -a skip-front-matter \
+ -a linkcss -a copycss=${.CURDIR}/themes/beastie/static/css/docbook.css -a stylesheet=docbook.css -a stylesdir=../../css \
+ -a iconfont-remote! -a iconfont-name=font-awesome-min \
+ -o ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||}article.html \
+ ${_curhtml}_index.adoc
+.if exists(${.CURDIR}/static/source/articles/${_curhtml:H:T})
+ cp -R ${.CURDIR}/static/source/articles/${_curhtml:H:T}/ \
+ ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||}
+.endif
+.if exists(${.CURDIR}/static/images/articles/${_curhtml:H:T})
+ @mkdir -p ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||:H:H:H}/images/articles/
+ cp -R ${.CURDIR}/static/images/articles/${_curhtml:H:T}/ \
+ ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||:H:H:H}/images/articles/${_curhtml:H:T}/
+ ${SED_CMD} -i '' -e "s|../../../images|../../images|g" \
+ ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||}article.html
+.endif
+.if !exists(${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||:H:H:H}/fonts/)
+ mkdir -p ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||:H:H:H}/fonts/
+ cp -R ${.CURDIR}/themes/beastie/static/fonts/ \
+ ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||:H:H:H}/fonts/
+ cp ${.CURDIR}/themes/beastie/static/css/font-awesome-min.css \
+ ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||:H:H:H}/css/
+.endif
+.endfor
+
+html-clean: html-resources-clean html-articles-clean html-books-clean
+
+html-resources-clean:
+.for _lang in ${LANGUAGES}
+ rm -fr ${.CURDIR}/public/${_lang}/css
+ rm -fr ${.CURDIR}/public/${_lang}/fonts
+ rm -fr ${.CURDIR}/public/${_lang}/images
+.endfor
+
+html-books-clean: html-books-target toc-clean
+.for _curhtml in ${BOOKSDIR}
+ rm -f ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||}book.html ${_curhtml}toc*.adoc
+ -rmdir ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||}
+.endfor
+.for _lang in ${BOOK_LANGS}
+ rm -fr ${.CURDIR}/public/${_lang}/books
+ rm -fr ${.CURDIR}/public/${_lang}/images/books
+ -rmdir ${.CURDIR}/public/${_lang}
+.endfor
+ -rmdir ${.CURDIR}/public
+
+html-articles-clean: html-articles-target
+.for _curhtml in ${ARTICLESDIR}
+ rm -f ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||}article.html
+ -rmdir ${.CURDIR}/public${_curhtml:S|^${.CURDIR}/content||}
+.endfor
+.for _lang in ${ARTICLE_LANGS}
+ rm -fr ${.CURDIR}/public/${_lang}/articles
+ rm -fr ${.CURDIR}/public/${_lang}/images/articles
+ -rmdir ${.CURDIR}/public/${_lang}
.endfor
- @if [ -d ${.CURDIR}/public/ ]; then \
- if [ -z "`ls -A ${.CURDIR}/public/`" ]; then \
- rm -fr ${.CURDIR}/public; \
- fi; \
- fi
+ -rmdir ${.CURDIR}/public
pdf-articles-clean: pdf-articles-target
.for _curpdf in ${ARTICLESDIR}
rm -f ${.CURDIR}/public${_curpdf:S|^${.CURDIR}/content||}article.pdf
.endfor
-.for _lang in ${LANGUAGES:S|,| |g}
+.for _lang in ${ARTICLE_LANGS}
rm -fr ${.CURDIR}/public/${_lang}/articles
.if !exists(${.CURDIR}/public/${_lang}/books)
rm -fr ${.CURDIR}/public/${_lang}
.endif
.endfor
- @if [ -d ${.CURDIR}/public/ ]; then \
- if [ -z "`ls -A ${.CURDIR}/public/`" ]; then \
- rm -fr ${.CURDIR}/public; \
- fi; \
- fi
+ -rmdir ${.CURDIR}/public
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Jan 19, 7:44 AM (6 h, 32 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27736343
Default Alt Text
D30718.diff (10 KB)
Attached To
Mode
D30718: Add HTML targets to doc/documentation/Makefile
Attached
Detach File
Event Timeline
Log In to Comment