From owner-dev-commits-doc-all@freebsd.org Mon May 31 16:26:20 2021 Return-Path: Delivered-To: dev-commits-doc-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id D095D64ABFE for ; Mon, 31 May 2021 16:26:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Fv0zJ5ByCz3wSX; Mon, 31 May 2021 16:26:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 9AAF2138D6; Mon, 31 May 2021 16:26:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 14VGQKei005090; Mon, 31 May 2021 16:26:20 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 14VGQKfc005089; Mon, 31 May 2021 16:26:20 GMT (envelope-from git) Date: Mon, 31 May 2021 16:26:20 GMT Message-Id: <202105311626.14VGQKfc005089@gitrepo.freebsd.org> To: doc-committers@FreeBSD.org, dev-commits-doc-all@FreeBSD.org From: Marc Fonvieille Subject: git: 5f4322e404 - main - documentation/Makefile: Add PDF targets. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: blackend X-Git-Repository: doc X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 5f4322e404e4ea93f640658f3aef25b7e45a4e95 Auto-Submitted: auto-generated X-BeenThere: dev-commits-doc-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the doc repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 31 May 2021 16:26:20 -0000 The branch main has been updated by blackend: URL: https://cgit.FreeBSD.org/doc/commit/?id=5f4322e404e4ea93f640658f3aef25b7e45a4e95 commit 5f4322e404e4ea93f640658f3aef25b7e45a4e95 Author: Marc Fonvieille AuthorDate: 2021-05-31 16:16:55 +0000 Commit: Marc Fonvieille CommitDate: 2021-05-31 16:16:55 +0000 documentation/Makefile: Add PDF targets. Addition of various PDF targets allowing the build of books, articles with the choice of the language. For example, to build both en_US and fr_FR books, use: make DOC_LANG="en,fr" pdf-books Documents are installed in documentation/public/lang/. Targets to clean the builds are also available. Reviewed by: ceri, gjb, dbaio Differential Revision: --- documentation/Makefile | 132 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) diff --git a/documentation/Makefile b/documentation/Makefile index 72616084fa..2257cc0061 100644 --- a/documentation/Makefile +++ b/documentation/Makefile @@ -20,13 +20,20 @@ LOCALBASE?= /usr/local PYTHON_CMD = ${LOCALBASE}/bin/python3 RUBY_CMD = ${LOCALBASE}/bin/ruby HUGO_CMD = ${LOCALBASE}/bin/hugo +ASCIIDOCTORPDF_CMD= /usr/local/bin/asciidoctor-pdf +.if defined(DOC_LANG) && !empty(DOC_LANG) +LANGUAGES = ${DOC_LANG} +.else LANGUAGES = en,es,pt-br,de,ja,zh-cn,zh-tw,ru,el,hu,it,mn,nl,pl,fr +.endif + RUBYLIB = ../shared/lib .export RUBYLIB RUN_DEPENDS= ${PYTHON_CMD} \ ${HUGO_CMD} \ ${LOCALBASE}/bin/asciidoctor \ + ${LOCALBASE}/bin/asciidoctor-pdf \ ${LOCALBASE}/bin/rougify .ifndef HOSTNAME @@ -72,3 +79,128 @@ run-local: .PHONY build: .PHONY ${HUGO_CMD} --minify + +# +# PDF targets +# Use DOC_LANG to choose the language, e.g., make DOC_LANG="en,fr" pdf-books +# +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 +.endfor +BOOKSDIR != echo ${TMP} + +pdf-articles-target: +.for _lang in ${LANGUAGES:S|,| |g} +.if exists(${.CURDIR}/content/${_lang}/articles/) +TTMP += ${.CURDIR}/content/${_lang}/articles/*/ +.endif +.endfor +ARTICLESDIR != echo ${TTMP} + +pdf-books: pdf-books-target generate-books-toc + +# Books build +# +# Notes: +# pdf-theme=default-with-fallback-font is +# used instead of pdf-theme=./themes/default-pdf-theme.yml because +# it allows ja, ru, tr, zh-* fonts to be embedded and rendering is +# better for other languages. +# +# asciidoctor-pdf-cjk and/or specific themes should be used for cjk +# fonts +.for _curpdf in ${BOOKSDIR} + @mkdir -p ${.CURDIR}/public${_curpdf:S|^${.CURDIR}/content||} +.if exists(${_curpdf}book.adoc) + ${ASCIIDOCTORPDF_CMD} \ + -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 pdf-theme=default-with-fallback-font \ + -o ${.CURDIR}/public${_curpdf:S|^${.CURDIR}/content||}book.pdf \ + ${_curpdf}book.adoc +.else +# some books use _index.adoc as main document + ${ASCIIDOCTORPDF_CMD} \ + -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 pdf-theme=default-with-fallback-font \ + -o ${.CURDIR}/public${_curpdf:S|^${.CURDIR}/content||}book.pdf \ + ${_curpdf}_index.adoc +.endif +.endfor + +pdf-articles: pdf-articles-target + +# Articles build +.for _curpdf in ${ARTICLESDIR} + @mkdir -p ${.CURDIR}/public${_curpdf:S|^${.CURDIR}/content||} + ${ASCIIDOCTORPDF_CMD} \ + -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 pdf-theme=default-with-fallback-font \ + -o ${.CURDIR}/public${_curpdf:S|^${.CURDIR}/content||}article.pdf \ + ${_curpdf}_index.adoc +.if exists(${.CURDIR}/static/source/articles/${_curpdf:H:T}) + cp -R ${.CURDIR}/static/source/articles/${_curpdf:H:T}/ \ + ${.CURDIR}/public${_curpdf:S|^${.CURDIR}/content||} +.endif +.endfor + +pdf-clean: pdf-articles-clean pdf-books-clean + +pdf-books-clean: pdf-books-target +.for _curpdf in ${BOOKSDIR} + rm -f ${.CURDIR}/public${_curpdf:S|^${.CURDIR}/content||}book.pdf ${_curpdf}toc*.adoc + rm -fr ${.CURDIR}/public${_curpdf:S|^${.CURDIR}/content||} +.endfor +.for _lang in ${LANGUAGES:S|,| |g} + rm -fr ${.CURDIR}/public/${_lang}/books +.if !exists(${.CURDIR}/public/${_lang}/articles) + 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 + +pdf-articles-clean: pdf-articles-target +.for _curpdf in ${ARTICLESDIR} + rm -f ${.CURDIR}/public${_curpdf:S|^${.CURDIR}/content||}article.pdf + rm -fr ${.CURDIR}/public${_curpdf:S|^${.CURDIR}/content||} +.endfor +.for _lang in ${LANGUAGES:S|,| |g} + 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