From owner-svn-src-all@FreeBSD.ORG Sun Oct 23 19:46:01 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BC6701065670; Sun, 23 Oct 2011 19:46:01 +0000 (UTC) (envelope-from phk@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id AC2208FC15; Sun, 23 Oct 2011 19:46:01 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p9NJk1XF053868; Sun, 23 Oct 2011 19:46:01 GMT (envelope-from phk@svn.freebsd.org) Received: (from phk@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p9NJk1Lt053866; Sun, 23 Oct 2011 19:46:01 GMT (envelope-from phk@svn.freebsd.org) Message-Id: <201110231946.p9NJk1Lt053866@svn.freebsd.org> From: Poul-Henning Kamp Date: Sun, 23 Oct 2011 19:46:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r226672 - head/tools/tools/sysbuild X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 Oct 2011 19:46:01 -0000 Author: phk Date: Sun Oct 23 19:46:01 2011 New Revision: 226672 URL: http://svn.freebsd.org/changeset/base/226672 Log: Add a "-P olddistfiles" facility to prefetch ports distfiles, using an old distfile directory as primary source: mkdir /freebsd/ports/distfiles.old mv /freebsd/ports/distfiles/* /freebsd/ports/distfiles.old sh sysbuild.sh -c $yourconfig -P /freebsd/ports/distfiles.old rm -rf /freebsd/ports/distfiles.old Unfortunately bsd.ports.mk does not attempt to use a hard-link so while this runs you need diskspace for both your old and your "new" distfiles. Modified: head/tools/tools/sysbuild/sysbuild.sh Modified: head/tools/tools/sysbuild/sysbuild.sh ============================================================================== --- head/tools/tools/sysbuild/sysbuild.sh Sun Oct 23 18:37:57 2011 (r226671) +++ head/tools/tools/sysbuild/sysbuild.sh Sun Oct 23 19:46:01 2011 (r226672) @@ -113,6 +113,17 @@ final_chroot() ( ) ####################################################################### +# -P is a pretty neat way to clean junk out from your ports dist-files: +# +# mkdir /freebsd/ports/distfiles.old +# mv /freebsd/ports/distfiles/* /freebsd/ports/distfiles.old +# sh sysbuild.sh -c $yourconfig -P /freebsd/ports/distfiles.old +# rm -rf /freebsd/ports/distfiles.old +# +# Unfortunately bsd.ports.mk does not attempt to use a hard-link so +# while this runs you need diskspace for both your old and your "new" +# distfiles. +# ####################################################################### usage () { @@ -122,6 +133,7 @@ usage () { echo " -k suppress buildkernel" echo " -w suppress buildworld" echo " -p used cached packages" + echo " -P prefetch ports" echo " -c specify config file" ) 1>&2 exit 2 @@ -249,12 +261,13 @@ ports_build() ( ports_prefetch() ( ( set +x - true > /mnt/_.prefetch - echo "Building /tmp/_.plist" >> /mnt/_.prefetch + ldir=$1 + true > /${ldir}/_.prefetch + echo "Building /tmp/_.plist" >> /${ldir}/_.prefetch ports_recurse . $PORTS_WE_WANT - echo "Completed /tmp/_.plist" >> /mnt/_.prefetch + echo "Completed /tmp/_.plist" >> /${ldir}/_.prefetch # Now checksump/fetch them for p in `cat /tmp/_.plist` do @@ -262,21 +275,22 @@ ports_prefetch() ( ( cd $p if make checksum $PORTS_OPTS ; then - rm -f /mnt/_.prefetch.$b - echo "OK $p" >> /mnt/_.prefetch + rm -f /${ldir}/_.prefetch.$b + echo "OK $p" >> /${ldir}/_.prefetch exit 0 fi make distclean make checksum $PORTS_OPTS || true if make checksum $PORTS_OPTS > /dev/null 2>&1 ; then - rm -f /mnt/_.prefetch.$b - echo "OK $p" >> /mnt/_.prefetch + rm -f /${ldir}/_.prefetch.$b + echo "OK $p" >> /${ldir}/_.prefetch else - echo "BAD $p" >> /mnt/_.prefetch + echo "BAD $p" >> /${ldir}/_.prefetch fi - ) > /mnt/_.prefetch.$b 2>&1 + ) > /${ldir}/_.prefetch.$b 2>&1 done + echo "Done" >> /${ldir}/_.prefetch ) ) @@ -284,11 +298,12 @@ ports_prefetch() ( do_world=true do_kernel=true +do_prefetch=false use_pkg="" c_arg="" set +e -args=`getopt bc:hkpw $*` +args=`getopt bc:hkpP:w $*` if [ $? -ne 0 ] ; then usage fi @@ -325,6 +340,12 @@ do shift; use_pkg="-p" ;; + -P) + shift; + do_prefetch=true + distfile_cache=$1 + shift; + ;; -w) shift; do_world=false @@ -366,6 +387,15 @@ fi T0=`date +%s` echo $T0 $T0 > /tmp/_sb_log +if $do_prefetch ; then + rm -rf /tmp/sysbuild/ports + mkdir -p /tmp/sysbuild/ports + ln -s ${distfile_cache} /tmp/sysbuild/ports/distfiles + export PORTS_OPTS=CD_MOUNTPTS=/tmp/sysbuild + ports_prefetch /tmp + exit 0 +fi + log_it Unmount everything ( ( cleanup ) @@ -446,7 +476,7 @@ log_it copy ports config files (cd / ; find var/db/ports -print | cpio -dumpv /mnt > /dev/null 2>&1) log_it "Start prefetch of ports distfiles" -ports_prefetch & +ports_prefetch /mnt & if $do_world ; then ( @@ -558,13 +588,14 @@ if [ "x$SERCONS" != "xfalse" ] ; then sed -i "" -e '/^ttyv[0-8]/s/ on/ off/' /mnt/etc/ttys fi -log_it move config files +log_it move dist config files "(expect warnings)" ( cd /mnt mkdir root/configfiles_dist find ${CONFIGFILES} -print | cpio -dumpv root/configfiles_dist ) +log_it copy live config files (cd / && find ${CONFIGFILES} -print | cpio -dumpv /mnt) log_it final_root