git: 9front

Download patch

ref: 054269d06554cee4e8dbca438d005f4d50116832
parent: 6ff904abe3e2e7a295556cdfc1547229e3aeb554
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Sat Nov 16 12:49:28 EST 2024

kernel: reorganize bootfs.paq generation

We do not want to unconditionally pull in all of
/lib/firmware, when we dont have the driver for it.

So group the files into separate proto-files
and make boot/bootmkfile simply checks that the basename
of a proto file matches the basename in $OBJ to be
considered.

This way, we can also avoid including user-space usb
daemon when the kernel lacks the usb driver.

Same for machines without devsd, devfs or devusb,
theres no disk so no reason to include disk file
servers.

The bootfs.paq file is specific to the configuration,
so give it a unique name. (Just using bootfs.paq
is fine as long as theres only a single configuration,
but i want to avoid future mistakes as people copy-paste
the kernel configuration).

--- a/sys/src/9/arm64/qemu
+++ b/sys/src/9/arm64/qemu
@@ -46,7 +46,7 @@
 port
 	int cpuserver = 0;
 bootdir
+	boot
 	/$objtype/bin/paqfs
 	/$objtype/bin/auth/factotum
-	bootfs.paq
-	boot
+	$CONF.bootfs.paq	bootfs.paq
--- a/sys/src/9/bcm/pi
+++ b/sys/src/9/bcm/pi
@@ -55,7 +55,7 @@
 	int cpuserver = 0;
 
 bootdir
+	boot
 	/$objtype/bin/paqfs
 	/$objtype/bin/auth/factotum
-	bootfs.paq
-	boot
+	$CONF.bootfs.paq	bootfs.paq
--- a/sys/src/9/bcm/pi2
+++ b/sys/src/9/bcm/pi2
@@ -55,7 +55,7 @@
 	int cpuserver = 0;
 
 bootdir
+	boot
 	/$objtype/bin/paqfs
 	/$objtype/bin/auth/factotum
-	bootfs.paq
-	boot
+	$CONF.bootfs.paq	bootfs.paq
--- a/sys/src/9/bcm64/pi3
+++ b/sys/src/9/bcm64/pi3
@@ -61,7 +61,7 @@
 	int cpuserver = 0;
 
 bootdir
+	boot
 	/$objtype/bin/paqfs
 	/$objtype/bin/auth/factotum
-	bootfs.paq
-	boot
+	$CONF.bootfs.paq	bootfs.paq
--- a/sys/src/9/bcm64/pi4
+++ b/sys/src/9/bcm64/pi4
@@ -66,7 +66,7 @@
 	int cpuserver = 0;
 
 bootdir
+	boot
 	/$objtype/bin/paqfs
 	/$objtype/bin/auth/factotum
-	bootfs.paq
-	boot
+	$CONF.bootfs.paq	bootfs.paq
--- a/sys/src/9/boot/bootfs.proto
+++ b/sys/src/9/boot/bootfs.proto
@@ -1,6 +1,5 @@
 $objtype
 	bin
-		9660srv
 		awk
 		auth
 			secstore
@@ -12,15 +11,7 @@
 		cfs
 		chmod
 		dd
-		disk
-			cryptsetup
-			edisk
-			fdisk
-			prep
-		dossrv
 		echo
-		cwfs64x
-		gefs
 		grep
 		ip
 			ipconfig
@@ -31,7 +22,6 @@
 		mv
 		ndb
 			dnsgetip
-		hjfs
 		rc
 		rm
 		sed
@@ -40,24 +30,15 @@
 		test
 		tlsclient
 		unmount
-		nusb
-			usbd
-			ether
-			disk
-			kb
 		xd
 rc
 	lib
 		rcmain
 		reboot.rc 555 sys sys ../boot/reboot.rc
-		local.rc 555 sys sys ../boot/local.rc
 		net.rc 555 sys sys ../boot/net.rc
 	bin
-		fstype
-		diskparts
 		ethermultilink
 		srvtls
-		nusbrc 555 sys sys ../boot/nusbrc
 		bootrc 555 sys sys ../boot/bootrc
 tmp
 sys
@@ -66,4 +47,3 @@
 			+
 lib
 	firmware
-		+
--- a/sys/src/9/boot/bootmkfile
+++ b/sys/src/9/boot/bootmkfile
@@ -4,19 +4,26 @@
 boot:	boot.$O
 	$LD -o $target $prereq
 
-# look for proto file in order:
+# look for main proto file in order:
 #	1) $CONF.bootfs.proto		(config specific)
 #	2) bootfs.proto			(kernel specific)
 #	3) ../boot/bootfs.proto		(default generic)
 #
-BOOTFSPROTO=`{for(i in $CONF.bootfs.proto bootfs.proto ../boot/bootfs.proto) test -r $i && echo $i && exit}
+# add driver specific proto files:
+#	../boot/disk.proto	(if the kernel has devsd, devfs or devusb driver)
+#	../boot/*.proto		(if the proto basename matches in $OBJ)
+#
+BOOTFSPROTOS=\
+	`{for(i in $CONF.bootfs.proto bootfs.proto ../boot/bootfs.proto) test -r $i && echo $i && exit} \
+	`{if(~ devfs.$O $OBJ || ~ devsd.$O $OBJ || ~ devusb.$O $OBJ) echo ../boot/disk.proto} \
+	`{for(j in ../boot/*.proto){~ `{basename $j .proto}^.$O $OBJ && echo $j}}
 
-bootfs.paq:	$BOOTFSPROTO `{disk/mkfs -aos / $BOOTFSPROTO >[2]/dev/null}
-	mkdir -p bootfs
-	disk/mkfs -s / -d bootfs $BOOTFSPROTO
+$CONF.bootfs.paq bootfs.paq:D:	$BOOTFSPROTOS `{disk/mkfs -aos / $BOOTFSPROTOS >[2]/dev/null}
+	mkdir -p $CONF.bootfs
+	disk/mkfs -s / -d $CONF.bootfs $BOOTFSPROTOS
 	@{
-		cd bootfs/$objtype/bin
+		cd $CONF.bootfs/$objtype/bin
 		#strip * */* */*/* >[2]/dev/null || status=''
 	}
-	mkpaqfs -9 -b 65536 -o $target bootfs
-	rm -rf bootfs
+	mkpaqfs -9 -b 65536 -o $target $CONF.bootfs
+	rm -rf $CONF.bootfs
--- /dev/null
+++ b/sys/src/9/boot/devusb.proto
@@ -1,0 +1,10 @@
+$objtype
+	bin
+		nusb
+			usbd
+			ether
+			disk
+			kb
+rc
+	bin
+		nusbrc 555 sys sys ../boot/nusbrc
--- /dev/null
+++ b/sys/src/9/boot/disk.proto
@@ -1,0 +1,19 @@
+$objtype
+	bin
+		9660srv
+		cfs
+		cwfs64x
+		disk
+			cryptsetup
+			edisk
+			fdisk
+			prep
+		dossrv
+		gefs
+		hjfs
+rc
+	lib
+		local.rc 555 sys sys ../boot/local.rc
+	bin
+		fstype
+		diskparts
--- /dev/null
+++ b/sys/src/9/boot/ether4330.proto
@@ -1,0 +1,19 @@
+lib
+	firmware
+		bcmdhd.cal.40181
+		bcmdhd.cal.40183.26MHz
+		fw_bcm40183b1.bin
+		fw_bcm40183b2.bin
+		fw_bcm40181a0.bin
+		fw_bcm40181a2.bin
+		brcmfmac43430-sdio.bin
+		brcmfmac43430-sdio.txt
+		brcmfmac43436-sdio.bin
+		brcmfmac43436-sdio.txt
+		brcmfmac43436-sdio.clm_blob
+		brcmfmac43455-sdio.bin
+		brcmfmac43455-sdio.txt
+		brcmfmac43455-sdio.clm_blob
+		brcmfmac43456-sdio.bin
+		brcmfmac43456-sdio.txt
+		brcmfmac43456-sdio.clm_blob
--- /dev/null
+++ b/sys/src/9/boot/etheriwl.proto
@@ -1,0 +1,13 @@
+lib
+	firmware
+		iwm-8265-34
+		iwm-9260-34
+		iwn-1000
+		iwn-4965
+		iwn-5000
+		iwn-5150
+		iwn-6000
+		iwn-6005
+		iwn-6030
+		iwn-6050
+		iwn-license
--- /dev/null
+++ b/sys/src/9/boot/etherrt2860.proto
@@ -1,0 +1,3 @@
+lib
+	firmware
+		ral-rt2860
--- /dev/null
+++ b/sys/src/9/boot/etherwpi.proto
@@ -1,0 +1,3 @@
+lib
+	firmware
+		wpi-3945abg
--- a/sys/src/9/cycv/cycv
+++ b/sys/src/9/cycv/cycv
@@ -51,7 +51,7 @@
 	int cpuserver = 0;
 
 bootdir
+	boot
 	/$objtype/bin/paqfs
 	/$objtype/bin/auth/factotum
-	boot
-	bootfs.paq
+	$CONF.bootfs.paq	bootfs.paq
--- a/sys/src/9/imx8/reform
+++ b/sys/src/9/imx8/reform
@@ -60,7 +60,7 @@
 port
 	int cpuserver = 0;
 bootdir
+	boot
 	/$objtype/bin/paqfs
 	/$objtype/bin/auth/factotum
-	bootfs.paq
-	boot
+	$CONF.bootfs.paq	bootfs.paq
--- a/sys/src/9/kw/plug
+++ b/sys/src/9/kw/plug
@@ -68,7 +68,7 @@
 	int i8250freq = 3686000;
 
 bootdir
+	boot
 	/$objtype/bin/paqfs
 	/$objtype/bin/auth/factotum
-	bootfs.paq
-	boot
+	$CONF.bootfs.paq	bootfs.paq
--- a/sys/src/9/lx2k/honeycomb
+++ b/sys/src/9/lx2k/honeycomb
@@ -45,7 +45,7 @@
 port
 	int cpuserver = 0;
 bootdir
+	boot
 	/$objtype/bin/paqfs
 	/$objtype/bin/auth/factotum
-	bootfs.paq
-	boot
+	$CONF.bootfs.paq	bootfs.paq
--- a/sys/src/9/mt7688/mt7688
+++ b/sys/src/9/mt7688/mt7688
@@ -50,8 +50,7 @@
 	int cpuserver = 0;
 
 bootdir
+	boot
 	/$objtype/bin/paqfs
 	/$objtype/bin/auth/factotum
-	bootfs.paq
-	boot
-#	nvram
+	$CONF.bootfs.paq	bootfs.paq
--- a/sys/src/9/omap/beagle
+++ b/sys/src/9/omap/beagle
@@ -70,7 +70,7 @@
 	int i8250freq = 3686000;
 
 bootdir
+	boot
 	/$objtype/bin/paqfs
 	/$objtype/bin/auth/factotum
-	bootfs.paq
-	boot
+	$CONF.bootfs.paq	bootfs.paq
--- a/sys/src/9/pc/pc
+++ b/sys/src/9/pc/pc
@@ -168,7 +168,7 @@
 	int cpuserver = 0;
 
 bootdir
+	boot
 	/$objtype/bin/paqfs
 	/$objtype/bin/auth/factotum
-	bootfs.paq
-	boot
+	$CONF.bootfs.paq	bootfs.paq
--- a/sys/src/9/pc64/pc64
+++ b/sys/src/9/pc64/pc64
@@ -165,7 +165,7 @@
 	int cpuserver = 0;
 
 bootdir
+	boot
 	/$objtype/bin/paqfs
 	/$objtype/bin/auth/factotum
-	bootfs.paq
-	boot
+	$CONF.bootfs.paq	bootfs.paq
--- a/sys/src/9/port/portmkfile
+++ b/sys/src/9/port/portmkfile
@@ -30,7 +30,7 @@
 		mk 'CONF='$i
 
 clean:V:
-	rm -f *.[$OS] *.i *.root.s *.rootc.c cfs.h fs.h conf.h *.out *.m errstr.h init.h reboot.h boot bootfs.paq
+	rm -f *.[$OS] *.i *.root.s *.rootc.c cfs.h fs.h conf.h *.out *.m errstr.h init.h reboot.h boot *.bootfs.paq bootfs.paq
 	for(i in $CONFLIST $CRAPLIST)
 		mk $i.clean
 
--- a/sys/src/9/sgi/bootfs.proto
+++ /dev/null
@@ -1,40 +1,0 @@
-$objtype
-	bin
-		awk
-		auth
-			secstore
-		aux
-			kbdfs
-		bind
-		cat
-		chmod
-		dd
-		echo
-		grep
-		ip
-			ipconfig
-		ls
-		mkdir
-		mntgen
-		mount
-		mv
-		ndb
-			dnsgetip
-		ps
-		rc
-		rm
-		sed
-		sleep
-		srv
-		test
-		tlsclient
-		unmount
-		xd
-rc
-	lib
-		rcmain
-		net.rc 555 sys sys ../boot/net.rc
-	bin
-		srvtls
-		bootrc 555 sys sys ../boot/bootrc
-tmp
--- a/sys/src/9/sgi/indy
+++ b/sys/src/9/sgi/indy
@@ -44,7 +44,7 @@
 	int cpuserver = 0;
 
 bootdir
+	boot
 	/$objtype/bin/paqfs
 	/$objtype/bin/auth/factotum
-	boot
-	bootfs.paq
+	$CONF.bootfs.paq	bootfs.paq
--- a/sys/src/9/teg2/ts
+++ b/sys/src/9/teg2/ts
@@ -79,7 +79,7 @@
 	int i8250freq = 3686000;
 
 bootdir
+	boot
 	/$objtype/bin/paqfs
 	/$objtype/bin/auth/factotum
-	bootfs.paq
-	boot
+	$CONF.bootfs.paq	bootfs.paq
--- a/sys/src/9/xen/xenpcf
+++ b/sys/src/9/xen/xenpcf
@@ -51,9 +51,8 @@
 	int cpuserver = 0;
 
 bootdir
+	boot
 	/$objtype/bin/paqfs
 	/$objtype/bin/auth/factotum
-	bootfs.paq
-	boot
+	$CONF.bootfs.paq	bootfs.paq
 	xenstore
-
--- a/sys/src/9/zynq/zynq
+++ b/sys/src/9/zynq/zynq
@@ -53,7 +53,7 @@
 	int cpuserver = 0;
 
 bootdir
+	boot
 	/$objtype/bin/paqfs
 	/$objtype/bin/auth/factotum
-	boot
-	bootfs.paq
+	$CONF.bootfs.paq	bootfs.paq
--