Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F161740986
D36257.id109539.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
23 KB
Referenced Files
None
Subscribers
None
D36257.id109539.diff
View Options
diff --git a/.cirrus-ci/scripts/build/build-kernel-LINT.sh b/.cirrus-ci/scripts/build/build-kernel-LINT.sh
new file mode 100644
--- /dev/null
+++ b/.cirrus-ci/scripts/build/build-kernel-LINT.sh
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+export MAKEOBJDIRPREFIX=/tmp/obj
+rm -fr ${MAKEOBJDIRPREFIX}
+
+MAKECONF=/dev/null
+SRCCONF=/dev/null
+
+KERNCONF=${KERNCONF:-LINT}
+
+cd ${WORKSPACE}/src/sys/${TARGET}/conf
+make LINT
+
+cd ${WORKSPACE}/src
+
+make -j ${JFLAG} \
+ -DNO_CLEAN \
+ TARGET=${TARGET} \
+ TARGET_ARCH=${TARGET_ARCH} \
+ kernel-toolchain \
+ KERNCONF=${KERNCONF} \
+ __MAKE_CONF=${MAKECONF} \
+ SRCCONF=${SRCCONF} \
+ ${EXTRA_FLAGS}
+
+make -j ${JFLAG} \
+ -DNO_CLEAN \
+ TARGET=${TARGET} \
+ TARGET_ARCH=${TARGET_ARCH} \
+ buildkernel \
+ KERNCONF=${KERNCONF} \
+ __MAKE_CONF=${MAKECONF} \
+ SRCCONF=${SRCCONF} \
+ ${EXTRA_FLAGS}
diff --git a/.cirrus-ci/scripts/build/build-test_image.sh b/.cirrus-ci/scripts/build/build-test_image.sh
new file mode 100644
--- /dev/null
+++ b/.cirrus-ci/scripts/build/build-test_image.sh
@@ -0,0 +1,186 @@
+#!/bin/sh
+
+set -ex
+
+cleanup () {
+ # check mount point inside jail
+ P=${WORKSPACE}/work/ufs/dev
+ if [ `mount | grep ${P} | wc -l` -gt 0 ]; then
+ sudo umount ${P}
+ fi
+}
+
+trap cleanup EXIT
+
+KERNCONF=${KERNCONF:-GENERIC}
+CONFIG_BASE=${WORKSPACE}/.cirrus-ci/scripts/build/config
+if [ "${KERNCONF}" = "GENERIC" ]; then
+ KERNEL=kernel
+ KERNEL_DBG=kernel-dbg
+ OUTPUT_IMG_NAME=disk-test.img
+else
+ KERNEL=kernel-${KERNCONF}
+ KERNEL_DBG=kernel-dbg-${KERNCONF}
+ OUTPUT_IMG_NAME=disk-test-${KERNCONF}.img
+fi
+
+rm -fr work
+mkdir -p work
+cd work
+
+DIST_PACKAGES="base ${KERNEL}"
+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
+ tar Jxf ${WORKSPACE}/release/${ARTIFACT_DEST}/${f}.txz -C ufs
+done
+
+# Install packages in the target image. We can only do it
+# if we can execute target architecture binaries.
+if [ "${TARGET}" = "amd64" -o "${TARGET}" = "i386" ]; then
+ sudo cp /etc/resolv.conf ufs/etc/
+ sudo mount -t devfs devfs ufs/dev
+ sudo chroot ufs env ASSUME_ALWAYS_YES=yes pkg update
+ # Install packages needed by tests:
+ # coreutils: bin/date
+ # gdb: local/kyua/utils/stacktrace_test
+ # jq: sys/net/if_bridge_test
+ # kyua: everything
+ # ksh93: tests/sys/cddl/zfs/...
+ # nist-kat: sys/opencrypto/runtests
+ # nmap: sys/netinet/fibs_test:arpresolve_checks_interface_fib
+ # perl5: lots of stuff
+ # pkgconf: local/lutok/examples_test, local/atf/atf-c, local/atf/atf-c++
+ # py-dpkt: sys/opencrypto/runtests
+ # python3: sys/opencrypto/runtests
+ # sudo: tests/sys/cddl/zfs/tests/delegate/...
+ # tcptestsuite: network stack test suite
+ sudo chroot ufs pkg install -y \
+ coreutils \
+ gdb \
+ jq \
+ ksh93 \
+ nist-kat \
+ nmap \
+ perl5 \
+ net/py-dpkt \
+ net/scapy \
+ python \
+ python3 \
+ sudo \
+ tcptestsuite
+
+ if [ "${TARGET}" = "amd64" ]; then
+ sudo chroot ufs pkg install -Iy \
+ linux-c7-ltp || true
+ fi
+
+ sudo umount ufs/dev
+ sudo rm -f ufs/etc/resolv.conf
+fi
+
+# copy default configs, existing files will be override
+sudo cp -Rf ${CONFIG_BASE}/testvm/override/ ufs/
+
+FROM=${CONFIG_BASE}/testvm/append/
+TO=ufs
+for i in `find ${FROM} -type f`
+do
+ f=${i#${FROM}}
+ sudo mkdir -p ${TO}/`dirname $f`
+ cat ${FROM}$f | sudo tee -a ${TO}/$f > /dev/null
+done
+
+if [ "${TARGET}" = "powerpc" ]; then
+ # XXX: Looks like powerpc64 cannot boot with GPT,
+ # and the default fstab specifies /dev/gpt/rootfs.
+ cat <<EOF | sudo tee ufs/etc/fstab
+# Device Mountpoint FStype Options Dump Pass#
+/dev/vtbd0s3 none swap sw 0 0
+/dev/vtbd0s2 / ufs rw 1 1
+fdesc /dev/fd fdescfs rw 0 0
+EOF
+fi
+
+case "${TARGET_ARCH}" in
+ mips|mips64|powerpc|powerpcspe|powerpc64)
+ B_FLAG="big"
+ ;;
+ *)
+ B_FLAG="little"
+ ;;
+esac
+
+sudo dd if=/dev/random of=ufs/boot/entropy bs=4k count=1
+sudo makefs -B ${B_FLAG} -d 6144 -t ffs -f 200000 -s 8g -o version=2,bsize=32768,fsize=4096 -Z ufs.img ufs
+case "${TARGET}" in
+ arm64)
+ mkdir -p efi/EFI/BOOT
+ cp -f ufs/boot/loader_lua.efi efi/EFI/BOOT/bootaa64.efi
+ sudo makefs -d 6144 -t msdos -s 50m -Z efi.img efi
+ mkimg -s gpt -f raw \
+ -p efi:=efi.img \
+ -p freebsd-swap/swapfs::1G \
+ -p freebsd-ufs/rootfs:=ufs.img \
+ -o ${OUTPUT_IMG_NAME}
+ ;;
+ arm)
+ mkdir -p efi/EFI/BOOT
+ cp -f ufs/boot/loader_lua.efi efi/EFI/BOOT/bootarm.efi
+ sudo makefs -d 6144 -t msdos -s 50m -Z efi.img efi
+ mkimg -s gpt -f raw \
+ -p efi:=efi.img \
+ -p freebsd-swap/swapfs::1G \
+ -p freebsd-ufs/rootfs:=ufs.img \
+ -o ${OUTPUT_IMG_NAME}
+ ;;
+ mips)
+ mv ufs.img ${OUTPUT_IMG_NAME}
+ ;;
+ powerpc)
+ # Note: BSD slices container is not working when cross created from amd64.
+ # As workaround, add UFS image directly on MBR partition #2
+ mkimg -a 1 -s mbr -f raw \
+ -p prepboot:=ufs/boot/boot1.elf \
+ -p freebsd:=ufs.img \
+ -p freebsd::1G \
+ -o ${OUTPUT_IMG_NAME}
+ ;;
+ riscv)
+ mkdir -p efi/EFI/BOOT
+ cp -f ufs/boot/loader_lua.efi efi/EFI/BOOT/bootriscv64.efi
+ sudo makefs -d 6144 -t msdos -s 50m -Z efi.img efi
+ mkimg -s gpt -f raw \
+ -p efi:=efi.img \
+ -p freebsd-swap/swapfs::1G \
+ -p freebsd-ufs/rootfs:=ufs.img \
+ -o ${OUTPUT_IMG_NAME}
+ ;;
+ *)
+ 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}
+ ;;
+esac
+
+pwd
+ls -la
+rm -f ufs.img
+chflags -R noschg ufs &
+zstd -19 -T0 --rm -q --no-progress ${OUTPUT_IMG_NAME}
+rm -rf ufs
diff --git a/.cirrus-ci/scripts/build/build-world-kernel.sh b/.cirrus-ci/scripts/build/build-world-kernel.sh
new file mode 100644
--- /dev/null
+++ b/.cirrus-ci/scripts/build/build-world-kernel.sh
@@ -0,0 +1,50 @@
+#!/bin/sh
+
+set -ex
+
+rm -fr ${MAKEOBJDIRPREFIX}
+
+MAKECONF=${MAKECONF:-/dev/null}
+SRCCONF=${SRCCONF:-/dev/null}
+
+if [ -f "${WORKSPACE}/.cirrus-ci/scripts/build/config/build-world-kernel-${TARGET_ARCH}-src.conf" ]; then
+ SRCCONF=${WORKSPACE}/.cirrus-ci/scripts/build/config/build-world-kernel-${TARGET_ARCH}-src.conf
+fi
+
+if [ -f "${WORKSPACE}/.cirrus-ci/scripts/build/config/build-world-kernel-${TARGET_ARCH}-make.conf" ]; then
+ MAKECONF=${WORKSPACE}/.cirrus-ci/scripts/build/config/build-world-kernel-${TARGET_ARCH}-make.conf
+fi
+
+if [ -n "${CROSS_TOOLCHAIN}" ]; then
+ CROSS_TOOLCHAIN_PARAM=CROSS_TOOLCHAIN=${CROSS_TOOLCHAIN}
+fi
+
+make -j ${JFLAG} -DNO_CLEAN \
+ buildworld \
+ TARGET=${TARGET} \
+ TARGET_ARCH=${TARGET_ARCH} \
+ ${CROSS_TOOLCHAIN_PARAM} \
+ __MAKE_CONF=${MAKECONF} \
+ SRCCONF=${SRCCONF}
+make -j ${JFLAG} -DNO_CLEAN \
+ buildkernel \
+ TARGET=${TARGET} \
+ TARGET_ARCH=${TARGET_ARCH} \
+ ${CROSS_TOOLCHAIN_PARAM} \
+ __MAKE_CONF=${MAKECONF} \
+ SRCCONF=${SRCCONF}
+
+cd ${WORKSPACE}/release
+
+make clean
+make -DNOPORTS -DNOSRC -DNODOC packagesystem \
+ TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
+ MAKE="make -DDB_FROM_SRC __MAKE_CONF=${MAKECONF} SRCCONF=${SRCCONF}"
+
+mkdir -p ${ARTIFACT_DEST}
+mv ${MAKEOBJDIRPREFIX}/${WORKSPACE}/${TARGET}.${TARGET_ARCH}/release/*.txz ${ARTIFACT_DEST}
+mv ${MAKEOBJDIRPREFIX}/${WORKSPACE}/${TARGET}.${TARGET_ARCH}/release/MANIFEST ${ARTIFACT_DEST}
+
+echo "${GIT_COMMIT}" | sudo tee ${ARTIFACT_DEST}/revision.txt
+
+echo "USE_GIT_COMMIT=${GIT_COMMIT}" > ${WORKSPACE}/trigger.property
diff --git a/.cirrus-ci/scripts/build/config/build-world-kernel-i386-make.conf b/.cirrus-ci/scripts/build/config/build-world-kernel-i386-make.conf
new file mode 100644
--- /dev/null
+++ b/.cirrus-ci/scripts/build/config/build-world-kernel-i386-make.conf
@@ -0,0 +1 @@
+XZ_CMD=xz -T 10
diff --git a/.cirrus-ci/scripts/build/config/testvm/append/boot/loader.conf b/.cirrus-ci/scripts/build/config/testvm/append/boot/loader.conf
new file mode 100644
--- /dev/null
+++ b/.cirrus-ci/scripts/build/config/testvm/append/boot/loader.conf
@@ -0,0 +1,6 @@
+autoboot_delay=1
+net.fibs=3
+net.inet.ip.fw.default_to_accept=1
+mac_bsdextended_load="YES"
+vfs.zfs.arc_max=4294967296
+console="comconsole"
diff --git a/.cirrus-ci/scripts/build/config/testvm/append/etc/kyua/kyua.conf b/.cirrus-ci/scripts/build/config/testvm/append/etc/kyua/kyua.conf
new file mode 100644
--- /dev/null
+++ b/.cirrus-ci/scripts/build/config/testvm/append/etc/kyua/kyua.conf
@@ -0,0 +1,5 @@
+test_suites.FreeBSD.ci = 'true'
+test_suites.FreeBSD.fibs = '1 2'
+test_suites.FreeBSD.allow_sysctl_side_effects = '1'
+test_suites.FreeBSD.cam_test_device = '/dev/ada0'
+test_suites.FreeBSD.disks = '/dev/vtbd2 /dev/vtbd3 /dev/vtbd4 /dev/vtbd5 /dev/vtbd6'
diff --git a/.cirrus-ci/scripts/build/config/testvm/append/etc/rc.conf b/.cirrus-ci/scripts/build/config/testvm/append/etc/rc.conf
new file mode 100644
--- /dev/null
+++ b/.cirrus-ci/scripts/build/config/testvm/append/etc/rc.conf
@@ -0,0 +1,22 @@
+kld_list="" # Load modules needed by tests
+kld_list="${kld_list} blake2" # sys/opencrypto
+kld_list="${kld_list} cryptodev" # sys/opencrypto
+kld_list="${kld_list} fusefs" # sys/fs/fusefs
+kld_list="${kld_list} ipsec" # sys/netipsec
+kld_list="${kld_list} mac_portacl" # sys/mac/portacl
+kld_list="${kld_list} mqueuefs" # sys/kern/mqueue_test
+kld_list="${kld_list} pfsync" # sys/netpfil/pf (loads pf)
+kld_list="${kld_list} pflog" # sys/netpfil/pf
+kld_list="${kld_list} ipl" # sys/sbin/ipf (loads ipfilter)
+kld_list="${kld_list} ipfw" # sys/netpfil/ipfw (loads ipfw)
+kld_list="${kld_list} ipfw_nat" # sys/netpfil/ipfw (loads ipfw_nat)
+kld_list="${kld_list} ipdivert" # sys/netinet (loads ipdivert)
+kld_list="${kld_list} dummynet" # sys/netpfil/common
+kld_list="${kld_list} carp" # sys/netinet/carp
+kld_list="${kld_list} if_stf" # sys/net/if_stf
+auditd_enable="YES"
+background_fsck="NO"
+sendmail_enable="NONE"
+cron_enable="NO"
+syslogd_enable="NO"
+newsyslog_enable="NO"
diff --git a/.cirrus-ci/scripts/build/config/testvm/append/etc/sysctl.conf b/.cirrus-ci/scripts/build/config/testvm/append/etc/sysctl.conf
new file mode 100644
--- /dev/null
+++ b/.cirrus-ci/scripts/build/config/testvm/append/etc/sysctl.conf
@@ -0,0 +1,6 @@
+kern.cryptodevallowsoft=1
+kern.ipc.tls.enable=1
+net.add_addr_allfibs=0
+security.mac.bsdextended.enabled=0
+vfs.aio.enable_unsafe=1
+vfs.usermount=1
diff --git a/.cirrus-ci/scripts/build/config/testvm/override/etc/fstab b/.cirrus-ci/scripts/build/config/testvm/override/etc/fstab
new file mode 100644
--- /dev/null
+++ b/.cirrus-ci/scripts/build/config/testvm/override/etc/fstab
@@ -0,0 +1,4 @@
+# Device Mountpoint FStype Options Dump Pass#
+/dev/gpt/swapfs none swap sw 0 0
+/dev/gpt/rootfs / ufs rw 1 1
+fdesc /dev/fd fdescfs rw 0 0
diff --git a/.cirrus-ci/scripts/build/config/testvm/override/etc/rc.local b/.cirrus-ci/scripts/build/config/testvm/override/etc/rc.local
new file mode 100644
--- /dev/null
+++ b/.cirrus-ci/scripts/build/config/testvm/override/etc/rc.local
@@ -0,0 +1,49 @@
+#!/bin/sh
+
+echo
+echo "--------------------------------------------------------------"
+echo "rc.local start!"
+echo "--------------------------------------------------------------"
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
+export PATH
+
+set -x
+
+ddb script kdb.enter.panic="show pcpu; reset"
+
+for TARDEV in /dev/vtbd0 /dev/vtbd1 /dev/ada1; do
+ file -s ${TARDEV}
+ ISTAR=$(file -s ${TARDEV} | grep "POSIX tar archive" | wc -l)
+ if [ ${ISTAR} -eq 1 ]; then
+ break
+ fi
+done
+
+METADIR=/meta
+
+if [ ${ISTAR} -eq 1 ]; then
+ rm -fr ${METADIR}
+ mkdir -p ${METADIR}
+ tar xvf ${TARDEV} -C ${METADIR}
+ sh -ex ${METADIR}/run.sh
+ tar cvf ${TARDEV} -C ${METADIR} .
+else
+ echo "ERROR: ${TARDEV} is not a POSIX tar archive."
+ # Don't shutdown because this is not run in unattended mode
+ exit 1
+fi
+
+if [ -f ${METADIR}/auto-shutdown ]; then
+ # XXX: Currently RISC-V and MIPS64 kernels lack the ability
+ # to make qemu exit on shutdown. Reboot instead;
+ # it makes qemu exit too.
+ case "$(uname -p)" in
+ mips64|riscv64)
+ shutdown -r now
+ ;;
+ *)
+ shutdown -p now
+ ;;
+ esac
+fi
diff --git a/.cirrus-ci/scripts/test/create-meta.sh b/.cirrus-ci/scripts/test/create-meta.sh
new file mode 100755
--- /dev/null
+++ b/.cirrus-ci/scripts/test/create-meta.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+rm -f meta.tar
+truncate -s 256M meta.tar
+tar rvf meta.tar -C meta .
diff --git a/.cirrus-ci/scripts/test/extract-meta.sh b/.cirrus-ci/scripts/test/extract-meta.sh
new file mode 100755
--- /dev/null
+++ b/.cirrus-ci/scripts/test/extract-meta.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+METAOUTDIR=meta-out
+
+rm -fr ${METAOUTDIR}
+mkdir ${METAOUTDIR}
+tar xvf meta.tar -C ${METAOUTDIR}
diff --git a/.cirrus-ci/scripts/test/meta/amd64-run.sh b/.cirrus-ci/scripts/test/meta/amd64-run.sh
new file mode 100644
--- /dev/null
+++ b/.cirrus-ci/scripts/test/meta/amd64-run.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+METADIR=/meta
+sh -ex ${METADIR}/disable-dtrace-tests.sh
+sh -ex ${METADIR}/disable-zfs-tests.sh
+sh -ex ${METADIR}/disable-notyet-tests.sh
+sh -ex ${METADIR}/run-kyua.sh
diff --git a/.cirrus-ci/scripts/test/meta/i386-run.sh b/.cirrus-ci/scripts/test/meta/i386-run.sh
new file mode 100644
--- /dev/null
+++ b/.cirrus-ci/scripts/test/meta/i386-run.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+METADIR=/meta
+sh -ex ${METADIR}/disable-dtrace-tests.sh
+sh -ex ${METADIR}/disable-zfs-tests.sh
+sh -ex ${METADIR}/disable-notyet-tests.sh
+sh -ex ${METADIR}/run-kyua.sh
diff --git a/.cirrus-ci/scripts/test/run-tests.sh b/.cirrus-ci/scripts/test/run-tests.sh
new file mode 100644
--- /dev/null
+++ b/.cirrus-ci/scripts/test/run-tests.sh
@@ -0,0 +1,74 @@
+#!/bin/sh
+
+set -ex
+
+JOB_DIR=work
+cd "${WORKSPACE}/${JOB_DIR}" || exit
+
+KERNCONF=${KERNCONF:-GENERIC}
+if [ "${KERNCONF}" = "GENERIC" ]; then
+ IMG_NAME=disk-test.img
+else
+ IMG_NAME=disk-test-${KERNCONF}.img
+fi
+zstd -T0 -fd -q --no-progress "${IMG_NAME}.zst"
+TEST_BASE=${WORKSPACE}/.cirrus-ci/scripts/test
+
+TIMEOUT=7200
+
+: ${VM_CPU_COUNT:=8}
+: ${VM_MEM_SIZE:=16384m}
+
+METADIR=meta
+METAOUTDIR=meta-out
+
+# prepare meta disk to pass information to testvm
+rm -fr ${METADIR}
+mkdir ${METADIR}
+cp ${META} ${METADIR}/run.sh
+for i in ${USE_TEST_SUBR}; do
+ cp ${TEST_BASE}/subr/${i} ${METADIR}/
+done
+touch ${METADIR}/auto-shutdown
+sh -ex ${TEST_BASE}/create-meta.sh
+
+if [ "${USE_QEMU}" = 1 ]; then
+ : ${QEMU_DEVICES:="-device virtio-blk,drive=hd0 -device virtio-blk,drive=hd1"}
+ timeout -k 60 ${TIMEOUT} /usr/bin/qemu-system-${QEMU_ARCH} \
+ -machine ${QEMU_MACHINE} \
+ -smp ${VM_CPU_COUNT} \
+ -m ${VM_MEM_SIZE} \
+ -nographic \
+ -no-reboot \
+ ${QEMU_EXTRA_PARAM} \
+ -drive if=none,file=${IMG_NAME},format=raw,id=hd0 \
+ -drive if=none,file=meta.tar,format=raw,id=hd1 \
+ ${QEMU_DEVICES}
+ rc=$?
+ echo "qemu return code = $rc"
+fi
+
+# extract test result
+sh -ex ${TEST_BASE}/extract-meta.sh
+rm -f test-report.*
+mkdir -p ${WORKSPACE}/artifact/
+mv ${METAOUTDIR}/test-report.* ${WORKSPACE}/artifact/
+
+# Turn known test failures into xfails.
+report="test-report.xml"
+if [ -e ${JOB_DIR}/xfail-list -a -e "${report}" ]; then
+ while IFS=":" read classname name; do
+ xpath="/testsuite/testcase[@classname=\"${classname}\"][@name=\"${name}\"]"
+ if ! xml sel -Q -t -c "${xpath}/*[self::error or self::failure]" "${report}"; then
+ if ! xml sel -Q -t -c "${xpath}" "${report}"; then
+ echo "Testcase ${classname}:${name} vanished"
+ else
+ echo "Testcase ${classname}:${name} unexpectedly succeeded"
+ fi
+ else
+ xml ed -P -L -r "${xpath}/*[self::error or self::failure]" -v skipped "${report}"
+ fi
+ done < ${JOB_DIR}/xfail-list
+fi
+
+rm -f ${IMG_NAME}
diff --git a/.cirrus-ci/scripts/test/subr/disable-disks-tests.sh b/.cirrus-ci/scripts/test/subr/disable-disks-tests.sh
new file mode 100644
--- /dev/null
+++ b/.cirrus-ci/scripts/test/subr/disable-disks-tests.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+if [ -f /etc/kyua/kyua.conf ]; then
+ sed -i .bak -E \
+ -e 's,test_suites.FreeBSD.(cam|disks),-- &,' \
+ /etc/kyua/kyua.conf
+fi
diff --git a/.cirrus-ci/scripts/test/subr/disable-dtrace-tests.sh b/.cirrus-ci/scripts/test/subr/disable-dtrace-tests.sh
new file mode 100644
--- /dev/null
+++ b/.cirrus-ci/scripts/test/subr/disable-dtrace-tests.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+if [ -f /usr/tests/cddl/usr.sbin/dtrace/Kyuafile ]; then
+ mv /usr/tests/cddl/usr.sbin/dtrace/Kyuafile \
+ /usr/tests/cddl/usr.sbin/dtrace/Kyuafile.bak
+fi
diff --git a/.cirrus-ci/scripts/test/subr/disable-notyet-tests.sh b/.cirrus-ci/scripts/test/subr/disable-notyet-tests.sh
new file mode 100644
--- /dev/null
+++ b/.cirrus-ci/scripts/test/subr/disable-notyet-tests.sh
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+F=/usr/tests/lib/libcasper/services/cap_dns/Kyuafile
+if [ -f ${F} ]; then
+ sed -i .bak \
+ -e 's/tap_test_program{name="dns_test", }/-- tap_test_program{name="dns_test", }/' \
+ ${F}
+fi
+
+F=/usr/tests/lib/libcasper/services/cap_net/Kyuafile
+if [ -f ${F} ]; then
+ sed -i .bak \
+ -e 's/atf_test_program{name="net_test", }/-- atf_test_program{name="net_test", }/' \
+ ${F}
+fi
+
+F=/usr/local/tests/kyua/utils/signals/Kyuafile
+if [ -f ${F} ]; then
+ sed -i .bak \
+ -e 's,atf_test_program{name="timer_test"},-- atf_test_program{name="timer_test"},' \
+ ${F}
+fi
+
+F=/usr/local/tests/kyua/integration/cmd_about_test
+if [ -f ${F} ]; then
+ sed -i .bak \
+ -e 's,atf_add_test_case topic__authors__installed,#atf_add_test_case topic__authors__installed,' \
+ ${F}
+ rm -f ${F}.bak
+fi
+
+F=/usr/tests/sys/netmap/Kyuafile
+if [ -f ${F} ]; then
+ sed -i .bak \
+ -e 's,plain_test_program{name="ctrl-api-test",-- plain_test_program{name="ctrl-api-test",' \
+ ${F}
+fi
diff --git a/.cirrus-ci/scripts/test/subr/disable-zfs-tests.sh b/.cirrus-ci/scripts/test/subr/disable-zfs-tests.sh
new file mode 100644
--- /dev/null
+++ b/.cirrus-ci/scripts/test/subr/disable-zfs-tests.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+if [ -f /usr/tests/sys/cddl/Kyuafile ]; then
+ sed -i .bak \
+ -e 's,include("zfs/Kyuafile"),-- include("zfs/Kyuafile"),' \
+ /usr/tests/sys/cddl/Kyuafile
+fi
diff --git a/.cirrus-ci/scripts/test/subr/run-kyua.sh b/.cirrus-ci/scripts/test/subr/run-kyua.sh
new file mode 100644
--- /dev/null
+++ b/.cirrus-ci/scripts/test/subr/run-kyua.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+echo
+echo "--------------------------------------------------------------"
+echo "start kyua tests!"
+echo "--------------------------------------------------------------"
+
+cd /usr/tests
+set +e
+kyua test
+rc=$?
+set -e
+if [ ${rc} -ne 0 ] && [ ${rc} -ne 1 ]; then
+ exit ${rc}
+fi
+kyua report --verbose --results-filter passed,skipped,xfail,broken,failed --output test-report.txt
+kyua report-junit --output=test-report.xml
+mv test-report.* /meta
diff --git a/.cirrus.yml b/.cirrus.yml
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -1,37 +1,143 @@
-# $FreeBSD$
+freebsd_instance_template: &FREEBSD_INSTANCE_TEMPLATE
+ compute_engine_instance:
+ platform: freebsd
+ image_project: freebsd-org-cloud-dev
+ image: freebsd-14-0-current-amd64-v20220505
+ cpu: 8
+ memory: 32G
+ disk: 60
-compute_engine_instance:
- # Image list available via
- # gcloud compute images list --project freebsd-org-cloud-dev --no-standard-images
- platform: freebsd
- image_project: freebsd-org-cloud-dev
- image: freebsd-13-1-release-amd64
- cpu: 8
- memory: 8G
- disk: 40
+linux_instance_template: &LINUX_INSTANCE_TEMPLATE
+ compute_engine_instance:
+ # gcloud compute images list --project freebsd-org-cloud-de
+ platform: linux
+ image_project: cirrus-images
+ image: family/docker-kvm
+ cpu: 8
+ memory: 32G
+ disk: 100
+ nested_virtualization: true
-task:
+env:
+ ARTIFACT_DEST: artifact/${FBSD_BRANCH}/${GIT_COMMIT}/${TARGET}/${TARGET_ARCH}
+ CIRRUS_CLONE_DEPTH: 1
+ MAKEOBJDIRPREFIX: /tmp/obj
+ KERNCONF: GENERIC
+ MAKECONF: /dev/null
+ SRCCONF: /dev/null
+ JFLAG: 8
+ EXTRA_FLAGS:
+ WORKSPACE: $CIRRUS_WORKING_DIR
+ FBSD_BRANCH: $CIRRUS_BRANCH
+ GIT_COMMIT: $CIRRUS_CHANGE_IN_REPO
+ JOB_NAME: $CIRRUS_TASK_NAME
+ WITH_LIB32: 0
+ WITH_DEBUG: 1
+ WITH_TESTS: 1
+ TARGET: $TARGET_ARCH
+ META: ${WORKSPACE}/.cirrus-ci/scripts/test/meta/${TARGET_ARCH}-run.sh
+ QEMU_ARCH: $TARGET_ARCH
+ USE_QEMU: 1
+ USE_TEST_SUBR: |
+ disable-dtrace-tests.sh
+ disable-zfs-tests.sh
+ disable-notyet-tests.sh
+ run-kyua.sh
+
+jarvisBUILD_task:
+ << : *FREEBSD_INSTANCE_TEMPLATE
+ name: jarvis-BUILD-$TARGET_ARCH
+ only_if: $CIRRUS_REPO_OWNER != 'freebsd' && $CIRRUS_BRANCH == 'jarvis'
+ matrix:
+ - ARCH: $TARGET_ARCH
+ env:
+ TARGET_ARCH: amd64
+ WITH_LIB32: 1
+ - ARCH: $TARGET_ARCH
+ env:
+ TARGET_ARCH: i386
+ TARGET: i386
+ timeout_in: 120m
+ image_cache:
+ folder: work
+ fingerprint_key: ${GIT_COMMIT}-${TARGET}-${TARGET_ARCH}
+ build_world_kernel_script:
+ - sh .cirrus-ci/scripts/build/build-world-kernel.sh
+ build_test_image_script:
+ - sh .cirrus-ci/scripts/build/build-test_image.sh
+
+jarvisTEST_task:
+ << : *LINUX_INSTANCE_TEMPLATE
+ name: jarvis-TEST-$TARGET_ARCH
+ only_if: $CIRRUS_REPO_OWNER != 'freebsd' && $CIRRUS_BRANCH == 'jarvis'
+ depends_on: jarvis-BUILD-$TARGET_ARCH
+ matrix:
+ - ARCH: $TARGET_ARCH
+ env:
+ TARGET_ARCH: amd64
+ QEMU_ARCH: x86_64
+ QEMU_MACHINE: q35
+ QEMU_EXTRA_PARAM: -enable-kvm -cpu host
+ - ARCH: $TARGET_ARCH
+ env:
+ TARGET_ARCH: i386
+ TARGET: i386
+ QEMU_MACHINE: q35
+ QEMU_EXTRA_PARAM: -enable-kvm -cpu host
+ timeout_in: 120m
+ image_cache:
+ folder: work
+ fingerprint_key: ${GIT_COMMIT}-${TARGET}-${TARGET_ARCH}
+ pkg_install_script:
+ - apt update
+ - apt install -y curl qemu qemu-kvm qemu-system qemu-efi u-boot-qemu
+ test_script:
+ - ls -la ${WORKSPACE}/work
+ - sh .cirrus-ci/scripts/test/run-tests.sh
+ always:
+ junit_artifacts:
+ path: "artifact/**.xml"
+ #format: junit
+
+jarvisLINT_task:
+ << : *FREEBSD_INSTANCE_TEMPLATE
+ name: jarvis-LINT-$TARGET_ARCH
+ only_if: $CIRRUS_REPO_OWNER != 'freebsd' && $CIRRUS_BRANCH == 'jarvis'
+ depends_on: jarvis-BUILD-$TARGET_ARCH
+ matrix:
+ - ARCH: $TARGET_ARCH
+ env:
+ TARGET_ARCH: amd64
+ - ARCH: $TARGET_ARCH
+ env:
+ TARGET: i386
+ TARGET_ARCH: i386
+ timeout_in: 120m
+ build_kernel_lint_script:
+ - sh .cirrus-ci/scripts/build/build-kernel-LINT.sh
+
+smoke_task:
+ << : *FREEBSD_INSTANCE_TEMPLATE
+ only_if: $CIRRUS_REPO_OWNER == 'freebsd'
matrix:
- name: World and kernel amd64 build and boot smoke test
env:
- TARGET: amd64
TARGET_ARCH: amd64
TOOLCHAIN_PKG: llvm14
- - name: World and kernel arm64 build and boot smoke test
+ - name: World and kernel i386 build and boot smoke test
trigger_type: manual
env:
- TARGET: arm64
- TARGET_ARCH: aarch64
+ TARGET: i386
+ TARGET_ARCH: i386
TOOLCHAIN_PKG: llvm14
- name: World and kernel gcc9 amd64 build and boot smoke test
trigger_type: manual
env:
- TARGET: amd64
TARGET_ARCH: amd64
TOOLCHAIN_PKG: amd64-gcc9
timeout_in: 120m
install_script:
- - sh .cirrus-ci/pkg-install.sh qemu-nox11 ${TOOLCHAIN_PKG}
+ - sh .cirrus-ci/scripts/build/pkg-install.sh qemu-nox11 ${TOOLCHAIN_PKG}
setup_script:
- uname -a
- df -m
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Jul 7, 10:41 AM (17 h, 51 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
34794380
Default Alt Text
D36257.id109539.diff (23 KB)
Attached To
Mode
D36257: Pre-commit CI with CIRRUS-CI
Attached
Detach File
Event Timeline
Log In to Comment