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 <dir> 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
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to