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 \ check-old check-old-dirs check-old-files check-old-libs \
checkdpadd clean cleandepend cleandir \ checkdpadd clean cleandepend cleandir \
delete-old delete-old-dirs delete-old-files delete-old-libs \ 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 \ everything hierarchy install installcheck installkernel \
installkernel.debug reinstallkernel reinstallkernel.debug \ installkernel.debug packagekernel packageworld \
reinstallkernel reinstallkernel.debug \
installworld kernel-toolchain libraries lint maninstall \ installworld kernel-toolchain libraries lint maninstall \
obj objlink regress rerelease showconfig tags toolchain update \ obj objlink regress rerelease showconfig tags toolchain update \
_worldtmp _legacy _bootstrap-tools _cleanobj _obj \ _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'. # 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 distributeworld installworld: installcheck
mkdir -p ${INSTALLTMP} mkdir -p ${INSTALLTMP}
progs=$$(for prog in ${ITOOLS}; do \ progs=$$(for prog in ${ITOOLS}; do \
@ -653,8 +660,33 @@ distributeworld installworld: installcheck
done); \ done); \
cp $$libs $$progs ${INSTALLTMP} cp $$libs $$progs ${INSTALLTMP}
cp -R $${PATH_LOCALE:-"/usr/share/locale"} ${INSTALLTMP}/locale 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$//}; \ ${_+_}cd ${.CURDIR}; ${IMAKE} re${.TARGET:S/world$//}; \
${IMAKEENV} rm -rf ${INSTALLTMP} ${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 # reinstall
@ -840,6 +872,20 @@ reinstallkernel reinstallkernel.debug: installcheck
${CROSSENV} PATH=${TMPPATH} \ ${CROSSENV} PATH=${TMPPATH} \
${MAKE} KERNEL=${INSTKERNNAME} ${.TARGET:S/kernel//} ${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 # doxygen
# #

View File

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

View File

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