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.
This commit is contained in:
Nathan Whitehorn 2011-03-02 14:39:26 +00:00
parent 7b9758e308
commit 99ad39c822
6 changed files with 54 additions and 52 deletions

View File

@ -89,9 +89,11 @@ TGTS= all all-man buildenv buildenvvars buildkernel buildworld \
check-old check-old-dirs check-old-files check-old-libs \
checkdpadd clean cleandepend cleandir \
delete-old delete-old-dirs delete-old-files delete-old-libs \
depend distribute distributeworld distrib-dirs distribution doxygen \
depend distribute distributekernel distributekernel.debug \
distributeworld distrib-dirs distribution doxygen \
everything hierarchy install installcheck installkernel \
installkernel.debug reinstallkernel reinstallkernel.debug \
installkernel.debug packagekernel packageworld \
reinstallkernel reinstallkernel.debug \
installworld kernel-toolchain libraries lint maninstall \
obj objlink regress rerelease showconfig tags toolchain update \
_worldtmp _legacy _bootstrap-tools _cleanobj _obj \

View File

@ -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
#

View File

@ -4,3 +4,4 @@
BINDIR?= /usr/games
FILESDIR?= ${SHAREDIR}/games
WARNS?= 6
DISTRIBUTION?= games

View File

@ -194,8 +194,8 @@ DIST_DOCS_ARCH_DEP=
# Things which without too much trouble can be considered variables
# BASE_DISTS are special in that they get full /etc installation sets.
#
OTHER_DISTS?= catpages manpages games proflibs dict info doc ${ARCH_DISTS}
BASE_DISTS?= base
OTHER_DISTS?= catpages manpages proflibs dict info
BASE_DISTS?= base doc games ${ARCH_DISTS}
.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "powerpc64"
ARCH_DISTS?= lib32
.endif
@ -647,9 +647,7 @@ release.1:
mtree -deU -f ${MTREEFILES}/BSD.usr.dist \
-p ${RD}/trees/$$i/usr > /dev/null && \
mtree -deU -f ${MTREEFILES}/BSD.include.dist \
-p ${RD}/trees/$$i/usr/include > /dev/null && \
mtree -deU -f ${MTREEFILES}/BSD.var.dist \
-p ${RD}/trees/$$i/var > /dev/null ; \
-p ${RD}/trees/$$i/usr/include > /dev/null; \
done
mkdir ${RD}/kernels
for i in ${KERNELS_BASE} ${KERNELS}; do \

View File

@ -1,37 +0,0 @@
#!/bin/sh
#
# $FreeBSD$
#
# Move all the games out to their own dist
if [ -d ${RD}/trees/base/usr/games ]; then
tar -cf - -C ${RD}/trees/base/usr/games . |
tar -xpf - -C ${RD}/trees/games/usr/games &&
rm -rf ${RD}/trees/base/usr/games;
fi
if [ -d ${RD}/trees/base/usr/share/games ]; then
tar -cf - -C ${RD}/trees/base/usr/share/games . |
tar -xpf - -C ${RD}/trees/games/usr/share/games &&
rm -rf ${RD}/trees/base/usr/share/games;
fi
if [ -d ${RD}/trees/base/var/games ]; then
tar -cf - -C ${RD}/trees/base/var/games . |
tar -xpf - -C ${RD}/trees/games/var/games &&
rm -rf ${RD}/trees/base/var/games;
fi
if [ -d ${RD}/trees/manpages/usr/share/man/man6 ]; then
mkdir -p ${RD}/trees/games/usr/share/man/man6
tar -cf - -C ${RD}/trees/manpages/usr/share/man/man6 . |
tar -xpf - -C ${RD}/trees/games/usr/share/man/man6 &&
rm -rf ${RD}/trees/manpages/usr/share/man/man6
fi
if [ -d ${RD}/trees/catpages/usr/share/man/cat6 ]; then
mkdir -p ${RD}/trees/games/usr/share/man/cat6
tar -cf - -C ${RD}/trees/catpages/usr/share/man/cat6 . |
tar -xpf - -C ${RD}/trees/games/usr/share/man/cat6 &&
rm -rf ${RD}/trees/catpages/usr/share/man/cat6
fi

View File

@ -1,8 +0,0 @@
#!/bin/sh
#
# $FreeBSD$
#
# Clean the dust.
cd ${RD}/trees/lib32 && \
find . '(' -path '*/usr/share/*' -or -path '*/usr/lib/*' ')' -delete