mirror of
https://git.freebsd.org/src.git
synced 2026-01-16 23:02:24 +00:00
release: create pkgbase VM and cloud images
VM and cloud images are now built as packaged base systems by default, matching the default for installation media. Setting -DNOPKGBASE allows building as non-pkgbase systems. Reviewed by: emaste Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D51483
This commit is contained in:
parent
b84666f798
commit
4227d51b6e
5 changed files with 58 additions and 7 deletions
|
|
@ -23,7 +23,8 @@
|
|||
# (by default, the directory above this one)
|
||||
# NODISTSETS: if set, do not include dist sets or MANIFEST
|
||||
# NOPKGBASE: if set, include dist tarballs rather than pkgbase packages in
|
||||
# disc1 and dvd1 installation media
|
||||
# disc1 and dvd1 installation media and build VM/cloud images using
|
||||
# make installkernel installworld.
|
||||
# PORTSDIR: location of ports tree to distribute (default: /usr/ports)
|
||||
# XTRADIR: xtra-bits-dir argument for <arch>/mkisoimages.sh
|
||||
# NOPKG: if set, do not distribute third-party packages
|
||||
|
|
|
|||
|
|
@ -126,7 +126,7 @@ ${_CW:tu}${_FS:tu}${_FMT:tu}IMAGE= ${_CW:tl}.${_FS}.${_FMT}
|
|||
cw-${_CW:tl}-${_FS}-${_FMT}: cw-ec2-base-${_FS}-${_FMT}
|
||||
.endif
|
||||
|
||||
cw-${_CW:tl}-${_FS}-${_FMT}: ${QEMUTGT}
|
||||
cw-${_CW:tl}-${_FS}-${_FMT}: ${QEMUTGT} ${PKGBASE_REPO_DIR}
|
||||
mkdir -p ${.OBJDIR}/${.TARGET}
|
||||
env TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} SWAPSIZE=${SWAPSIZE} \
|
||||
QEMUSTATIC=${QEMUSTATIC} \
|
||||
|
|
@ -137,6 +137,8 @@ cw-${_CW:tl}-${_FS}-${_FMT}: ${QEMUTGT}
|
|||
PKG_REPOS_DIR=${PKG_REPOS_DIR:U${.OBJDIR}/${.TARGET}/etc/pkg} \
|
||||
PKG_REPO_NAME=${PKG_REPO_NAME:UFreeBSD-ports} \
|
||||
PKG_INSTALL_EPOCH=${PKG_INSTALL_EPOCH:U${GITEPOCH}} \
|
||||
NOPKGBASE=${NOPKGBASE} \
|
||||
PKGBASE_REPO_DIR=${.OBJDIR}/pkgbase-repo-dir \
|
||||
${.CURDIR}/scripts/mk-vmimage.sh \
|
||||
-C ${.CURDIR}/tools/vmimage.subr -d ${.OBJDIR}/${.TARGET} \
|
||||
-F ${"${_CW:MEC2-BUILDER}" != "":?ufs:${_FS}} \
|
||||
|
|
@ -180,7 +182,7 @@ CLEANFILES+= ${VMBASE}.${FS}.${FORMAT}
|
|||
|
||||
vm-base: vm-image
|
||||
|
||||
vm-image: ${QEMUTGT}
|
||||
vm-image: ${QEMUTGT} ${PKGBASE_REPO_DIR}
|
||||
.if defined(WITH_VMIMAGES) && !empty(WITH_VMIMAGES)
|
||||
. for FORMAT in ${VMFORMATS}
|
||||
. for FS in ${VMFSLIST}
|
||||
|
|
@ -193,6 +195,8 @@ vm-image: ${QEMUTGT}
|
|||
PKG_REPOS_DIR=${PKG_REPOS_DIR:U${.OBJDIR}/${.TARGET}-${FORMAT}-${FS}/etc/pkg} \
|
||||
PKG_REPO_NAME=${PKG_REPO_NAME:UFreeBSD-ports} \
|
||||
PKG_INSTALL_EPOCH=${PKG_INSTALL_EPOCH:U${GITEPOCH}} \
|
||||
NOPKGBASE=${NOPKGBASE} \
|
||||
PKGBASE_REPO_DIR=${.OBJDIR}/pkgbase-repo-dir \
|
||||
${.CURDIR}/scripts/mk-vmimage.sh \
|
||||
-C ${.CURDIR}/tools/vmimage.subr \
|
||||
-d ${.OBJDIR}/${.TARGET}-${FORMAT}-${FS} -F ${FS} \
|
||||
|
|
|
|||
|
|
@ -11,6 +11,15 @@ export VMSIZE=8000m
|
|||
export INSTALLOPTS="WITHOUT_DEBUG_FILES=YES WITHOUT_KERNEL_SYMBOLS=YES \
|
||||
WITHOUT_LIB32=YES WITHOUT_TESTS=YES WITHOUT_LLDB=YES"
|
||||
|
||||
# Equivalent to INSTALLOPTS for pkgbase
|
||||
vm_extra_filter_base_packages() {
|
||||
grep -v \
|
||||
-e '.*-dbg$' \
|
||||
-e '.*-lib32$' \
|
||||
-e '^FreeBSD-tests.*' \
|
||||
-e '^FreeBSD-lldb.*'
|
||||
}
|
||||
|
||||
# Packages to install into the image we're creating. In addition to packages
|
||||
# present on all EC2 AMIs, we install:
|
||||
# * ec2-scripts, which provides a range of EC2ification startup scripts,
|
||||
|
|
|
|||
|
|
@ -14,6 +14,15 @@ export VMSIZE=5000m
|
|||
export INSTALLOPTS="WITHOUT_DEBUG_FILES=YES WITHOUT_KERNEL_SYMBOLS=YES \
|
||||
WITHOUT_LIB32=YES WITHOUT_TESTS=YES WITHOUT_LLDB=YES"
|
||||
|
||||
# Equivalent to INSTALLOPTS for pkgbase
|
||||
vm_extra_filter_base_packages() {
|
||||
grep -v \
|
||||
-e '.*-dbg$' \
|
||||
-e '.*-lib32$' \
|
||||
-e '^FreeBSD-tests.*' \
|
||||
-e '^FreeBSD-lldb.*'
|
||||
}
|
||||
|
||||
# Packages to install into the image we're creating. In addition to packages
|
||||
# present on all EC2 AMIs, we install:
|
||||
# * ec2-scripts, which provides a range of EC2ification startup scripts,
|
||||
|
|
|
|||
|
|
@ -70,13 +70,41 @@ vm_copy_base() {
|
|||
return 0
|
||||
}
|
||||
|
||||
vm_filter_base_packages() {
|
||||
# Reads a list of all base system packages from stdin.
|
||||
# Writes a list of base system packages to install to stdout.
|
||||
grep -v -e '^FreeBSD-src.*' -e '^FreeBSD-kernel.*'
|
||||
# There are several kernel variants available in separate packages.
|
||||
# For VMs it is sufficient to install only the generic kernel.
|
||||
echo "FreeBSD-kernel-man"
|
||||
echo "FreeBSD-kernel-generic"
|
||||
echo "FreeBSD-kernel-generic-dbg"
|
||||
}
|
||||
|
||||
vm_extra_filter_base_packages() {
|
||||
# Prototype. When overridden, allows further filtering of base system
|
||||
# packages, reading package names from stdin and writing to stdout.
|
||||
cat
|
||||
}
|
||||
|
||||
vm_install_base() {
|
||||
# Installs the FreeBSD userland/kernel to the virtual machine disk.
|
||||
|
||||
cd ${WORLDDIR} && \
|
||||
make DESTDIR=${DESTDIR} ${INSTALLOPTS} \
|
||||
installworld installkernel distribution || \
|
||||
err "\n\nCannot install the base system to ${DESTDIR}."
|
||||
if [ -z "${NOPKGBASE}" ]; then
|
||||
local pkg_cmd
|
||||
pkg_cmd="pkg --rootdir ${DESTDIR} --repo-conf-dir ${PKGBASE_REPO_DIR}
|
||||
-o ASSUME_ALWAYS_YES=yes -o IGNORE_OSVERSION=yes
|
||||
-o INSTALL_AS_USER=yes "
|
||||
$pkg_cmd update
|
||||
selected=$($pkg_cmd rquery -U -r FreeBSD-base %n | \
|
||||
vm_filter_base_packages | vm_extra_filter_base_packages)
|
||||
$pkg_cmd install -U -r FreeBSD-base $selected
|
||||
else
|
||||
cd ${WORLDDIR} && \
|
||||
make DESTDIR=${DESTDIR} ${INSTALLOPTS} \
|
||||
installworld installkernel distribution || \
|
||||
err "\n\nCannot install the base system to ${DESTDIR}."
|
||||
fi
|
||||
|
||||
# Bootstrap etcupdate(8) database.
|
||||
mkdir -p ${DESTDIR}/var/db/etcupdate
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue