summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2011-12-24 11:30:14 +0000
committerLars Wirzenius <liw@liw.fi>2011-12-24 11:30:14 +0000
commit8eae76bc2cbb5ca1ff197c0568afd91c2b74473a (patch)
tree50357e0b0e597231f5b5900d511345339b69b359
parente3571547c2a9ce6b37739aae626c03de2aea96cb (diff)
downloadvmdebootstrap-8eae76bc2cbb5ca1ff197c0568afd91c2b74473a.tar.gz
add --custom-package option
-rwxr-xr-xvmdebootstrap24
1 files changed, 24 insertions, 0 deletions
diff --git a/vmdebootstrap b/vmdebootstrap
index dd72925..295bdc7 100755
--- a/vmdebootstrap
+++ b/vmdebootstrap
@@ -48,6 +48,10 @@ class VmDebootstrap(cliapp.Application):
metavar='NAME',
default='stable')
self.settings.string_list(['package'], 'install PACKAGE onto system')
+ self.settings.string_list(['custom-package'],
+ 'install package in DEB file onto system '
+ '(not from mirror)',
+ metavar='DEB')
self.settings.boolean(['enable-dhcp'], 'enable DHCP on eth0')
self.settings.string(['root-password'], 'set root password',
metavar='PASSWORD')
@@ -86,6 +90,7 @@ class VmDebootstrap(cliapp.Application):
self.debootstrap(rootdir)
self.set_hostname(rootdir)
self.create_fstab(rootdir)
+ self.install_debs(rootdir)
self.set_root_password(rootdir)
self.create_users(rootdir)
self.remove_udev_persistent_rules(rootdir)
@@ -202,6 +207,25 @@ class VmDebootstrap(cliapp.Application):
f.write('proc /proc proc defaults 0 0\n')
f.write('/dev/sda1 / ext4 errors=remount-ro 0 1\n')
+ def install_debs(self, rootdir):
+ if not self.settings['custom-package']:
+ return
+ self.message('Installing custom packages')
+ tmp = os.path.join(rootdir, 'tmp', 'install_debs')
+ os.mkdir(tmp)
+ for deb in self.settings['custom-package']:
+ shutil.copy(deb, tmp)
+ filenames = [os.path.join('/tmp/install_debs', os.path.basename(deb))
+ for deb in self.settings['custom-package']]
+ out, err, exit = \
+ self.runcmd_unchecked(['chroot', rootdir, 'dpkg', '-i'] + filenames)
+ logging.debug('stdout:\n%s' % out)
+ logging.debug('stderr:\n%s' % err)
+ out = self.runcmd(['chroot', rootdir,
+ 'apt-get', '-f', '--no-remove', 'install'])
+ logging.debug('stdout:\n%s' % out)
+ shutil.rmtree(tmp)
+
def set_root_password(self, rootdir):
if self.settings['root-password']:
self.message('Setting root password')