Path: blob/main/scripts/build/build-test_image-head.sh
1130 views
#!/bin/sh12SSL_CA_CERT_FILE=/usr/local/share/certs/ca-root-nss.crt34set -ex56if [ -z "${GIT_COMMIT}" ]; then7echo "No git commit id specified"8exit 19fi1011cleanup () {12# check mount point inside jail13P=${WORKSPACE}/work/ufs/dev14if [ `mount | grep ${P} | wc -l` -gt 0 ]; then15sudo umount ${P}16fi17}1819trap cleanup EXIT2021KERNCONF=${KERNCONF:-GENERIC}22ARTIFACT_SERVER=${ARTIFACT_SERVER:-artifact.ci.freebsd.org}23ARTIFACT_SUBDIR=snapshot/${FBSD_BRANCH}/${GIT_COMMIT}/${TARGET}/${TARGET_ARCH}24CONFIG_BASE=`dirname $0 | xargs realpath`/config-head25if [ "${KERNCONF}" = "GENERIC" ]; then26KERNEL=kernel27KERNEL_DBG=kernel-dbg28OUTPUT_IMG_NAME=disk-test.img29else30KERNEL=kernel-${KERNCONF}31KERNEL_DBG=kernel-dbg-${KERNCONF}32OUTPUT_IMG_NAME=disk-test-${KERNCONF}.img33fi3435sudo rm -fr work36mkdir -p work37cd work3839DIST_PACKAGES="base ${KERNEL}"40if [ "${WITH_DOC}" = 1 ]; then41DIST_PACKAGES="${DIST_PACKAGES} doc"42fi43if [ "${WITH_TESTS}" = 1 ]; then44DIST_PACKAGES="${DIST_PACKAGES} tests"45fi46if [ "${WITH_DEBUG}" = 1 ]; then47DIST_PACKAGES="${DIST_PACKAGES} base-dbg ${KERNEL_DBG}"48fi49if [ "${WITH_LIB32}" = 1 ]; then50DIST_PACKAGES="${DIST_PACKAGES} lib32"51if [ "${WITH_DEBUG}" = 1 ]; then52DIST_PACKAGES="${DIST_PACKAGES} lib32-dbg"53fi54fi55mkdir -p ufs56for f in ${DIST_PACKAGES}57do58fetch https://${ARTIFACT_SERVER}/${ARTIFACT_SUBDIR}/${f}.txz59sudo tar Jxf ${f}.txz -C ufs60done6162# Install packages in the target image. We can only do it63# if we can execute target architecture binaries.64if [ "${TARGET}" = "amd64" -o "${TARGET}" = "i386" ]; then65sudo cp /etc/resolv.conf ufs/etc/66sudo mount -t devfs devfs ufs/dev67sudo chroot ufs env ASSUME_ALWAYS_YES=yes pkg update68# Install packages needed by tests:69# coreutils: bin/date70# fusefs-ext2: sys/fs/fusefs/ctl71# gdb: local/kyua/utils/stacktrace_test72# gtar: sys/fs/tarfs73# jq: sys/net/if_bridge_test74# kyua: everything75# ksh93: tests/sys/cddl/zfs/...76# nist-kat: sys/opencrypto/runtests77# nmap: sys/netinet/fibs_test:arpresolve_checks_interface_fib78# perl5: lots of stuff79# pkgconf: local/lutok/examples_test, local/atf/atf-c, local/atf/atf-c++80# porch: sys/kern/tty81# py-dpkt: sys/opencrypto/runtests82# python3: sys/opencrypto/runtests83# devel/py-pytest: sys/net/routing, tests in python in general84# sg3_utils: sys/cam/ctl85# sudo: tests/sys/cddl/zfs/tests/delegate/...86# tcptestsuite: network stack test suite87sudo chroot ufs pkg install -y \88coreutils \89fusefs-ext2 \90gdb \91gtar \92jq \93ksh93 \94nist-kat \95nmap \96perl5 \97porch \98net/py-dpkt \99net/scapy \100python \101python3 \102devel/py-pytest \103devel/py-twisted \104security/openvpn \105sg3_utils \106sudo \107tcptestsuite108109if [ "${TARGET}" = "amd64" ]; then110sudo chroot ufs pkg install -Iy \111linux-c7-ltp || true112fi113114sudo umount ufs/dev115sudo rm -f ufs/etc/resolv.conf116fi117118# copy default configs, existing files will be override119sudo cp -Rf ${CONFIG_BASE}/testvm/override/ ufs/120121FROM=${CONFIG_BASE}/testvm/append/122TO=ufs123for i in `find ${FROM} -type f`124do125f=${i#${FROM}}126sudo mkdir -p ${TO}/`dirname $f`127cat ${FROM}$f | sudo tee -a ${TO}/$f > /dev/null128done129130if [ "${TARGET}" = "powerpc" ]; then131# XXX: Looks like powerpc64 cannot boot with GPT,132# and the default fstab specifies /dev/gpt/rootfs.133cat <<EOF | sudo tee ufs/etc/fstab134# Device Mountpoint FStype Options Dump Pass#135/dev/vtbd0s3 none swap sw 0 0136/dev/vtbd0s2 / ufs rw 1 1137fdesc /dev/fd fdescfs rw 0 0138EOF139fi140141case "${TARGET_ARCH}" in142mips|mips64|powerpc|powerpcspe|powerpc64)143B_FLAG="big"144;;145*)146B_FLAG="little"147;;148esac149150sudo dd if=/dev/random of=ufs/boot/entropy bs=4k count=1151sudo makefs -B ${B_FLAG} -d 6144 -t ffs -f 200000 -s 8g -o version=2,bsize=32768,fsize=4096 -Z ufs.img ufs152case "${TARGET}" in153arm64)154mkdir -p efi/EFI/BOOT155cp -f ufs/boot/loader_lua.efi efi/EFI/BOOT/bootaa64.efi156sudo makefs -d 6144 -t msdos -s 50m -Z efi.img efi157mkimg -s gpt -f raw \158-p efi:=efi.img \159-p freebsd-swap/swapfs::1G \160-p freebsd-ufs/rootfs:=ufs.img \161-o ${OUTPUT_IMG_NAME}162;;163arm)164mkdir -p efi/EFI/BOOT165cp -f ufs/boot/loader_lua.efi efi/EFI/BOOT/bootarm.efi166sudo makefs -d 6144 -t msdos -s 50m -Z efi.img efi167mkimg -s gpt -f raw \168-p efi:=efi.img \169-p freebsd-swap/swapfs::1G \170-p freebsd-ufs/rootfs:=ufs.img \171-o ${OUTPUT_IMG_NAME}172;;173mips)174mv ufs.img ${OUTPUT_IMG_NAME}175;;176powerpc)177# Note: BSD slices container is not working when cross created from amd64.178# As workaround, add UFS image directly on MBR partition #2179mkimg -a 1 -s mbr -f raw \180-p prepboot:=ufs/boot/boot1.elf \181-p freebsd:=ufs.img \182-p freebsd::1G \183-o ${OUTPUT_IMG_NAME}184;;185riscv)186mkdir -p efi/EFI/BOOT187cp -f ufs/boot/loader_lua.efi efi/EFI/BOOT/bootriscv64.efi188sudo makefs -d 6144 -t msdos -s 50m -Z efi.img efi189mkimg -s gpt -f raw \190-p efi:=efi.img \191-p freebsd-swap/swapfs::1G \192-p freebsd-ufs/rootfs:=ufs.img \193-o ${OUTPUT_IMG_NAME}194;;195*)196mkimg -s gpt -f raw \197-b ufs/boot/pmbr \198-p freebsd-boot/bootfs:=ufs/boot/gptboot \199-p freebsd-swap/swapfs::1G \200-p freebsd-ufs/rootfs:=ufs.img \201-o ${OUTPUT_IMG_NAME}202;;203esac204205zstd --rm ${OUTPUT_IMG_NAME}206207cd ${WORKSPACE}208rm -fr artifact209mkdir -p artifact/${ARTIFACT_SUBDIR}210mv work/${OUTPUT_IMG_NAME}.zst artifact/${ARTIFACT_SUBDIR}211212echo "USE_GIT_COMMIT=${GIT_COMMIT}" > ${WORKSPACE}/trigger.property213214215