Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 5 Sep 2020 19:03:34 +0000 (UTC)
From:      Ed Maste <emaste@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r365365 - head/tools/boot
Message-ID:  <202009051903.085J3YCE015517@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: emaste
Date: Sat Sep  5 19:03:34 2020
New Revision: 365365
URL: https://svnweb.freebsd.org/changeset/base/365365

Log:
  ci-qemu-test.sh: use pkgbase
  
  Reviewed by:	bcran (earlier), manu (earlier), imp
  Sponsored by:	The FreeBSD Foundation
  Differential Revision:	https://reviews.freebsd.org/D24276

Modified:
  head/tools/boot/ci-qemu-test.sh

Modified: head/tools/boot/ci-qemu-test.sh
==============================================================================
--- head/tools/boot/ci-qemu-test.sh	Sat Sep  5 17:02:48 2020	(r365364)
+++ head/tools/boot/ci-qemu-test.sh	Sat Sep  5 19:03:34 2020	(r365365)
@@ -1,11 +1,12 @@
 #!/bin/sh
 
-# Install loader, kernel, and enough of userland to boot in QEMU and echo
-# "Hello world." from init, as a very quick smoke test for CI.  Uses QEMU's
-# virtual FAT filesystem to avoid the need to create a disk image.  While
-# designed for CI automated testing, this script can also be run by hand as
-# a quick smoke-test.  The rootgen.sh and related scripts generate much more
-# extensive tests for many combinations of boot env (ufs, zfs, geli, etc).
+# Install pkgbase packages for loader, kernel, and enough of userland to boot
+# in QEMU and echo "Hello world." from init, as a very quick smoke test for CI.
+# Uses QEMU's virtual FAT filesystem to avoid the need to create a disk image.
+# While designed for CI automated testing, this script can also be run by hand
+# as a quick smoke-test as long as pkgbase packages have been built.  The
+# rootgen.sh and related scripts generate much more extensive tests for many
+# combinations of boot env (ufs, zfs, geli, etc).
 #
 # $FreeBSD$
 
@@ -26,32 +27,22 @@ tempdir_cleanup()
 tempdir_setup()
 {
 	# Create minimal directory structure and populate it.
-	# Caller must cd ${SRCTOP} before calling this function.
 
 	for dir in dev bin efi/boot etc lib libexec sbin usr/lib usr/libexec; do
 		mkdir -p ${ROOTDIR}/${dir}
 	done
 
 	# Install kernel, loader and minimal userland.
+	cat<<EOF >${ROOTDIR}/pkg.conf
+REPOS_DIR=[]
+repositories={local {url = file://$(dirname $OBJTOP)/repo/\${ABI}/latest}}
+EOF
+	ASSUME_ALWAYS_YES=true INSTALL_AS_USER=true pkg \
+	    -o ABI_FILE=$OBJTOP/bin/sh/sh \
+	    -C ${ROOTDIR}/pkg.conf -r ${ROOTDIR} install \
+	    FreeBSD-kernel-generic FreeBSD-bootloader \
+	    FreeBSD-clibs FreeBSD-runtime
 
-	make -DNO_ROOT DESTDIR=${ROOTDIR} \
-	    MODULES_OVERRIDE= \
-	    WITHOUT_DEBUG_FILES=yes \
-	    WITHOUT_KERNEL_SYMBOLS=yes \
-	    installkernel
-	for dir in stand \
-	    lib/libc lib/libedit lib/ncurses \
-	    libexec/rtld-elf \
-	    bin/sh sbin/init sbin/shutdown sbin/sysctl; do
-		make -DNO_ROOT DESTDIR=${ROOTDIR} INSTALL="install -U" \
-		    WITHOUT_DEBUG_FILES= \
-		    WITHOUT_MAN= \
-		    WITHOUT_PROFILE= \
-		    WITHOUT_TESTS= \
-		    WITHOUT_TOOLCHAIN= \
-		    -C ${dir} install
-	done
-
 	# Put loader in standard EFI location.
 	mv ${ROOTDIR}/boot/loader.efi ${ROOTDIR}/efi/boot/BOOTx64.EFI
 
@@ -80,6 +71,10 @@ EOF
 : ${SRCTOP:=$(make -V SRCTOP)}
 if [ -z "${SRCTOP}" ]; then
 	die "Cannot locate top of source tree"
+fi
+: ${OBJTOP:=$(make -V OBJTOP)}
+if [ -z "${OBJTOP}" ]; then
+	die "Cannot locate top of object tree"
 fi
 
 # Locate the uefi firmware file used by qemu.



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