# $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. # # MAKE_RELNOTES If defined, enables generation of release documentation. # # RELNOTESTAG CVS tag to use for checkouts of the release documentation. # If not defined, treated as a checkout from HEAD. # .if !defined(DOCROOTDIR) .error "You must define DOCROOTDIR!" .endif .if !defined(CVSROOT) .error "You must define CVSROOT!" .endif 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 RELNOTES_PREFIX=${DOCROOTDIR}/src/release/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 .if defined(MAKE_RELNOTES) .if defined(RELNOTESTAG) cd ${DOCROOTDIR}; \ cvs -R -d ${CVSROOT} co -r${RELNOTESTAG} -P src/release/doc; \ cvs -R -d ${CVSROOT} co -r${RELNOTESTAG} -P src/share/man/man4 .else cd ${DOCROOTDIR}; \ cvs -R -d ${CVSROOT} co -P src/release/doc; \ cvs -R -d ${CVSROOT} co -P src/share/man/man4 .endif .endif ${MKDIR} ${DOCSTAGEDIR} .endif # Build documents. cd ${DOC_PREFIX} && \ ${MAKE} FORMATS="${FORMATS}" INSTALL_COMPRESSED="${INSTALL_COMPRESSED}" ${MISCOPTIONS} all .if defined(MAKE_RELNOTES) cd ${RELNOTES_PREFIX} && \ ${MAKE} FORMATS="${FORMATS}" INSTALL_COMPRESSED="${INSTALL_COMPRESSED}" ${MISCOPTIONS} all .endif # 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} ${ECHO} "Tag: ${RELEASETAG}" >> ${DOCBUILDFILE} .if defined(MAKE_RELNOTES) ${ECHO} "Release Documentation Tag: ${RELNOTESTAG}" >> ${DOCBUILDFILE} .endif # Make FTP staging area ftp.1: ${RM} -rf ${DOCFTPSTAGEDIR} ${MKDIR} ${DOCFTPSTAGEDIR} ${MKDIR} -p ${DOCFTPSTAGEDIR}/doc cd ${DOC_PREFIX} && \ ${MAKE} install DOCDIR=${DOCFTPSTAGEDIR}/doc FORMATS="${FORMATS}" INSTALL_COMPRESSED="${INSTALL_COMPRESSED}" ${MISCOPTIONS} .if defined(MAKE_RELNOTES) ${MKDIR} -p ${DOCFTPSTAGEDIR}/src/release/doc cd ${RELNOTES_PREFIX} && \ ${MAKE} install DOCDIR=${DOCFTPSTAGEDIR}/src/release/doc FORMATS="${FORMATS}" INSTALL_COMPRESSED="${INSTALL_COMPRESSED}" ${MISCOPTIONS} .endif # 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} ${MKDIR} -p ${DOCCDROMSTAGEDIR}/doc cd ${DOC_PREFIX} && \ ${MAKE} install DOCDIR=${DOCCDROMSTAGEDIR}/doc FORMATS="${FORMATS}" INSTALL_COMPRESSED="" ${MISCOPTIONS} .if defined(MAKE_RELNOTES) ${MKDIR} -p ${DOCCDROMSTAGEDIR}/src/release/doc cd ${RELNOTES_PREFIX} && \ ${MAKE} install DOCDIR=${DOCCDROMSTAGEDIR}/src/release/doc FORMATS="${FORMATS}" INSTALL_COMPRESSED="" ${MISCOPTIONS} .endif # 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.common.mk" .include "../share/mk/doc.project.mk"