X-Git-Url: https://git.siccegge.de//index.cgi?a=blobdiff_plain;f=vmdebootstrap;h=4894bae7455d93e92003b973ea1f7ccabaaf91c5;hb=cf4dc75495793ccda7d69ef2e6ee51a62d72669a;hp=e44fe1e5a5ca2f10434c786fa89bf8846b1ed34a;hpb=c8fd9ca4ba4e8877bc5d073c4b238e7f0af299b0;p=forks%2Fvmdebootstrap.git diff --git a/vmdebootstrap b/vmdebootstrap index e44fe1e..4894bae 100755 --- a/vmdebootstrap +++ b/vmdebootstrap @@ -30,7 +30,7 @@ import time from distro_info import DebianDistroInfo, UbuntuDistroInfo -__version__ = '0.9' +__version__ = '0.10' # pylint: disable=invalid-name,line-too-long,missing-docstring,too-many-branches @@ -125,7 +125,10 @@ class VmDebootstrap(cliapp.Application): # pylint: disable=too-many-public-meth 'set up foreign debootstrap environment using provided program (ie binfmt handler)') self.settings.string( ['variant'], - 'select debootstrap variant it not using the default') + 'select debootstrap variant if not using the default [deprecated]') + self.settings.string_list( + ['debootstrapopts'], + 'pass additional options to debootstrap'), self.settings.boolean( ['extlinux'], 'install extlinux?', @@ -243,7 +246,8 @@ class VmDebootstrap(cliapp.Application): # pylint: disable=too-many-public-meth if not self.settings['use-uefi'] and self.settings['esp-size'] != 5242880: raise cliapp.AppException( 'You must specify use-uefi for esp-size to have effect') - if self.efi_arch_table[self.settings['arch']]['exclusive'] and\ + if self.settings['arch'] in self.efi_arch_table and\ + self.efi_arch_table[self.settings['arch']]['exclusive'] and\ not self.settings['use-uefi']: raise cliapp.AppException( 'Only UEFI is supported on %s' % self.settings['arch']) @@ -262,7 +266,7 @@ class VmDebootstrap(cliapp.Application): # pylint: disable=too-many-public-meth # wheezy (which became oldstable on 04/25/2015) only had amd64 uefi if self.was_oldstable(datetime.date(2015, 4, 26)): - if self.settings['arch'] != 'amd64': + if self.settings['use-uefi'] and self.settings['arch'] != 'amd64': raise cliapp.AppException( 'Only amd64 supports UEFI in Wheezy') @@ -640,7 +644,11 @@ class VmDebootstrap(cliapp.Application): # pylint: disable=too-many-public-meth '--include=%s' % ','.join(include)) if self.settings['foreign']: args.append('--foreign') - if self.settings['variant']: + if self.settings['debootstrapopts']: + for opt in self.settings['debootstrapopts']: + for part in opt.split(' '): + args.append('--%s' % part) + elif self.settings['variant']: args.append('--variant') args.append(self.settings['variant']) args += [self.settings['distribution'], @@ -1016,14 +1024,12 @@ append initrd=%(initrd)s root=UUID=%(uuid)s ro %(kserial)s logging.debug( "%s usage: %s", self.settings['image'], self.runcmd(['du', self.settings['image']])) - with open('/dev/tty', 'w') as tty: - try: + try: + with open('/dev/tty', 'w') as tty: cliapp.runcmd([script, rootdir, self.settings['image']], stdout=tty, stderr=tty) - except IOError: - subprocess.call([script, rootdir, self.settings['image']]) - logging.debug( - "%s usage: %s", self.settings['image'], - self.runcmd(['du', self.settings['image']])) + except IOError: + logging.debug('tty unavailable, trying in headless mode.') + subprocess.call([script, rootdir, self.settings['image']]) def create_tarball(self, rootdir): # Create a tarball of the disk's contents