Page MenuHomeFreeBSD

D36257.id109539.diff
No OneTemporary

D36257.id109539.diff

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

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)

Event Timeline