From 9a525628a29ac87df257657e09d1df4259442c2a Mon Sep 17 00:00:00 2001 From: Anders Ingemann Date: Sun, 29 Dec 2013 23:02:36 +0100 Subject: [PATCH] Print some more helpful messages on apt failure --- common/tasks/apt.py | 28 +++++++++++++++++++--------- common/tasks/packages.py | 6 ++++++ 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/common/tasks/apt.py b/common/tasks/apt.py index 9e17924..72baba3 100644 --- a/common/tasks/apt.py +++ b/common/tasks/apt.py @@ -68,15 +68,25 @@ class AptUpgrade(Task): predecessors = [AptUpdate, DisableDaemonAutostart] def run(self, info): - log_check_call(['/usr/sbin/chroot', info.root, - '/usr/bin/apt-get', 'install', - '--fix-broken', - '--no-install-recommends', - '--assume-yes']) - log_check_call(['/usr/sbin/chroot', info.root, - '/usr/bin/apt-get', 'upgrade', - '--no-install-recommends', - '--assume-yes']) + from subprocess import CalledProcessError + try: + log_check_call(['/usr/sbin/chroot', info.root, + '/usr/bin/apt-get', 'install', + '--fix-broken', + '--no-install-recommends', + '--assume-yes']) + log_check_call(['/usr/sbin/chroot', info.root, + '/usr/bin/apt-get', 'upgrade', + '--no-install-recommends', + '--assume-yes']) + except CalledProcessError as e: + if e.returncode == 100: + import logging + msg = ('apt exited with status code 100. ' + 'This can sometimes occur when package retrieval times out or a package extraction failed. ' + 'apt might succeed if you try bootstrapping again.') + logging.getLogger(__name__).warn(msg) + raise e class PurgeUnusedPackages(Task): diff --git a/common/tasks/packages.py b/common/tasks/packages.py index a56d112..88d1776 100644 --- a/common/tasks/packages.py +++ b/common/tasks/packages.py @@ -44,6 +44,12 @@ class InstallRemotePackages(Task): 'this may be because\nthe image volume is ' 'running out of disk space ({free}MB left)').format(free=free_mb) logging.getLogger(__name__).warn(msg) + else: + if e.returncode == 100: + msg = ('apt exited with status code 100. ' + 'This can sometimes occur when package retrieval times out or a package extraction failed. ' + 'apt might succeed if you try bootstrapping again.') + logging.getLogger(__name__).warn(msg) raise e