Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 27 Dec 2018 23:27:48 +0000 (UTC)
From:      Will Andrews <will@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r342560 - head/tools/build
Message-ID:  <201812272327.wBRNRmLd013519@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: will
Date: Thu Dec 27 23:27:48 2018
New Revision: 342560
URL: https://svnweb.freebsd.org/changeset/base/342560

Log:
  beinstall: try to save progress from pkg updates.
  
  This is primarily aimed at failed updates due to package conflicts, and
  affects treatment of failed updates.  Whereas before potentially a large
  number of packages would need to be synced for each attempt, they can now
  be persisted.  Requires rsync.  There may be better ways to implement this,
  e.g. using secondary cache path that is only used on followup attempts and
  then wiped on success, which avoids polluting current cache.

Modified:
  head/tools/build/beinstall.sh

Modified: head/tools/build/beinstall.sh
==============================================================================
--- head/tools/build/beinstall.sh	Thu Dec 27 22:44:07 2018	(r342559)
+++ head/tools/build/beinstall.sh	Thu Dec 27 23:27:48 2018	(r342560)
@@ -82,6 +82,14 @@ unmount_be() {
 	mount | grep " on ${BE_MNTPT}" | awk '{print $3}' | sort -r | xargs -t umount -f
 }
 
+copy_pkgs() {
+	# Before cleaning up, try to save progress in pkg(8) updates, to
+	# speed up future updates.  This is only called on the error path;
+	# no need to run on success.
+	echo "Rsyncing back newly saved packages..."
+	rsync -av --progress ${BE_MNTPT}/var/cache/pkg/. /var/cache/pkg/.
+}
+
 cleanup_be() {
 	# Before destroying, unmount any child filesystems that may have
 	# been mounted under the boot environment.  Sort them in reverse
@@ -223,6 +231,10 @@ chroot ${BE_MNTPT} make "$@" -C ${srcdir} installworld
 if [ -n "${CONFIG_UPDATER}" ]; then
 	"update_${CONFIG_UPDATER}"
 	[ $? -ne 0 ] && errx "${CONFIG_UPDATER} (post-world) failed!"
+fi
+
+if which rsync >/dev/null 2>&1; then
+	cleanup_commands="copy_pkgs ${cleanup_commands}"
 fi
 
 BE_PKG="chroot ${BE_MNTPT} env ASSUME_ALWAYS_YES=true pkg"



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201812272327.wBRNRmLd013519>