From 213c3b317c6960d0abf33849b4cfd9b3e8c5eaee Mon Sep 17 00:00:00 2001 From: Louis Zuckerman Date: Mon, 11 Jul 2016 23:11:27 +0000 Subject: [PATCH] updated per Steve Langasek's feedback: - put umount in trap - wrap comment lines at 78 chars - remove unnecessary DEBIAN_FRONTENT env var from apt-get lines --- .../ubuntu-cpc/hooks/042-vagrant.binary | 37 +++++++++++-------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/live-build/ubuntu-cpc/hooks/042-vagrant.binary b/live-build/ubuntu-cpc/hooks/042-vagrant.binary index 90f74259..7ec951ea 100755 --- a/live-build/ubuntu-cpc/hooks/042-vagrant.binary +++ b/live-build/ubuntu-cpc/hooks/042-vagrant.binary @@ -3,16 +3,17 @@ # # Generate a generic Vagrant Box. # -# Vagrant images are essentially nothing more than OVA's with extra-metadata and -# some preinstalled packages. +# Vagrant images are essentially nothing more than OVA's with extra-metadata +# and some preinstalled packages. # -# We can't use the OVA's for Vagrant since Vagrant uses SSH to modify the instance. -# This build step creates a cloud-config ISO so that Cloud-Init will configure -# the initial user, creates meta-data that tells Vagrant how to interact with -# the cloud-init created users, and finally create the OVA. +# We can't use the OVA's for Vagrant since Vagrant uses SSH to modify the +# instance. This build step creates a cloud-config ISO so that Cloud-Init +# will configure the initial user, creates meta-data that tells Vagrant how +# to interact with the cloud-init created users, and finally create the OVA. # -# For this step, we make a deriviative of binary/boot/disk.ext4 and install some -# packages in it, convert it to a vmdk, and then assemble the vagrant box. +# For this step, we make a deriviative of binary/boot/disk.ext4 and install +# some packages in it, convert it to a vmdk, and then assemble the vagrant +# box. cur_d=${PWD} my_d=$(dirname $(readlink -f ${0})) @@ -33,18 +34,23 @@ apt-get -qqy install genisoimage qemu-utils box_d=$(mktemp -d) seed_d=$(mktemp -d) mount_d=$(mktemp -d) -trap "rm -rf ${box_d} ${seed_d} ${mount_d}" EXIT + +create_derivative "disk" "vagrant" #sets ${derivative_img} +mount_disk_image ${derivative_img} ${mount_d} + +cleanup_vagrant() { + umount_disk_image ${mount_d} + rm -rf ${box_d} ${seed_d} ${mount_d} ${derivative_img} +} +trap cleanup_vagrant EXIT pkgs=(virtualbox-guest-dkms virtualbox-guest-utils ) -create_derivative "disk" "vagrant" #sets ${derivative_img} -mount_disk_image ${derivative_img} ${mount_d} -env DEBIAN_FRONTEND=noninteractive chroot ${mount_d} apt-get update -env DEBIAN_FRONTEND=noninteractive chroot ${mount_d} apt-get install --no-install-recommends -y ${pkgs[@]} -env DEBIAN_FRONTEND=noninteractive chroot ${mount_d} apt-get clean -umount_disk_image ${mount_d} +chroot ${mount_d} apt-get update +chroot ${mount_d} apt-get install --no-install-recommends -y ${pkgs[@]} +chroot ${mount_d} apt-get clean # Used to identify bits suite=$(chroot chroot lsb_release -c -s) @@ -55,7 +61,6 @@ distro=$(chroot chroot lsb_release --id --short | tr [:upper:] [:lower:]) prefix="${distro}-${suite}-${version}-cloudimg" vmdk_f="${box_d}/${prefix}.vmdk" create_vmdk ${derivative_img} ${vmdk_f} -rm -f ${derivative_img} # Vagrant needs a base user. We either inject the well-known SSH key # or use password authentication. Both are ugly. So we'll use a password