Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 6 Mar 2011 21:19:33 +0000 (UTC)
From:      Nathan Whitehorn <nwhitehorn@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r219349 - head/release
Message-ID:  <201103062119.p26LJXXR009921@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: nwhitehorn
Date: Sun Mar  6 21:19:33 2011
New Revision: 219349
URL: http://svn.freebsd.org/changeset/base/219349

Log:
  Make this makefile a little more make-like (e.g. build only things that
  need to be rebuilt) and add an FTP-area target. Next will be docs and
  memstick builds.

Modified:
  head/release/Makefile.bsdinstall

Modified: head/release/Makefile.bsdinstall
==============================================================================
--- head/release/Makefile.bsdinstall	Sun Mar  6 20:12:09 2011	(r219348)
+++ head/release/Makefile.bsdinstall	Sun Mar  6 21:19:33 2011	(r219349)
@@ -1,7 +1,22 @@
 # $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}/..
-DISTDIR?=	${DESTDIR}/usr/freebsd-dist
 PORTSDIR?=	/usr/ports
 
 TARGET_ARCH?=	${MACHINE_ARCH}
@@ -11,43 +26,79 @@ TARGET?=	${MACHINE}
 TARGET?=	${TARGET_ARCH}
 .endif
 IMAKE=		${MAKE} TARGET_ARCH=${TARGET_ARCH} TARGET=${TARGET}
+DISTDIR=	${.OBJDIR}/dist
 
-packagesystem:
-	-mkdir -p ${DISTDIR}
-	cd ${WORLDDIR} && ${IMAKE} distributeworld distributekernel DISTDIR=${DISTDIR}
+EXTRA_PACKAGES= 
+.if !defined(NOPORTS)
+EXTRA_PACKAGES+= ports.txz
+.endif
+.if !defined(NOSRC)
+EXTRA_PACKAGES+= src.txz
+.endif
+
+.include <bsd.obj.mk>
+
+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 packagekernel DISTDIR=${DISTDIR}
+	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
-# Package up src and ports trees
 	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
-.if !defined(NOPORTS)
-	cd ${DISTDIR} && tar cLvJf ${DISTDIR}/ports.txz --exclude usr/ports/distfiles --exclude usr/ports/packages --exclude 'usr/ports/INDEX*' usr/ports
-.endif
-.if !defined(NOSRC)
-	cd ${DISTDIR} && tar cLvJf ${DISTDIR}/src.txz --exclude .svn --exclude CVS usr/src
-.endif
+	cd ${DISTDIR} && tar cLvJf ${.OBJDIR}/ports.txz --exclude usr/ports/distfiles --exclude usr/ports/packages --exclude 'usr/ports/INDEX*' usr/ports
 
-system:
+system: packagesystem
 # Install system
-	-mkdir ${DISTDIR}/release
-	cd ${WORLDDIR} && ${IMAKE} installkernel installworld distribution DESTDIR=${DISTDIR}/release
-	-rm ${DISTDIR}/release/boot/kernel/*.symbols
+	-mkdir ${.OBJDIR}/release
+	cd ${WORLDDIR} && ${IMAKE} installkernel installworld distribution DESTDIR=${.OBJDIR}/release
+	-rm ${.OBJDIR}/release/boot/kernel/*.symbols
 # Copy distfiles
-	mkdir ${DISTDIR}/release/usr/freebsd-dist
-	cp ${DISTDIR}/*.txz ${DISTDIR}/release/usr/freebsd-dist
+	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 ${DISTDIR}/release/etc/resolv.conf
-	echo sendmail_enable=\"NONE\" > ${DISTDIR}/release/etc/rc.conf
-	echo hostid_enable=\"NO\" >> ${DISTDIR}/release/etc/rc.conf
-	touch ${DISTDIR}/release/etc/fstab
-	cp rc.local ${DISTDIR}/release/etc
-
-cdrom:
-	echo kernel_options=\"-C\" > ${DISTDIR}/release/boot/loader.conf
-	sh /usr/src/release/${TARGET}/mkisoimages.sh -b FreeBSD_Install ${DISTDIR}/release.iso ${DISTDIR}/release
-	rm ${DISTDIR}/release/boot/loader.conf
+	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
+	rm -f ${.OBJDIR}/*.txz
 
-release: packagesystem system cdrom
-	



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201103062119.p26LJXXR009921>