diff --git a/build_image.py b/build_image.py index ae28b38..86b5c06 100755 --- a/build_image.py +++ b/build_image.py @@ -28,6 +28,12 @@ parser.add_argument( dest='release', action='store', required=True) +parser.add_argument( + '--shell', + dest='shell', + action='store', + type=bool, + default=False) parser.add_argument( '--source-iso', dest='source_iso', @@ -38,6 +44,21 @@ FLAGS = parser.parse_args() class ImageBuilder(object): + _BASE_PACKAGES = [ + 'debconf', + 'devscripts', + 'dialog', + 'gnupg', + 'isc-dhcp-client', + 'locales', + 'nano', + 'net-tools', + 'iputils-ping', + 'sudo', + 'user-setup', + 'wget', + ] + def __init__(self, source_iso, dest_iso, archive, arch, release): self._source_iso = source_iso self._dest_iso = dest_iso @@ -51,6 +72,9 @@ class ImageBuilder(object): print('+', args) subprocess.check_call(args) + def _ExecChroot(self, chroot_path, *args): + self._Exec('chroot', chroot_path, *args) + def _Debootstrap(self, root): path = os.path.join(root, 'chroot') os.mkdir(path) @@ -100,6 +124,18 @@ class ImageBuilder(object): return union_path + def _InstallPackages(self, chroot_path): + self._ExecChroot( + chroot_path, + 'apt-get', + 'install', + '--assume-yes', + *self._BASE_PACKAGES) + self._ExecChroot( + chroot_path, + 'apt-get', + 'clean') + def _Squash(self, chroot_path, union_path): self._Exec( 'mksquashfs', @@ -122,6 +158,9 @@ class ImageBuilder(object): chroot_path = self._Debootstrap(root) union_path = self._CreateUnion(root) + self._InstallPackages(chroot_path) + if FLAGS.shell: + self._Exec('bash') self._Squash(chroot_path, union_path) self._CreateISO(union_path)