aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.inc12
-rw-r--r--usr.bin/mkimg/tests/Makefile20
-rwxr-xr-xusr.bin/mkimg/tests/mkimg_test.sh2
3 files changed, 21 insertions, 3 deletions
diff --git a/Makefile.inc1 b/Makefile.inc1
index fbeb0d23d12e..1f5a9641a8db 100644
--- a/Makefile.inc1
+++ b/Makefile.inc1
@@ -2342,6 +2342,8 @@ _other_bootstrap_tools+=tools/build/cross-build/fake_chflags
.endif
# mkfifo is used by sys/conf/newvers.sh
_basic_bootstrap_tools+=usr.bin/mkfifo
+# jot is needed for the mkimg tests
+_basic_bootstrap_tools+=usr.bin/jot
.if ${MK_BOOT} != "no"
# md5 is used by boot/beri (and possibly others)
diff --git a/usr.bin/mkimg/tests/Makefile b/usr.bin/mkimg/tests/Makefile
index a11a912242cd..f74ff03485a3 100644
--- a/usr.bin/mkimg/tests/Makefile
+++ b/usr.bin/mkimg/tests/Makefile
@@ -15,9 +15,25 @@ $f: $f.hex
sed -e '/^#.*/D' < ${.ALLSRC} > ${.TARGET}
.endfor
+# Note: Pre-generating this test file saves a lot of time when building on
+# emulated platforms such as QEMU. It can take about 2-5 seconds to generate
+# the test file using jot (depending on the emulated architecture) and this
+# is done for each of the 168 test configurations.
+# The effect is even more pronounced on CHERI-RISCV QEMU (emulating CHERI inside
+# QEMU adds additional run-time overhead): Running the apm_1x1_512_raw without
+# the pre-generated file takes about 108 seconds of which 102 seconds (over 95%)
+# were spent running jot -b. It's even worse on CHERI-MIPS QEMU: 187 seconds
+# for jot -b P 2097152 > /dev/null. By using a pre-generated 4MB file, the
+# slowest test variant (vtoc8_63x255_4096_vhdx) now only takes 29 seconds (of
+# which 26s are spent in hexdump -C) instead of previously 2min30s.
+${PACKAGE}FILES+= partition_data_4M.bin
+partition_data_4M.bin: Makefile
+ jot -b P 2097152 > ${.TARGET} || rm -f ${.TARGET}
+
CLEANFILES+= ${${PACKAGE}FILES}}
-rebase: .PHONY
- (cd ${.CURDIR}; /usr/libexec/atf-sh ${_REBASE_SCRIPT}.sh rebase)
+rebase: partition_data_4M.bin ${_REBASE_SCRIPT} .PHONY
+ cd ${.CURDIR}; PATH=${.OBJDIR}/..:$${PATH}:/usr/bin:/bin \
+ /usr/libexec/atf-sh ${.OBJDIR}/${_REBASE_SCRIPT} -s ${.OBJDIR} rebase
.include <bsd.test.mk>
diff --git a/usr.bin/mkimg/tests/mkimg_test.sh b/usr.bin/mkimg/tests/mkimg_test.sh
index 329f2684ac6f..5d2e93ea144d 100755
--- a/usr.bin/mkimg/tests/mkimg_test.sh
+++ b/usr.bin/mkimg/tests/mkimg_test.sh
@@ -56,7 +56,7 @@ makeimage()
if test -z "$partarg"; then
local swap ufs
swap="-p freebsd-swap::128K"
- ufs="-p freebsd-ufs:=`mkcontents P 4194304`"
+ ufs="-p freebsd-ufs:=$(atf_get_srcdir)/partition_data_4M.bin"
partarg="$ufs $swap"
fi