git: cb1d034ab1 - main - docbuild: add scripts used to build the PDF versions of the Handbook

Glen Barber <[email protected]>
Newsgroups gmane.os.freebsd.devel.cvs.doc
Message-ID <[email protected]>
The branch main has been updated by gjb:

URL: https://cgit.FreeBSD.org/doc/commit/?id=cb1d034ab1e773758d20238be196aeeb1be68b18

commit cb1d034ab1e773758d20238be196aeeb1be68b18
Author:     Glen Barber <[email protected]>
AuthorDate: 2020-12-30 16:40:07 +0000
Commit:     Glen Barber <[email protected]>
CommitDate: 2020-12-30 16:40:07 +0000

    docbuild: add scripts used to build the PDF versions of the Handbook
    
    Sponsored by:   Rubicon Communications, LLC (netgate.com)
---
 share/tools/dobuild.sh      | 117 ++++++++++++++++++++++++++++++++++++++
 share/tools/dobuild_wrap.sh | 135 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 252 insertions(+)

diff --git a/share/tools/dobuild.sh b/share/tools/dobuild.sh
new file mode 100755
index 0000000000..a2ae5c092d
--- /dev/null
+++ b/share/tools/dobuild.sh
@@ -0,0 +1,117 @@
+#!/bin/sh
+# Copyright (c) 2001 Wolfram Schneider <[email protected]>
+# Copyright (c) 2001 Dima Dorfman <[email protected]>
+# Copyright (c) 2004 Simon L. Nielsen <[email protected]>
+#
+# Build the FreeBSD docs from the CVS^WSVN repository.
+#
+#
+# Major variables:
+#
+#	PATH		- The search path as interpreted by the shell.
+#	CVSROOT		- Path to the FreeBSD CVS repository (obsolete)
+#	DOCSVN		- Url to the FreeBSD doc SVN repository.
+#	BUILDDIR	- Where the checked out copies of the files are stored.
+#	DESTDIR		- Where the rendered copies should wind up.
+#	BUILDARGS	- Arguments to pass to make(1) when {build,install}ing.
+#	INSTARGS	- Arguments to pass to make(1) when installing.
+#	WEBMAILTO	- Address to send mail to if the build fails.
+#
+#	subtrees	- List of directores in $BUILDDIR which are from SCM.
+#
+# Variables which are in uppercase are derived from the environment
+# unless they don't exist, in which case a value suitable for
+# www.FreeBSD.org is used.  Variables in lowercase can't be safely
+# changed without editing other parts of the script; thus, their value
+# in the environment is ignored.
+#
+# Exit codes:
+#
+#	0	- success
+#	1	- unknown failure
+#	2	- failure in CVS^SVN operations
+#	3	- failure in make operations
+#
+# $FreeBSD: www/tools/webupdate,v 1.10 2003/11/18 11:00:54 kuriyama Exp $
+#
+
+#
+# WARNING!  This script depend on dobuild_wrap.sh setting the
+# configuration variables in the enviroment.
+#
+if [ -z "${DOBUILDWRAP}" ]; then
+	echo "Error: This script should only be called from dobuild_wrap.sh!"
+	exit 1
+fi
+
+# Only install some compression types
+INSTALL_COMPRESSED=${COMPTYPES}; export INSTALL_COMPRESSED
+
+# Abort on all errors
+set -e
+
+umask 002
+cd $BUILDDIR || exit 1
+
+# Remove the old copies.
+if [ -z "${NOCLEAN}" ]; then
+	echo "===> Removing old stuff"
+	rm -Rf doc out 2>/dev/null || true
+	chflags -R noschg doc out 2>/dev/null || true
+	rm -Rf doc out 2>/dev/null
+
+	echo "===> Check out the new doc"
+	#cvs -qR checkout -P doc || exit 2
+	svn checkout ${DOCSVN} doc || exit 2
+fi
+
+cd $BUILDDIR/doc || exit 1
+mkdir -p $DOCDIR
+mkdir -p $DOCDIR/packages
+rm -f ${BUILDDIR}/packages # TMP
+ln -s ${DOCDIR}/packages ${BUILDDIR}/doc/packages
+
+if [ -d ${PATCHDIR} -a -n "$(find ${PATCHDIR} -name \*.patch)" ]; then
+	echo "===> Patching bugs in doc tree"
+	for p in `echo ${PATCHDIR}/*.patch`; do
+		patch < ${p}
+	done
+fi
+
+echo "===> Building doc"
+time make ${BUILDARGS} all || exit 3
+
+echo "===> Installing doc package to temp roots"
+time make ${INSTARGS} install || exit 3
+
+#echo "===> Building doc packages"
+#time make ${BUILDARGS} package || exit 3
+
+# XXX TODO, check for correct string when tex run out of resources
+#echo "===> Testing for broken tex output"
+#grep 'hash' $LOGFILE > /dev/null && \
+#    (echo "Error: Possible TeX out of resources."; false)
+
+#OKFILENAME
+
+# build a string to use with find(1) to identify
+# uncompressed files to be copied
+UNCOMP_FIND_STR=""
+for fmt in ${UNCOMPRESSED_FORMATS}; do
+  UNCOMP_FIND_STR="${UNCOMP_FIND_STR}( -name article.${fmt} -or -name book.${fmt} ) -or "
+done
+# add outer parens, remove the final "-or "
+UNCOMP_FIND_STR="( ${UNCOMP_FIND_STR%-or } )"
+
+if [ -n "${UNCOMP_FIND_STR}" ]; then
+  echo "copying uncompressed formats: ${UNCOMPRESSED_FORMATS}"
+  cd ${BUILDDIR}/doc
+  find -X ??_* ${UNCOMP_FIND_STR} -print0 \
+  | xargs -0 -I % install -v -C -o docbuild -g docbuild -m 444 % ${DOCDIR}/%
+fi
+
+rm -rf ${OUTDIR}/*
+mkdir -p ${OUTDIR}
+cp -Rp ${DOCDIR}/* ${OUTDIR}
+
+exit 0
diff --git a/share/tools/dobuild_wrap.sh b/share/tools/dobuild_wrap.sh
new file mode 100755
index 0000000000..d0bdf3e246
--- /dev/null
+++ b/share/tools/dobuild_wrap.sh
@@ -0,0 +1,135 @@
+#!/bin/sh
+#
+# Copyright (c) 2004 Simon L. Nielsen <[email protected]>
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+# Wrapper around doc build.  Simplifies main build script.
+
+#
+# Default configuration.
+#
+DEFAULT_PATH=/bin:/usr/bin:/usr/local/bin
+DEFAULT_BUILDROOT=/local0/docbuild
+DEFAULT_CVSROOT=/home/dcvs
+DEFAULT_DOCSVN="svn://svn.freebsd.org/doc/head"
+DEFAULT_BUILDARGS="NO_JPMAN=yes GEN_INDEX=yes"
+DEFAULT_INSTARGS="NO_JPMAN=yes GEN_INDEX=yes INSTALL_ONLY_COMPRESSED=yes"
+# Must keep space between addresses.
+DEFAULT_WEBMAILTO="[email protected], [email protected]"
+#DEFAULT_FORMATS="html html.tar html-split html-split.tar txt ps pdf rtf pdb"
+#DEFAULT_FORMATS="html html.tar html-split html-split.tar txt ps pdf epub"
+DEFAULT_FORMATS="html html.tar html-split html-split.tar txt pdf epub"
+DEFAULT_UNCOMPRESSED_FORMATS="pdf epub"
+DEFAULT_COMPTYPES="bz2 zip"
+
+#
+# Variable setup.
+#
+BUILDROOT=${BUILDROOT:-${DEFAULT_BUILDROOT}}; export BUILDROOT
+PATH="${PATH}:${DEFAULT_PATH}"; export PATH
+CVSROOT=${CVSROOT:-${DEFAULT_CVSROOT}}; export CVSROOT
+DOCSVN=${DOCSVN:-${DEFAULT_DOCSVN}}; export DOCSVN
+BUILDDIR=${BUILDDIR:-${BUILDROOT}/build}; export BUILDDIR
+DOCDIR=${DOCDIR:-${BUILDROOT}/build/out}; export DOCDIR
+FORMATS=${FORMATS:-${DEFAULT_FORMATS}}; export FORMATS
+UNCOMPRESSED_FORMATS=${UNCOMPRESSED_FORMATS:-${DEFAULT_UNCOMPRESSED_FORMATS}}; export UNCOMPRESSED_FORMATS
+COMPTYPES=${COMPTYPES:-${DEFAULT_COMPTYPES}}; export COMPTYPES
+BUILDARGS=${BUILDARGS:-${DEFAULT_BUILDARGS}}; export BUILDARGS
+INSTARGS=${INSTARGS:-${DEFAULT_INSTARGS}}; export INSTARGS
+WEBMAILTO=${WEBMAILTO:-${DEFAULT_WEBMAILTO}}; export WEBMAILTO
+PATCHDIR=${PATCHDIR:-${BUILDROOT}/patches}; export PATCHDIR
+OUTDIR=${OUTDIR:-${BUILDROOT}/docout}; export OUTDIR
+LOGROOT=${LOGBUILDROOT:-${BUILDROOT}/logs}; export LOGROOT
+LOGDIR=${LOGROOT}/$(date +%Y%m%d%H%M%S); export LOGDIR
+LOGFILE=${LOGDIR}/buildlog; export LOGFILE
+LOCKFILE=${LOCKFILE:-${BUILDROOT}/lock}; export LOCKFILE
+STATUSFILE=${LOGDIR}/status.xml; export STATUSFILE
+BUILDSFILE=${LOGROOT}/builds.xml; export BUILDSFILE
+
+DOBUILDWRAP="yes"; export DOBUILDWRAP
+
+# Run the actual script inside a lock so only one instance can run at
+# the time.
+lockf -t 0 ${LOCKFILE} /bin/sh << 'E*O*F'
+	if [ ! -d ${LOGDIR} ]; then
+		mkdir -p ${LOGDIR}
+	fi
+	LOGFILE_REL=${LOGFILE##${LOGROOT}/}
+	echo "<build>"						 > ${STATUSFILE}
+	echo " <buildhost>$(hostname)</buildhost>"		>> ${STATUSFILE}
+	echo " <starttime>$(date +%Y%m%d%H%M%S)</starttime>"	>> ${STATUSFILE}
+	echo " <logfile>${LOGFILE_REL}</logfile>"		>> ${STATUSFILE}
+	echo " <status>running</status>"			>> ${STATUSFILE}
+	echo "</build>"						>> ${STATUSFILE}
+
+	echo '<builds>'						 > ${BUILDSFILE}
+	find ${LOGROOT} -name status.xml | xargs cat		>> ${BUILDSFILE}
+	echo '</builds>'					>> ${BUILDSFILE}
+
+	# Do the actual build.
+	starttime=$(date +%s)
+	sh -x ${BUILDROOT}/dobuild.sh > ${LOGFILE} 2>&1
+	ret=$?
+	touch ${LOGFILE}
+	endtime=$(date +%s)
+	runtime=$((${endtime} - ${starttime}))
+
+	# Remove the status and "footer" of ${STATUSFILE}.
+	keeplines=$(($(wc -l < ${STATUSFILE}) - 2))
+	mv ${STATUSFILE} ${STATUSFILE}.tmp
+	head -n ${keeplines} ${STATUSFILE}.tmp > ${STATUSFILE}
+	rm -f ${STATUSFILE}.tmp
+
+	echo " <endtime>$(date +%Y%m%d%H%M%S)</endtime>"	>> ${STATUSFILE}
+	echo " <runtime>${runtime}</runtime>"			>> ${STATUSFILE}
+	echo " <retcode>${ret}</retcode>"			>> ${STATUSFILE}
+	if [ ${ret} -eq 0 ]; then
+		echo " <status>completed</status>"		>> ${STATUSFILE}
+	else
+		echo " <status>failed</status>"			>> ${STATUSFILE}
+	fi
+
+	if [ ${ret} -ne 0 ]; then
+		tail -100 ${LOGFILE} | \
+			mail -s "FreeBSD FTP doc build failed" ${WEBMAILTO}
+	fi
+
+	if egrep '^! TeX capacity exceeded' ${LOGFILE} > /dev/null; then
+		egrep '^! TeX capacity exceeded' ${LOGFILE} | \
+			mail -s "FreeBSD FTP doc build warning" ${WEBMAILTO}
+		echo " <warning>Possibly out of TeX resources.</warning>" \
+			>> ${STATUSFILE}
+	fi
+	echo "</build>"						>> ${STATUSFILE}
+
+	echo '<builds>'						 > ${BUILDSFILE}
+	find ${LOGROOT} -name status.xml | xargs cat		>> ${BUILDSFILE}
+	echo '</builds>'					>> ${BUILDSFILE}
+E*O*F
+
+
+exit 0
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/dev-commits-doc-all
To unsubscribe, send any mail to "[email protected]"
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.