doc/release/Makefile
Bruce A. Mah 982c4b3841 Prune down the default list of formats both to reduce space requirements
and to reduce runtime dependencies.  (Basically we get rid of PS,
because PDF is probably more widely used; html-split.tar, because
it's probably not that useful on an ISO image; and pdb, to get rid
of a dependency on iSilo).

Change volume title and publisher of ISO image to match precedent
of the real release ISOs.
2006-05-29 23:54:51 +00:00

143 lines
4.8 KiB
Makefile

# $FreeBSD$
#
# Documentation release building. These are used to create
# distributions of the documentation files only. These recipes are
# intended to mimic src/release/Makefile; the principal difference is
# that much of the complexity brought about by the chroot environment
# is unneeded.
#
HOSTNAME?= /bin/hostname
MKISOFS?= mkisofs
TAR?= /usr/bin/tar
TOUCH?= /usr/bin/touch
#
# Targets:
#
# release Create a clean build of the documentation files,
# obeying the usual specifications such as FORMATS=,
# DOC_LANG=, etc.
#
# rerelease Similar to release, except that existing documentation
# renderings are preserved and installed.
#
# Configuration variables:
#
# BUILDNAME Identification string to be placed in BUILDNAME file
# in the top directory of the release.
#
# DOCROOTDIR Top directory to use for document release building.
# This directory need not exist, and will be created
# if necessary. This variable MUST be defined.
#
# CVSROOT $CVSROOT for checking out a doc/ tree. This variable
# MUST be defined.
#
# RELEASETAG CVS tag to use for checkouts. If not defined,
# treated as a checkout at HEAD.
#
# MAKE_ISOS If defined, this will enable creation of an ISO image
# from the document release. Creation of ISO images
# requires a mkisofs binary in the invoking user's path.
#
DATE!= date +%Y%m%d
BUILDNAME?= ${DATE}
#
# Set defaults for FORMATS, DOC_LANG, and INSTALL_COMPRESSED.
#
FORMATS?= pdf html html-split txt
#DOC_LANG?= en_US.ISO8859-1
INSTALL_COMPRESSED?= zip gz
#
# Miscellaneous options for the build get set here.
#
# The Japanese translation team has a set of manual pages; we turn
# these off (at least for now) because we have not worked their
# install target into our scheme.
#
# Turn on RLE encoding and indexing.
#
# Don't make the compatability symlinks.
#
#MISCOPTIONS+= NO_JPMAN=yes RLE=yes GEN_INDEX=1 IGNORE_COMPAT_SYMLINK=YES
MISCOPTIONS+= NO_JPMAN=yes RLE=yes IGNORE_COMPAT_SYMLINK=YES
DOC_PREFIX= ${DOCROOTDIR}/doc
DOCSTAGEDIR= ${DOCROOTDIR}/R
DOCBUILDFILE= ${DOCSTAGEDIR}/build.txt
DOCKEYFILE= ${DOCSTAGEDIR}/pgpkeyring.txt
DOCFTPSTAGEDIR= ${DOCSTAGEDIR}/ftp
DOCCDROMSTAGEDIR= ${DOCSTAGEDIR}/cdrom
rerelease release: release.1 ftp.1 cdrom.1
@${ECHO} ">>> make ${.TARGET} finished on `LC_ALL=C TZ=GMT date`"
release.1:
.if !defined(DOCROOTDIR)
@${ECHO} "To make a release you must define DOCROOTDIR" && false
.endif
.if !defined(CVSROOT)
@${ECHO} "To make a release you must define CVSROOT" && false
.endif
@${ECHO} ">>> make ${.TARGET} started on `LC_ALL=C TZ=GMT date`"
# If we're doing a release (from scratch), clean out DOCROOTDIR
# (this is the equivalent of CHROOTDIR for src/release) and checkout
# a clean copy of the documentation.
.if make(release)
${RM} -rf ${DOCROOTDIR}
${MKDIR} ${DOCROOTDIR}
.if defined(RELEASETAG)
cd ${DOCROOTDIR}; \
cvs -R -d ${CVSROOT} co -r${RELEASETAG} -P doc
.else
cd ${DOCROOTDIR}; \
cvs -R -d ${CVSROOT} co -P doc
.endif
${MKDIR} ${DOCSTAGEDIR}
.endif
# Build documents.
cd ${DOC_PREFIX} && \
${MAKE} all FORMATS="${FORMATS}" INSTALL_COMPRESSED="${INSTALL_COMPRESSED}" ${MISCOPTIONS}
# Build PGP key ring
${RM} -f ${DOCKEYFILE}
cd ${DOC_PREFIX}/en_US.ISO8859-1/books/handbook && ${MAKE} pgpkeyring > ${DOCKEYFILE}
# Construct the build.txt file with the documentation build info.
${RM} -f ${DOCBUILDFILE}
${TOUCH} ${DOCBUILDFILE}
${ECHO} "FreeBSD Documentation ${BUILDNAME}" >> ${DOCBUILDFILE}
${ECHO} "Generated on: `LC_ALL=C TZ=GMT date`" >> ${DOCBUILDFILE}
${ECHO} "Generated by: ${USER}@`${HOSTNAME}`">> ${DOCBUILDFILE}
${ECHO} "Formats: ${FORMATS}" >> ${DOCBUILDFILE}
${ECHO} "Languages: ${DOC_LANG}" >> ${DOCBUILDFILE}
# Make FTP staging area
ftp.1:
${RM} -rf ${DOCFTPSTAGEDIR}
${MKDIR} ${DOCFTPSTAGEDIR}
cd ${DOC_PREFIX} && \
${MAKE} all install DOCDIR=${DOCFTPSTAGEDIR} FORMATS="${FORMATS}" INSTALL_COMPRESSED="${INSTALL_COMPRESSED}" ${MISCOPTIONS}
# Copy newly generated files to staging area
${CP} ${DOCBUILDFILE} ${DOCKEYFILE} ${DOCFTPSTAGEDIR}
# Copy any files in our texts/ directory to staging area
${TAR} --exclude CVS -cf - -C ${.CURDIR}/texts . | \
${TAR} xf - -C ${DOCFTPSTAGEDIR}
# Make CDROM staging area, optionally do ISO images too
cdrom.1:
${RM} -rf ${DOCCDROMSTAGEDIR}
${MKDIR} ${DOCCDROMSTAGEDIR}
cd ${DOC_PREFIX} && \
${MAKE} all install DOCDIR=${DOCCDROMSTAGEDIR} FORMATS="${FORMATS}" INSTALL_COMPRESSED="" ${MISCOPTIONS}
# Copy newly generated files to staging area
${CP} ${DOCBUILDFILE} ${DOCKEYFILE} ${DOCCDROMSTAGEDIR}
# Copy any files in our texts/ directory to the staging area.
${TAR} --exclude CVS -cf - -C ${.CURDIR}/texts . | \
${TAR} xf - -C ${DOCCDROMSTAGEDIR}
# Make ISO images if desired.
.if defined(MAKE_ISOS)
cd ${DOCROOTDIR} && ${MKISOFS} -r -J -V FreeBSD_Docs -publisher "The FreeBSD Project. http://www.freebsd.org/" -o ${DOCSTAGEDIR}/doc.iso ${DOCCDROMSTAGEDIR}
.endif
.include "../share/mk/doc.project.mk"