From 6f51fbe355b1710fa3d9c69d6f2d40824ae16473 Mon Sep 17 00:00:00 2001
From: Matthew Thode <mthode@mthode.org>
Date: Sat, 22 Apr 2017 19:31:18 -0500
Subject: [PATCH] Make Gentoo package updates work more often

Some package updates are more complex and require things like --backtrack=99 to
be passed to emerge.  We also try harder to ensure the system is in a consistent
state as a last step.

Change-Id: Ia5d3514e8b2a6cb2d656ade997cebb798d9c0a47
---
 .../elements/gentoo/bin/install-packages             |  2 +-
 .../elements/gentoo/finalise.d/99-cleanup            | 12 ++++++++++--
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/diskimage_builder/elements/gentoo/bin/install-packages b/diskimage_builder/elements/gentoo/bin/install-packages
index a059bc78f..04c4cff8e 100755
--- a/diskimage_builder/elements/gentoo/bin/install-packages
+++ b/diskimage_builder/elements/gentoo/bin/install-packages
@@ -98,7 +98,7 @@ while true; do
             if [[ ! -f /usr/portage/profiles ]]; then
                 emerge-webrsync -q
             fi
-            install_gentoo_packages -uDNv --with-bdeps=y --jobs=2 @world
+            install_gentoo_packages -uDNv --with-bdeps=y --backtrack=99 --jobs=2 @world
             install_gentoo_packages --verbose=n --depclean
             install_gentoo_packages -v --usepkg=n @preserved-rebuild
             etc-update --automode -5
diff --git a/diskimage_builder/elements/gentoo/finalise.d/99-cleanup b/diskimage_builder/elements/gentoo/finalise.d/99-cleanup
index 98e101dc1..4de25ec06 100755
--- a/diskimage_builder/elements/gentoo/finalise.d/99-cleanup
+++ b/diskimage_builder/elements/gentoo/finalise.d/99-cleanup
@@ -6,9 +6,17 @@ fi
 set -eu
 set -o pipefail
 
-# make sure system is in a consistant state
+# make sure system is in a consistent state
+echo 'PYTHON_TARGETS="python3_4"' >> /etc/portage/make.conf
+eselect python set python3.4
+emerge -C -q dev-lang/python:2.7 dev-vcs/git
+USE="-build" emerge -q --backtrack=99 --jobs=2 --update --newuse --deep --with-bdeps=y @world
+# rebuild packages that might need it
+USE="-build" emerge -q --jobs=2 --usepkg=n @preserved-rebuild
+# remove unneeded packages
 USE="-build" emerge --verbose=n --depclean
-USE="-build" emerge -v --usepkg=n @preserved-rebuild
+# rebuild packages that might have somehow depended on the unneeded packages
+USE="-build" emerge -q --jobs=2 --usepkg=n @preserved-rebuild
 
 # update config files
 etc-update --automode -5