summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNeil Williams <codehelp@debian.org>2015-09-02 21:07:35 +0100
committerNeil Williams <codehelp@debian.org>2015-09-02 21:43:01 +0100
commit5c54e70b6d13241bc096880fd39f346f95561a54 (patch)
tree500ff2edceb3240f55d3b86e54601d2f48aafb99
parent31d98be0dc493620e28ad9bd24d3889499333b50 (diff)
downloadvmdebootstrap-5c54e70b6d13241bc096880fd39f346f95561a54.tar.gz
move some more functions into modules
-rw-r--r--MANIFEST.in2
-rwxr-xr-xbin/vmdebootstrap49
-rw-r--r--doc/conf.py2
-rw-r--r--man/conf.py2
-rw-r--r--vmdebootstrap/__init__.py1
-rw-r--r--vmdebootstrap/base.py18
-rw-r--r--vmdebootstrap/codenames.py18
-rw-r--r--vmdebootstrap/extlinux.py2
-rw-r--r--vmdebootstrap/grub.py5
-rw-r--r--vmdebootstrap/uefi.py7
10 files changed, 66 insertions, 40 deletions
diff --git a/MANIFEST.in b/MANIFEST.in
index 2d9b7f4..c250038 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -3,5 +3,5 @@ include vmextract.py
include vmdebootstrap.8.in
recursive-include examples *.sh *.txt
recursive-include common *.lib
-recursive-include doc *.rst
+include doc/*
recursive-include man *.rst
diff --git a/bin/vmdebootstrap b/bin/vmdebootstrap
index db88d35..175292e 100755
--- a/bin/vmdebootstrap
+++ b/bin/vmdebootstrap
@@ -424,9 +424,7 @@ class VmDebootstrap(cliapp.Application): # pylint: disable=too-many-public-meth
# uefi - make rootfs partition after end of ESP
# needs extent
elif self.settings['use-uefi']:
- bootsize = self.settings['esp-size'] / (1024 * 1024) + 1
- runcmd(['parted', '-s', self.settings['image'],
- 'mkpart', 'primary', str(bootsize), extent])
+ uefi.make_root(extent)
# no boot partition
else:
@@ -440,41 +438,18 @@ class VmDebootstrap(cliapp.Application): # pylint: disable=too-many-public-meth
# return to doing swap setup
base.make_swap(extent)
- def _bootstrap_packages(self): # pylint: disable=too-many-branches
+ def _bootstrap_packages(self):
+ base = self.handlers[Base.name]
uefi = self.handlers[Uefi.name]
+ grub = self.handlers[GrubHandler.name]
distro = self.handlers[Codenames.name]
- include = self.settings['package']
- if not self.settings['foreign'] and not self.settings['no-acpid']:
- include.append('acpid')
-
- if self.settings['grub']:
- if self.settings['use-uefi']:
- include.extend(uefi.efi_packages())
- else:
- include.append('grub-pc')
-
- if not self.settings['no-kernel']:
- if self.settings['kernel-package']:
- kernel_image = self.settings['kernel-package']
- else:
- if self.settings['arch'] == 'i386':
- # wheezy (which became oldstable on 04/25/2015) used '486'
- if distro.was_oldstable(datetime.date(2015, 4, 26)):
- kernel_arch = '486'
- else:
- kernel_arch = '586'
- elif self.settings['arch'] == 'armhf':
- kernel_arch = 'armmp'
- else:
- kernel_arch = self.settings['arch']
- kernel_image = 'linux-image-%s' % kernel_arch
- include.append(kernel_image)
-
- if self.settings['sudo'] and 'sudo' not in include:
- include.append('sudo')
-
- return include
+ include = self.settings['package']
+ include.extend(base.base_packages())
+ include.extend(uefi.efi_packages())
+ include.extend(grub.grub_packages())
+ include.extend(distro.kernel_package())
+ return list(set(include))
def _debootstrap_second_stage(self, rootdir):
base = self.handlers[Base.name]
@@ -553,11 +528,13 @@ class VmDebootstrap(cliapp.Application): # pylint: disable=too-many-public-meth
base = self.handlers[Base.name]
base.message('Setting up networking')
distro = self.handlers[Codenames.name]
+ ifc_d = os.path.join(rootdir, 'etc', 'network', 'interfaces.d')
+ if not os.path.exists(ifc_d):
+ os.mkdir(ifc_d)
# unconditionally write for wheezy (which became oldstable on 04/25/2015)
if distro.was_oldstable(datetime.date(2015, 4, 26)):
with open(os.path.join(rootdir, 'etc', 'network', 'interfaces'), 'w') as netfile:
netfile.write('source /etc/network/interfaces.d/*\n')
- os.mkdir(os.path.join(rootdir, 'etc', 'network', 'interfaces.d'))
elif not os.path.exists(os.path.join(rootdir, 'etc', 'network', 'interfaces')):
iface_path = os.path.join(rootdir, 'etc', 'network', 'interfaces')
diff --git a/doc/conf.py b/doc/conf.py
index 9a1c0f2..5f3056c 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -10,6 +10,7 @@
# All configuration values have a default; values that are commented out
# serve to show the default.
+import subprocess
import sys
import os
@@ -53,7 +54,6 @@ copyright = u'2015 Neil Williams'
# |version| and |release|, also used in various other places throughout the
# built documents.
#
-import subprocess
# The short X.Y version.
version = subprocess.Popen(['python', 'setup.py', '-V'], cwd=r'..', stdout=subprocess.PIPE).stdout.read().rstrip()
# The full version, including alpha/beta/rc tags.
diff --git a/man/conf.py b/man/conf.py
index 0a9e248..7d80f0a 100644
--- a/man/conf.py
+++ b/man/conf.py
@@ -10,6 +10,7 @@
# All configuration values have a default; values that are commented out
# serve to show the default.
+import subprocess
import sys
import os
@@ -47,7 +48,6 @@ copyright = u'2015, Neil Williams'
# |version| and |release|, also used in various other places throughout the
# built documents.
#
-import subprocess
# The short X.Y version.
version = subprocess.Popen(r'./version.py', cwd=r'..', stdout=subprocess.PIPE).stdout.read()
# The full version, including alpha/beta/rc tags.
diff --git a/vmdebootstrap/__init__.py b/vmdebootstrap/__init__.py
index 8b13789..e69de29 100644
--- a/vmdebootstrap/__init__.py
+++ b/vmdebootstrap/__init__.py
@@ -1 +0,0 @@
-
diff --git a/vmdebootstrap/base.py b/vmdebootstrap/base.py
index be51ce6..fc7305d 100644
--- a/vmdebootstrap/base.py
+++ b/vmdebootstrap/base.py
@@ -178,3 +178,21 @@ class Base(object):
logging.debug("Setting minimum 256Mb swap space")
extent = "%s%%" % int(100 * (self.settings['size'] - swap) / self.settings['size'])
return extent
+
+ def make_swap(self, extent):
+ if self.settings['swap'] > 0:
+ logging.debug("Creating swap partition")
+ runcmd([
+ 'parted', '-s', self.settings['image'],
+ 'mkpart', 'primary', 'linux-swap', extent, '100%'])
+
+ def base_packages(self):
+ packages = []
+ if not self.settings['foreign'] and not self.settings['no-acpid']:
+ packages.append('acpid')
+ if self.settings['sudo']:
+ packages.append('sudo')
+ if not self.settings['no-kernel']:
+ if self.settings['kernel-package']:
+ packages.append(self.settings['kernel-package'])
+ return packages
diff --git a/vmdebootstrap/codenames.py b/vmdebootstrap/codenames.py
index 25cd94d..d0f71fe 100644
--- a/vmdebootstrap/codenames.py
+++ b/vmdebootstrap/codenames.py
@@ -59,3 +59,21 @@ class Codenames(Base):
if not self.debian_info.valid(suite):
return False
return suite == self.debian_info.stable(limit)
+
+ def kernel_package(self):
+ packages = []
+ if not self.settings['no-kernel']:
+ if self.settings['kernel-package']:
+ return packages
+ if self.settings['arch'] == 'i386':
+ # wheezy (which became oldstable on 04/25/2015) used '486'
+ if self.was_oldstable(datetime.date(2015, 4, 26)):
+ kernel_arch = '486'
+ else:
+ kernel_arch = '586'
+ elif self.settings['arch'] == 'armhf':
+ kernel_arch = 'armmp'
+ else:
+ kernel_arch = self.settings['arch']
+ packages.append('linux-image-%s' % kernel_arch)
+ return packages
diff --git a/vmdebootstrap/extlinux.py b/vmdebootstrap/extlinux.py
index d5861a9..5698f6c 100644
--- a/vmdebootstrap/extlinux.py
+++ b/vmdebootstrap/extlinux.py
@@ -32,6 +32,8 @@ from vmdebootstrap.base import Base, runcmd
class ExtLinux(Base):
+ name = 'extlinux'
+
def __init__(self):
super(ExtLinux, self).__init__()
diff --git a/vmdebootstrap/grub.py b/vmdebootstrap/grub.py
index 909c2d1..95b17eb 100644
--- a/vmdebootstrap/grub.py
+++ b/vmdebootstrap/grub.py
@@ -116,3 +116,8 @@ class GrubHandler(Base):
umount_wrapper(rootdir)
if not ret:
raise cliapp.AppException("Failed to install extra grub uefi")
+
+ def grub_packages(self):
+ if self.settings['grub'] and not self.settings['use-uefi']:
+ return ['grub-pc']
+ return []
diff --git a/vmdebootstrap/uefi.py b/vmdebootstrap/uefi.py
index 7f77f9f..50ad842 100644
--- a/vmdebootstrap/uefi.py
+++ b/vmdebootstrap/uefi.py
@@ -46,6 +46,8 @@ class Uefi(Base):
def efi_packages(self):
packages = []
+ if self.settings['grub'] and not self.settings['use-uefi']:
+ return packages
pkg = arch_table[self.settings['arch']]['package']
self.message("Adding %s" % pkg)
packages.append(pkg)
@@ -123,3 +125,8 @@ class Uefi(Base):
self.mkfs(bootdev, fstype='vfat')
os.makedirs(self.bootdir)
return self.bootdir
+
+ def make_root(self, extent):
+ bootsize = self.settings['esp-size'] / (1024 * 1024) + 1
+ runcmd(['parted', '-s', self.settings['image'],
+ 'mkpart', 'primary', str(bootsize), extent])