diff options
author | Colin Percival <cperciva@FreeBSD.org> | 2014-11-21 02:13:12 +0000 |
---|---|---|
committer | Colin Percival <cperciva@FreeBSD.org> | 2014-11-21 02:13:12 +0000 |
commit | 32dbc829820b1b03bf2e27d204cb3fee8d072da9 (patch) | |
tree | cbf195bc132fdb2f5bdc5c6561f594b8ce36a7cc /release/tools/vmimage.subr | |
parent | 4e7bc9f0f7b329ce952e0faa4674d143ae2568ac (diff) | |
download | src-32dbc829820b1b03bf2e27d204cb3fee8d072da9.tar.gz src-32dbc829820b1b03bf2e27d204cb3fee8d072da9.zip |
Change how packages are installed into VM images: Rather than chrooting
into the image and running 'pkg install' from there, use 'pkg fetch' to
download packages into a temporary location and then 'pkg add' to install
them into the image.
This simplifies the code by avoiding the need to copy /etc/resolv.conf
into the image and then delete it later, and makes it possible to cross
build (e.g., to create an amd64 image when running on i386 hardware; or
in the future for building disk images for embedded platforms).
Because pkg was implicitly installed when VM_EXTRA_PACKAGES was non-empty,
add it to VM_EXTRA_PACKAGES in azure.conf and openstack.conf to maintain
the current behaviour.
By default repo-FreeBSD.sqlite is copied into the image, (a) to match
previous behaviour, where the file would be downloaded by the chrooted
pkg invocation; and (b) because it may be useful for testing purposes,
e.g., to see why a package didn't get installed. Because this file is
large (46 MB) and not likely to be useful in -RELEASE images which are
being launched into Clouds several months later, it can be disabled by
setting NOREPOSQLITE.
As far as I know this commit does not change the disk images produced in
any filesystem-visible way.
Notes
Notes:
svn path=/projects/release-vmimage/; revision=274773
Diffstat (limited to 'release/tools/vmimage.subr')
-rw-r--r-- | release/tools/vmimage.subr | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/release/tools/vmimage.subr b/release/tools/vmimage.subr index c7805721d2a5..63e39066fea2 100644 --- a/release/tools/vmimage.subr +++ b/release/tools/vmimage.subr @@ -90,8 +90,6 @@ vm_install_base() { chroot ${DESTDIR} /etc/rc.d/ldconfig forcestart umount ${DESTDIR}/dev - cp /etc/resolv.conf ${DESTDIR}/etc/resolv.conf - return 0 } @@ -114,15 +112,18 @@ vm_extra_enable_services() { } vm_extra_install_packages() { - mkdir -p ${DESTDIR}/dev - mount -t devfs devfs ${DESTDIR}/dev - chroot ${DESTDIR} env ASSUME_ALWAYS_YES=yes \ - /usr/sbin/pkg bootstrap -y if [ ! -z "${VM_EXTRA_PACKAGES}" ]; then - chroot ${DESTDIR} env ASSUME_ALWAYS_YES=yes \ - /usr/sbin/pkg install -y ${VM_EXTRA_PACKAGES} + PKGSDIR=`mktemp -d` + ABI=`/usr/sbin/pkg -c ${DESTDIR} config abi` + /usr/sbin/pkg -o ABI=${ABI} fetch -o ${PKGSDIR} -d -y ${VM_EXTRA_PACKAGES} + for PKG in ${PKGSDIR}/All/*; do + /usr/sbin/pkg -c ${DESTDIR} add -M - < ${PKG} + done + rm -r ${PKGSDIR} + if [ -z "${NOREPOSQLITE}" ]; then + cp /var/db/pkg/repo-FreeBSD.sqlite ${DESTDIR}/var/db/pkg + fi fi - umount ${DESTDIR}/dev return 0 } @@ -138,8 +139,6 @@ vm_extra_pre_umount() { # Prototype. When overridden, installs additional ports within the # virtual machine environment. - rm -f ${DESTDIR}/etc/resolv.conf - return 0 } |