:: commit 6d5efbdc159770ca844f75c40888ba2d90ec6e23

mintsuki <mintsuki@protonmail.com> — 2020-07-06 20:59

parents: e7669cadae

Make test cases buildable on FreeBSD

diff --git a/Makefile b/Makefile
index 0055482b..d69f1781 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,6 @@
-.PHONY: all clean echfs-test ext2-test
+OS := $(shell uname)
+
+.PHONY: all clean echfs-test ext2-test test.img
 
 all:
 	$(MAKE) -C src all
@@ -7,53 +9,35 @@ all:
 clean:
 	$(MAKE) -C src clean
 
-echfs-test: all
-	$(MAKE) -C test
+test.img:
 	rm -f test.img
-	dd if=/dev/zero bs=1M count=0 seek=64 of=test.img
-	parted -s test.img mklabel gpt
-	parted -s test.img mkpart primary 2048s 6143s
-	parted -s test.img mkpart primary 6144s 131038s
-	echfs-utils -g -p1 test.img quick-format 512
-	echfs-utils -g -p1 test.img import test/test.elf boot/test.elf
-	echfs-utils -g -p1 test.img import test/qloader2.cfg qloader2.cfg
-	./qloader2-install src/qloader2.bin test.img 2048
-	qemu-system-x86_64 -hda test.img -debugcon stdio
+	dd if=/dev/zero bs=1M count=0 seek=4096 of=test.img
+ifeq ($(OS), Linux)
+	parted -s test.img mklabel msdos
+	parted -s test.img mkpart primary 100%
+else ifeq ($(OS), FreeBSD)
+	sudo mdconfig -a -t vnode -f test.img -u md9
+	sudo gpart create -s mbr md9
+	sudo gpart add -a 4k -t '!14' md9
+	sudo mdconfig -d -u md9
+endif
 
-ext2-test: all
+echfs-test: test.img all
 	$(MAKE) -C test
-	rm -rf test.img test_image/
-	mkdir test_image
-	dd if=/dev/zero bs=1M count=0 seek=64 of=test.img
-	parted -s test.img mklabel gpt
-	parted -s test.img mkpart primary 2048s 6143s
-	parted -s test.img mkpart primary 6144s 131038s
-	sudo losetup -Pf --show test.img > loopback_dev
-	sudo partprobe `cat loopback_dev`
-	sudo mkfs.ext2 `cat loopback_dev`p2
-	sudo mount `cat loopback_dev`p2 test_image
-	sudo mkdir test_image/boot
-	sudo cp test/test.elf test_image/boot/
-	sudo cp test/qloader2.cfg test_image/
-	sync
-	sudo umount test_image/
-	sudo losetup -d `cat loopback_dev`
-	rm -rf test_image loopback_dev
-	./qloader2-install src/qloader2.bin test.img 2048
+	echfs-utils -m -p0 test.img quick-format 32768
+	echfs-utils -m -p0 test.img import test/test.elf boot/test.elf
+	echfs-utils -m -p0 test.img import test/qloader2.cfg qloader2.cfg
+	./qloader2-install src/qloader2.bin test.img
 	qemu-system-x86_64 -hda test.img -debugcon stdio
 
-fat32-test: all
+ext2-test: test.img all
 	$(MAKE) -C test
-	rm -rf test.img test_image/
+	rm -rf test_image/
 	mkdir test_image
-	dd if=/dev/zero bs=1M count=0 seek=64 of=test.img
-	parted -s test.img mklabel gpt
-	parted -s test.img mkpart primary 2048s 6143s
-	parted -s test.img mkpart primary 6144s 131038s
 	sudo losetup -Pf --show test.img > loopback_dev
 	sudo partprobe `cat loopback_dev`
-	sudo mkfs.fat -F 32 `cat loopback_dev`p2
-	sudo mount `cat loopback_dev`p2 test_image
+	sudo mkfs.ext2 `cat loopback_dev`p1
+	sudo mount `cat loopback_dev`p1 test_image
 	sudo mkdir test_image/boot
 	sudo cp test/test.elf test_image/boot/
 	sudo cp test/qloader2.cfg test_image/
@@ -61,37 +45,33 @@ fat32-test: all
 	sudo umount test_image/
 	sudo losetup -d `cat loopback_dev`
 	rm -rf test_image loopback_dev
-	./qloader2-install src/qloader2.bin test.img 2048
+	./qloader2-install src/qloader2.bin test.img
 	qemu-system-x86_64 -hda test.img -debugcon stdio
 
-fat32-test-big-clusters: all
+fat32-test: test.img all
 	$(MAKE) -C test
-	rm -rf test.img test_image/
+	rm -rf test_image/
 	mkdir test_image
-
-	# Setup partitions
-	dd if=/dev/zero bs=1M count=0 seek=512 of=test.img
-	parted -s test.img mklabel gpt
-	parted -s test.img mkpart primary 2048s 6143s
-	parted -s test.img mkpart primary 6144s 1042432s
-
+ifeq ($(OS), Linux)
 	sudo losetup -Pf --show test.img > loopback_dev
 	sudo partprobe `cat loopback_dev`
-	sudo mkfs.fat -s 8 -F 32 `cat loopback_dev`p2
-	sudo mount `cat loopback_dev`p2 test_image
+	sudo mkfs.fat -F 32 `cat loopback_dev`p1
+	sudo mount `cat loopback_dev`p1 test_image
+else ifeq ($(OS), FreeBSD)
+	sudo mdconfig -a -t vnode -f test.img -u md9
+	sudo newfs_msdos -F 32 /dev/md9s1
+	sudo mount -t msdosfs /dev/md9s1 test_image
+endif
 	sudo mkdir test_image/boot
-
-	# Copy some random files to fill up the fats to span multiple clusters.
-	# This will make the test more credible.
-	sudo find ./src -type f -exec cp -n {} test_image/ \;
-	sudo find ./src -type f -exec cp -n {} test_image/boot/ \;
-
-	# Copy the actual important files
 	sudo cp test/test.elf test_image/boot/
 	sudo cp test/qloader2.cfg test_image/
 	sync
 	sudo umount test_image/
+ifeq ($(OS), Linux)
 	sudo losetup -d `cat loopback_dev`
+else ifeq ($(OS), FreeBSD)
+	sudo mdconfig -d -u md9
+endif
 	rm -rf test_image loopback_dev
-	./qloader2-install src/qloader2.bin test.img 2048
+	./qloader2-install src/qloader2.bin test.img
 	qemu-system-x86_64 -hda test.img -debugcon stdio
diff --git a/test/qloader2.cfg b/test/qloader2.cfg
index 75cbf38d..4f193f67 100644
--- a/test/qloader2.cfg
+++ b/test/qloader2.cfg
@@ -4,21 +4,21 @@ TIMEOUT=3
 
 PROTOCOL=stivale
 
-KERNEL_PARTITION=1
+KERNEL_PARTITION=0
 KERNEL_PATH=boot/test.elf
 KERNEL_CMDLINE=something
 
-MODULE_PARTITION=1
+MODULE_PARTITION=0
 MODULE_PATH=qloader2.cfg
 MODULE_STRING=something here
 
 :Test 2
 
-KERNEL_PARTITION=1
+KERNEL_PARTITION=0
 KERNEL_PATH=/boot/test.elf
 KERNEL_PROTO=stivale
 KERNEL_CMDLINE=none
 
-MODULE_PARTITION=1
+MODULE_PARTITION=0
 MODULE_PATH=qloader2.cfg
 MODULE_STRING=something here
tab: 248 wrap: offon