support calling apt with eatmydata, enable by default if available.
This allows a general config option to prefix apt-get commands via 'apt_get_wrapper'. By default, the command is set to 'eatmydata', and the mode set to 'auto'. That means if eatmydata is available (via which), it will use it. The 'command' can be either a array or a string.
This commit is contained in:
parent
4f6b054241
commit
8568816e61
@ -3,6 +3,8 @@
|
|||||||
- Add a debug log message around import failures
|
- Add a debug log message around import failures
|
||||||
- add a 'debug' module for easily printing out some information about
|
- add a 'debug' module for easily printing out some information about
|
||||||
datasource and cloud-init [Shraddha Pandhe]
|
datasource and cloud-init [Shraddha Pandhe]
|
||||||
|
- support running apt with 'eatmydata' via configuration token
|
||||||
|
apt_get_wrapper (LP: #1236531).
|
||||||
0.7.4:
|
0.7.4:
|
||||||
- fix issue mounting 'ephemeral0' if ephemeral0 was an alias for a
|
- fix issue mounting 'ephemeral0' if ephemeral0 was an alias for a
|
||||||
partitioned block device with target filesystem on ephemeral0.1.
|
partitioned block device with target filesystem on ephemeral0.1.
|
||||||
|
@ -36,6 +36,10 @@ LOG = logging.getLogger(__name__)
|
|||||||
APT_GET_COMMAND = ('apt-get', '--option=Dpkg::Options::=--force-confold',
|
APT_GET_COMMAND = ('apt-get', '--option=Dpkg::Options::=--force-confold',
|
||||||
'--option=Dpkg::options::=--force-unsafe-io',
|
'--option=Dpkg::options::=--force-unsafe-io',
|
||||||
'--assume-yes', '--quiet')
|
'--assume-yes', '--quiet')
|
||||||
|
APT_GET_WRAPPER = {
|
||||||
|
'command': 'eatmydata',
|
||||||
|
'enabled': 'auto',
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class Distro(distros.Distro):
|
class Distro(distros.Distro):
|
||||||
@ -148,7 +152,13 @@ class Distro(distros.Distro):
|
|||||||
# See: http://tiny.cc/kg91fw
|
# See: http://tiny.cc/kg91fw
|
||||||
# Or: http://tiny.cc/mh91fw
|
# Or: http://tiny.cc/mh91fw
|
||||||
e['DEBIAN_FRONTEND'] = 'noninteractive'
|
e['DEBIAN_FRONTEND'] = 'noninteractive'
|
||||||
cmd = list(self.get_option("apt_get_command", APT_GET_COMMAND))
|
|
||||||
|
wcfg = self.get_option("apt_get_wrapper", APT_GET_WRAPPER)
|
||||||
|
cmd = _get_wrapper_prefix(
|
||||||
|
wcfg.get('command', APT_GET_WRAPPER['command']),
|
||||||
|
wcfg.get('enabled', APT_GET_WRAPPER['enabled']))
|
||||||
|
|
||||||
|
cmd.extend(list(self.get_option("apt_get_command", APT_GET_COMMAND)))
|
||||||
|
|
||||||
if args and isinstance(args, str):
|
if args and isinstance(args, str):
|
||||||
cmd.append(args)
|
cmd.append(args)
|
||||||
@ -166,7 +176,9 @@ class Distro(distros.Distro):
|
|||||||
cmd.extend(pkglist)
|
cmd.extend(pkglist)
|
||||||
|
|
||||||
# Allow the output of this to flow outwards (ie not be captured)
|
# Allow the output of this to flow outwards (ie not be captured)
|
||||||
util.subp(cmd, env=e, capture=False)
|
util.log_time(logfunc=LOG.debug,
|
||||||
|
msg="apt-%s [%s]" % (command, ' '.join(cmd)), func=util.subp,
|
||||||
|
args=(cmd,), kwargs={'env': e, 'capture': False})
|
||||||
|
|
||||||
def update_package_sources(self):
|
def update_package_sources(self):
|
||||||
self._runner.run("update-sources", self.package_command,
|
self._runner.run("update-sources", self.package_command,
|
||||||
@ -175,3 +187,15 @@ class Distro(distros.Distro):
|
|||||||
def get_primary_arch(self):
|
def get_primary_arch(self):
|
||||||
(arch, _err) = util.subp(['dpkg', '--print-architecture'])
|
(arch, _err) = util.subp(['dpkg', '--print-architecture'])
|
||||||
return str(arch).strip()
|
return str(arch).strip()
|
||||||
|
|
||||||
|
|
||||||
|
def _get_wrapper_prefix(cmd, mode):
|
||||||
|
if isinstance(cmd, str):
|
||||||
|
cmd = [str(cmd)]
|
||||||
|
|
||||||
|
if (util.is_true(mode) or
|
||||||
|
(str(mode).lower() == "auto" and cmd[0] and
|
||||||
|
util.which(cmd[0]))):
|
||||||
|
return cmd
|
||||||
|
else:
|
||||||
|
return []
|
||||||
|
@ -147,8 +147,13 @@ apt_sources:
|
|||||||
# '--option=Dpkg::options::=--force-unsafe-io', '--assume-yes', '--quiet']
|
# '--option=Dpkg::options::=--force-unsafe-io', '--assume-yes', '--quiet']
|
||||||
#
|
#
|
||||||
# apt_get_upgrade_subcommand:
|
# apt_get_upgrade_subcommand:
|
||||||
# Specify a different subcommand for 'upgrade. The default is 'dist-upgrade'.
|
# Specify a different subcommand for 'upgrade. The default is 'dist-upgrade'.
|
||||||
# This is the subcommand that is invoked if package_upgrade is set to true above.
|
# This is the subcommand that is invoked if package_upgrade is set to true above.
|
||||||
|
#
|
||||||
|
# apt_get_wrapper:
|
||||||
|
# command: eatmydata
|
||||||
|
# enabled: [True, False, "auto"]
|
||||||
|
#
|
||||||
|
|
||||||
# Install additional packages on first boot
|
# Install additional packages on first boot
|
||||||
#
|
#
|
||||||
|
Loading…
x
Reference in New Issue
Block a user