]> git.siccegge.de Git - forks/vmdebootstrap.git/blobdiff - vmdebootstrap
Reinstate headless support if there is no /dev/tty
[forks/vmdebootstrap.git] / vmdebootstrap
index e44fe1e5a5ca2f10434c786fa89bf8846b1ed34a..4c3aefc0f64d396ae3809e880c174a291d36bf08 100755 (executable)
@@ -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
 
@@ -243,7 +243,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 +263,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')
 
@@ -1016,14 +1017,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