# $FreeBSD$ # # Makefile for building releases and release media. # # User-driven targets: # cdrom: Builds release CD-ROM media (release.iso) # ftp: Sets up FTP distribution area (ftp) # release: Build all media and FTP distribution area # # Variables affecting the build process: # WORLDDIR: location of src tree -- must have built world and default kernel # (by default, the directory above this one) # PORTSDIR: location of ports tree to distribute (default: /usr/ports) # NOPORTS: if set, do not distribute ports tree # NOSRC: if set, do not distribute source tree # TARGET/TARGET_ARCH: architecture of built release # WORLDDIR?= ${.CURDIR}/.. PORTSDIR?= /usr/ports TARGET_ARCH?= ${MACHINE_ARCH} .if ${TARGET_ARCH} == ${MACHINE_ARCH} TARGET?= ${MACHINE} .else TARGET?= ${TARGET_ARCH} .endif IMAKE= ${MAKE} TARGET_ARCH=${TARGET_ARCH} TARGET=${TARGET} DISTDIR= ${.OBJDIR}/dist EXTRA_PACKAGES= .if !defined(NOPORTS) EXTRA_PACKAGES+= ports.txz .endif .if !defined(NOSRC) EXTRA_PACKAGES+= src.txz .endif .include base.txz: -mkdir ${DISTDIR} cd ${WORLDDIR} && ${IMAKE} distributeworld DISTDIR=${DISTDIR} # Set up mergemaster root database sh ${.CURDIR}/scripts/mm-mtree.sh -F "TARGET_ARCH=${TARGET_ARCH} TARGET=${TARGET}" -D "${DISTDIR}/base" cd ${WORLDDIR} && ${IMAKE} packageworld DISTDIR=${DISTDIR} mv ${DISTDIR}/*.txz ${.OBJDIR} kernel.txz: -mkdir ${DISTDIR} cd ${WORLDDIR} && ${IMAKE} distributekernel packagekernel DISTDIR=${DISTDIR} mv ${DISTDIR}/kernel.txz ${.OBJDIR} src.txz: -mkdir -p ${DISTDIR}/usr ln -fs ${WORLDDIR} ${DISTDIR}/usr/src cd ${DISTDIR} && tar cLvJf ${.OBJDIR}/src.txz --exclude .svn --exclude CVS usr/src ports.txz: -mkdir -p ${DISTDIR}/usr ln -fs ${PORTSDIR} ${DISTDIR}/usr/ports cd ${DISTDIR} && tar cLvJf ${.OBJDIR}/ports.txz --exclude usr/ports/distfiles --exclude usr/ports/packages --exclude 'usr/ports/INDEX*' --exclude work usr/ports system: packagesystem # Install system -mkdir ${.OBJDIR}/release cd ${WORLDDIR} && ${IMAKE} installkernel installworld distribution DESTDIR=${.OBJDIR}/release -rm ${.OBJDIR}/release/boot/kernel/*.symbols # Copy distfiles mkdir ${.OBJDIR}/release/usr/freebsd-dist cp ${.OBJDIR}/*.txz ${.OBJDIR}/release/usr/freebsd-dist # Set up installation environment ln -s /tmp/bsdinstall_etc/resolv.conf ${.OBJDIR}/release/etc/resolv.conf echo sendmail_enable=\"NONE\" > ${.OBJDIR}/release/etc/rc.conf echo hostid_enable=\"NO\" >> ${.OBJDIR}/release/etc/rc.conf touch ${.OBJDIR}/release/etc/fstab cp ${.CURDIR}/rc.local ${.OBJDIR}/release/etc touch ${.OBJDIR}/${.TARGET} release.iso: system echo kernel_options=\"-C\" > ${.OBJDIR}/release/boot/loader.conf sh /usr/src/release/${TARGET}/mkisoimages.sh -b FreeBSD_Install ${.OBJDIR}/release.iso ${.OBJDIR}/release rm ${.OBJDIR}/release/boot/loader.conf packagesystem: base.txz kernel.txz ${EXTRA_PACKAGES} touch ${.OBJDIR}/${.TARGET} cdrom: release.iso ftp: packagesystem mkdir ${.OBJDIR}/ftp cp ${.OBJDIR}/*.txz ${.OBJDIR}/ftp release: cdrom ftp clean: chflags -R noschg ${.OBJDIR} rm -rf ${.OBJDIR}/dist ${.OBJDIR}/ftp rm -f packagesystem rm -f ${.OBJDIR}/*.txz rm -f system rm -rf ${.OBJDIR}/release rm -f ${.OBJDIR}/release.iso