summaryrefslogtreecommitdiffstats
path: root/Makefile.inc1
diff options
context:
space:
mode:
authornwhitehorn <nwhitehorn@FreeBSD.org>2011-03-02 14:39:26 +0000
committernwhitehorn <nwhitehorn@FreeBSD.org>2011-03-02 14:39:26 +0000
commita8c9f18299da1bf825c6a1fdbce273c58137524f (patch)
tree7614655486ed54841482c8143b6c735f775ce4b0 /Makefile.inc1
parent8eacafea122b877adb3f474b46942309a1303f68 (diff)
downloadFreeBSD-src-a8c9f18299da1bf825c6a1fdbce273c58137524f.zip
FreeBSD-src-a8c9f18299da1bf825c6a1fdbce273c58137524f.tar.gz
Improve the distributeworld target in Makefile.inc1 and update the release
infrastructure to use it. make distributeworld can now be used without preparing its environment first and installs games into its distribution using the regular make distribute logic instead of post-processing with a script. Also add two new targets, packageworld and packagekernel, that tar up the results of distributeworld and distributekernel (also new), respectively.
Diffstat (limited to 'Makefile.inc1')
-rw-r--r--Makefile.inc146
1 files changed, 46 insertions, 0 deletions
diff --git a/Makefile.inc1 b/Makefile.inc1
index e30de3e..4723d14 100644
--- a/Makefile.inc1
+++ b/Makefile.inc1
@@ -631,6 +631,13 @@ ITOOLS= [ awk cap_mkdb cat chflags chmod chown \
#
# Installs everything compiled by a 'buildworld'.
#
+
+# Non-base distributions produced by the base system
+EXTRA_DISTRIBUTIONS= doc games
+.if defined(LIB32TMP) && ${MK_LIB32} != "no"
+EXTRA_DISTRIBUTIONS+= lib32
+.endif
+
distributeworld installworld: installcheck
mkdir -p ${INSTALLTMP}
progs=$$(for prog in ${ITOOLS}; do \
@@ -653,8 +660,33 @@ distributeworld installworld: installcheck
done); \
cp $$libs $$progs ${INSTALLTMP}
cp -R $${PATH_LOCALE:-"/usr/share/locale"} ${INSTALLTMP}/locale
+.if make(distributeworld)
+.for dist in ${EXTRA_DISTRIBUTIONS}
+ -mkdir ${DESTDIR}/${DISTDIR}/${dist}
+ mtree -deU -f ${.CURDIR}/etc/mtree/BSD.root.dist \
+ -p ${DESTDIR}/${DISTDIR}/${dist} >/dev/null
+ mtree -deU -f ${.CURDIR}/etc/mtree/BSD.usr.dist \
+ -p ${DESTDIR}/${DISTDIR}/${dist}/usr >/dev/null
+ mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \
+ -p ${DESTDIR}/${DISTDIR}/${dist}/usr/include >/dev/null
+.endfor
+ -mkdir ${DESTDIR}/${DISTDIR}/base
+ ${_+_}cd ${.CURDIR}; ${IMAKE} distrib-dirs \
+ DESTDIR=${DESTDIR}/${DISTDIR}/base
+.endif
${_+_}cd ${.CURDIR}; ${IMAKE} re${.TARGET:S/world$//}; \
${IMAKEENV} rm -rf ${INSTALLTMP}
+.if make(distributeworld)
+.for dist in ${EXTRA_DISTRIBUTIONS}
+ find ${DESTDIR}/${DISTDIR}/${dist} -empty -delete
+.endfor
+.endif
+
+packageworld:
+.for dist in base ${EXTRA_DISTRIBUTIONS}
+ ${_+_}cd ${DESTDIR}/${DISTDIR}/${dist}; \
+ tar cvJf ${DESTDIR}/${DISTDIR}/${dist}.txz .
+.endfor
#
# reinstall
@@ -840,6 +872,20 @@ reinstallkernel reinstallkernel.debug: installcheck
${CROSSENV} PATH=${TMPPATH} \
${MAKE} KERNEL=${INSTKERNNAME} ${.TARGET:S/kernel//}
+distributekernel distributekernel.debug:
+.if empty(INSTALLKERNEL)
+ @echo "ERROR: No kernel \"${KERNCONF}\" to install."; \
+ false
+.endif
+ cd ${KRNLOBJDIR}/${INSTALLKERNEL}; \
+ ${CROSSENV} PATH=${TMPPATH} ${MAKE} KERNEL=${INSTKERNNAME} \
+ DESTDIR=${DESTDIR}/${DISTDIR}/kernel \
+ ${.TARGET:S/distributekernel/install/}
+
+packagekernel:
+ ${_+_}cd ${DESTDIR}/${DISTDIR}/kernel; \
+ tar cvJf ${DESTDIR}/${DISTDIR}/kernel.txz .
+
#
# doxygen
#
OpenPOWER on IntegriCloud