#!/bin/sh
SSL_CA_CERT_FILE=/usr/local/share/certs/ca-root-nss.crt
set -ex
if [ -z "${GIT_COMMIT}" ]; then
echo "No git commit id specified"
exit 1
fi
ARTIFACT_SERVER=${ARTIFACT_SERVER:-artifact.ci.freebsd.org}
ARTIFACT_SUBDIR=${FBSD_BRANCH}/${GIT_COMMIT}/${TARGET}/${TARGET_ARCH}
OUTPUT_IMG_NAME=disk.img
sudo rm -fr work
mkdir -p work
cd work
DIST_PACKAGES="base kernel"
if [ "${WITH_DOC}" = 1 ]; then
DIST_PACKAGES="${DIST_PACKAGES} doc"
fi
if [ "${WITH_TESTS}" = 1 ]; then
DIST_PACKAGES="${DIST_PACKAGES} tests"
fi
if [ "${WITH_DEBUG}" = 1 ]; then
DIST_PACKAGES="${DIST_PACKAGES} base-dbg kernel-dbg"
fi
if [ "${WITH_LIB32}" = 1 ]; then
DIST_PACKAGES="${DIST_PACKAGES} lib32"
if [ "${WITH_DEBUG}" = 1 ]; then
DIST_PACKAGES="${DIST_PACKAGES} lib32-dbg"
fi
fi
mkdir -p ufs
for f in ${DIST_PACKAGES}
do
fetch https://${ARTIFACT_SERVER}/snapshot/${ARTIFACT_SUBDIR}/${f}.txz
sudo tar Jxf ${f}.txz -C ufs
done
cat <<EOF | sudo tee ufs/etc/fstab
# Device Mountpoint FStype Options Dump Pass#
/dev/gpt/swapfs none swap sw 0 0
/dev/gpt/rootfs / ufs rw 1 1
EOF
sudo dd if=/dev/random of=ufs/boot/entropy bs=4k count=1
sudo makefs -d 6144 -t ffs -s 16g -o version=2,bsize=32768,fsize=4096 -Z ufs.img ufs
mkimg -s gpt -f raw \
-b ufs/boot/pmbr \
-p freebsd-boot/bootfs:=ufs/boot/gptboot \
-p freebsd-swap/swapfs::1G \
-p freebsd-ufs/rootfs:=ufs.img \
-o ${OUTPUT_IMG_NAME}
zstd --rm ${OUTPUT_IMG_NAME}
cd ${WORKSPACE}
rm -fr artifact
mkdir -p artifact/${ARTIFACT_SUBDIR}
mv work/${OUTPUT_IMG_NAME}.zst artifact/${ARTIFACT_SUBDIR}