Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 03 Sep 2019 14:07:00 -0000
From:      Colin Percival <cperciva@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject:   svn commit: r346308 - in stable/12/release: . tools
Message-ID:  <201904170747.x3H7l3ax091818@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: cperciva
Date: Wed Apr 17 07:47:03 2019
New Revision: 346308
URL: https://svnweb.freebsd.org/changeset/base/346308

Log:
  MFC r345316, r345317, r345858:
  
  r345316: Register ARM64 EC2 AMIs as being for the ARM64 architecture.
  
  r345317: Don't install amazon-ssm-agent package into ARM64 AMIs.
  
  r345858: Add support for cross-building cloudware images.
  
  With these changes it is possible to build ARM64 EC2 AMIs on stable/12 --
  said images do not *work* yet, however.

Modified:
  stable/12/release/Makefile.ec2
  stable/12/release/Makefile.vm
  stable/12/release/tools/ec2.conf
  stable/12/release/tools/vmimage.subr
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/release/Makefile.ec2
==============================================================================
--- stable/12/release/Makefile.ec2	Wed Apr 17 03:29:16 2019	(r346307)
+++ stable/12/release/Makefile.ec2	Wed Apr 17 07:47:03 2019	(r346308)
@@ -42,6 +42,9 @@ PUBLICSNAP=	--publicsnap
 EC2SNSREL=	${REVISION}-${BRANCH}
 EC2SNSVERS=	${EC2_SVNBRANCH}@${EC2_SVNREV}
 .endif
+.if ${TARGET_ARCH} != "amd64"
+EC2ARCH=	--${TARGET_ARCH:S/aarch64/arm64/}
+.endif
 
 CLEANFILES+=		ec2ami
 
@@ -82,7 +85,8 @@ ec2ami: cw-ec2 ${CW_EC2_PORTINSTALL}
 	@echo "--------------------------------------------------------------"
 	@false
 .endif
-	/usr/local/bin/bsdec2-image-upload ${PUBLISH} ${PUBLICSNAP} --sriov --ena \
+	/usr/local/bin/bsdec2-image-upload ${PUBLISH} ${PUBLICSNAP} \
+	    ${EC2ARCH} --sriov --ena \
 	    ${.OBJDIR}/ec2.raw \
 	    "${TYPE} ${REVISION}-${BRANCH}-${TARGET}${AMINAMESUFFIX}" \
 	    "${TYPE}/${TARGET} ${EC2_SVNBRANCH}@${EC2_SVNREV}" \

Modified: stable/12/release/Makefile.vm
==============================================================================
--- stable/12/release/Makefile.vm	Wed Apr 17 03:29:16 2019	(r346307)
+++ stable/12/release/Makefile.vm	Wed Apr 17 07:47:03 2019	(r346308)
@@ -39,6 +39,24 @@ VAGRANT-VMWARE_FORMAT=	vmdk
 VAGRANT-VMWARE_DESC=	Vagrant Image for VMWare
 VAGRANT-VMWARE_DISK=	${OSRELEASE}.vmware.${VAGRANT_FORMAT}
 
+emulator-portinstall:
+.if ${TARGET_ARCH} != ${MACHINE_ARCH}
+.if ( ${TARGET_ARCH} != "i386" ) || ( ${MACHINE_ARCH} != "amd64" )
+.if !exists(/usr/local/bin/qemu-${TARGET_ARCH}-static)
+.if exists(${PORTSDIR}/emulators/qemu-user-static/Makefile)
+	env - PATH=$$PATH make -C ${PORTSDIR}/emulators/qemu-user-static BATCH=1 all install clean
+.else
+.if !exists(/usr/local/sbin/pkg-static)
+	env ASSUME_ALWAYS_YES=yes pkg bootstrap -y
+.endif
+	env ASSUME_ALWAYS_YES=yes pkg install -y emulators/qemu-user-static
+.endif
+.endif
+
+QEMUSTATIC=/usr/local/bin/qemu-${TARGET_ARCH}-static
+.endif
+.endif
+
 .if defined(WITH_CLOUDWARE) && !empty(WITH_CLOUDWARE) && !empty(CLOUDWARE)
 . for _CW in ${CLOUDWARE}
 CLOUDTARGETS+=	cw-${_CW:tl}
@@ -53,9 +71,10 @@ ${_CW:tu}IMAGE=	${_CW:tl}.${${_CW:tu}_FORMAT}
 ${_CW:tu}CONF?=	${.CURDIR}/tools/${_CW:tl}.conf
 .  endif
 
-cw-${_CW:tl}:
+cw-${_CW:tl}: emulator-portinstall
 	mkdir -p ${.OBJDIR}/${.TARGET}
 	env TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} SWAPSIZE=${SWAPSIZE} \
+		QEMUSTATIC=${QEMUSTATIC} \
 		${.CURDIR}/scripts/mk-vmimage.sh \
 		-C ${.CURDIR}/tools/vmimage.subr -d ${.OBJDIR}/${.TARGET} \
 		-i ${.OBJDIR}/${_CW:tl}.img -s ${VMSIZE} -f ${${_CW:tu}_FORMAT} \

Modified: stable/12/release/tools/ec2.conf
==============================================================================
--- stable/12/release/tools/ec2.conf	Wed Apr 17 03:29:16 2019	(r346307)
+++ stable/12/release/tools/ec2.conf	Wed Apr 17 07:47:03 2019	(r346308)
@@ -6,8 +6,16 @@
 # Packages to install into the image we're creating.  This is a deliberately
 # minimalist set, providing only the packages necessary to bootstrap further
 # package installation as specified via EC2 user-data.
-export VM_EXTRA_PACKAGES="ec2-scripts firstboot-freebsd-update firstboot-pkgs dual-dhclient amazon-ssm-agent"
+export VM_EXTRA_PACKAGES="ec2-scripts firstboot-freebsd-update firstboot-pkgs dual-dhclient"
 
+# Include the amazon-ssm-agent package in amd64 images, since some users want
+# to be able to use it on systems which are not connected to the Internet.
+# (It is not enabled by default, however.)  This package does not exist for
+# aarch64, so we have to be selective about when we install it.
+if [ "${TARGET_ARCH}" = "amd64" ]; then
+	export VM_EXTRA_PACKAGES="${VM_EXTRA_PACKAGES} amazon-ssm-agent"
+fi
+
 # Set to a list of third-party software to enable in rc.conf(5).
 export VM_RC_LIST="ec2_configinit ec2_fetchkey ec2_loghostkey firstboot_freebsd_update firstboot_pkgs ntpd"
 
@@ -32,7 +40,7 @@ vm_extra_pre_umount() {
 	# catalogue and install or update pkg when the instance first
 	# launches, so these files would just be replaced anyway; removing
 	# them from the image allows it to boot faster.
-	chroot ${DESTDIR} env ASSUME_ALWAYS_YES=yes \
+	chroot ${DESTDIR} ${EMULATOR} env ASSUME_ALWAYS_YES=yes \
 		/usr/sbin/pkg delete -f -y pkg
 	rm ${DESTDIR}/var/db/pkg/repo-*.sqlite
 

Modified: stable/12/release/tools/vmimage.subr
==============================================================================
--- stable/12/release/tools/vmimage.subr	Wed Apr 17 03:29:16 2019	(r346307)
+++ stable/12/release/tools/vmimage.subr	Wed Apr 17 07:47:03 2019	(r346308)
@@ -141,10 +141,15 @@ vm_install_base() {
 	hostname="$(echo $(uname -o) | tr '[:upper:]' '[:lower:]')"
 	echo "hostname=\"${hostname}\"" >> ${DESTDIR}/etc/rc.conf
 
+	if ! [ -z "${QEMUSTATIC}" ]; then
+		export EMULATOR=/qemu
+		cp ${QEMUSTATIC} ${DESTDIR}/${EMULATOR}
+	fi
+
 	mkdir -p ${DESTDIR}/dev
 	mount -t devfs devfs ${DESTDIR}/dev
-	chroot ${DESTDIR} /usr/bin/newaliases
-	chroot ${DESTDIR} /etc/rc.d/ldconfig forcestart
+	chroot ${DESTDIR} ${EMULATOR} /usr/bin/newaliases
+	chroot ${DESTDIR} ${EMULATOR} /bin/sh /etc/rc.d/ldconfig forcestart
 	umount_loop ${DESTDIR}/dev
 
 	cp /etc/resolv.conf ${DESTDIR}/etc/resolv.conf
@@ -181,9 +186,9 @@ vm_extra_install_packages() {
 	fi
 	mkdir -p ${DESTDIR}/dev
 	mount -t devfs devfs ${DESTDIR}/dev
-	chroot ${DESTDIR} env ASSUME_ALWAYS_YES=yes \
+	chroot ${DESTDIR} ${EMULATOR} env ASSUME_ALWAYS_YES=yes \
 		/usr/sbin/pkg bootstrap -y
-	chroot ${DESTDIR} env ASSUME_ALWAYS_YES=yes \
+	chroot ${DESTDIR} ${EMULATOR} env ASSUME_ALWAYS_YES=yes \
 		/usr/sbin/pkg install -y ${VM_EXTRA_PACKAGES}
 	umount_loop ${DESTDIR}/dev
 
@@ -203,13 +208,16 @@ vm_extra_pre_umount() {
 	# Note: When overriding this function, removing resolv.conf in the
 	# disk image must be included.
 
+	if ! [ -z "${QEMUSTATIC}" ]; then
+		rm -f ${DESTDIR}/${EMULATOR}
+	fi
 	rm -f ${DESTDIR}/etc/resolv.conf
 	return 0
 }
 
 vm_extra_pkg_rmcache() {
 	if [ -e ${DESTDIR}/usr/local/sbin/pkg ]; then
-		chroot ${DESTDIR} env ASSUME_ALWAYS_YES=yes \
+		chroot ${DESTDIR} ${EMULATOR} env ASSUME_ALWAYS_YES=yes \
 			/usr/local/sbin/pkg clean -y -a
 	fi
 





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201904170747.x3H7l3ax091818>