Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F143243203
D51483.id.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
5 KB
Referenced Files
None
Subscribers
None
D51483.id.diff
View Options
diff --git a/release/Makefile b/release/Makefile
--- a/release/Makefile
+++ b/release/Makefile
@@ -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
diff --git a/release/Makefile.vm b/release/Makefile.vm
--- a/release/Makefile.vm
+++ b/release/Makefile.vm
@@ -126,7 +126,7 @@
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 @@
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 @@
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 @@
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} \
diff --git a/release/tools/ec2-builder.conf b/release/tools/ec2-builder.conf
--- a/release/tools/ec2-builder.conf
+++ b/release/tools/ec2-builder.conf
@@ -11,6 +11,15 @@
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,
diff --git a/release/tools/ec2-small.conf b/release/tools/ec2-small.conf
--- a/release/tools/ec2-small.conf
+++ b/release/tools/ec2-small.conf
@@ -14,6 +14,15 @@
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,
diff --git a/release/tools/vmimage.subr b/release/tools/vmimage.subr
--- a/release/tools/vmimage.subr
+++ b/release/tools/vmimage.subr
@@ -70,13 +70,41 @@
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
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Jan 28, 11:46 PM (9 h, 21 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28063367
Default Alt Text
D51483.id.diff (5 KB)
Attached To
Mode
D51483: release: create pkgbase VM and cloud images
Attached
Detach File
Event Timeline
Log In to Comment