DF-4806 / modbuild.sh
#!/bin/sh # DF-4806 module build -- run as root on the DragonFly guest. # Builds ppbus.ko (with PERIPH_1284), ppc.ko, and ppi.ko from /usr/src, # out-of-tree (the audit's sys/ tree is never modified). # # $1 = ppi.c variant: "stock" | "armed" | "fixed" # stock : /usr/src/sys/dev/misc/ppi/ppi.c as shipped # armed : stock + arming.diff (RF_SHAREABLE added at ppi.c:160 only) # fixed : stock + fix.diff (RF_SHAREABLE + correct handler arg) set -e V="${1:-stock}" MOD=/root/ppimod mkdir -p $MOD/{ppbus,ppc,ppi} # --- PERIPH_1284 kernel option (in-tree only in LINT64) ------------------- # The kmod machinery auto-creates an empty opt_ppb_1284.h (satisfying the # #include); the option itself comes from CFLAGS. cat > $MOD/opt_ppc.h <<'EOF' /* empty: default ppc configuration */ EOF # --- ppbus ---------------------------------------------------------------- cat > $MOD/ppbus/Makefile <<'EOF' .PATH: /usr/src/sys/bus/ppbus KMOD= ppbus SRCS= bus_if.h device_if.h ppbus_if.h ppbus_if.c \ opt_ppb_1284.h \ ppb_1284.c ppb_base.c ppb_msq.c ppbconf.c COPTS+= -DPERIPH_1284 .include <bsd.kmod.mk> EOF # --- ppc ------------------------------------------------------------------ cp $MOD/opt_ppc.h $MOD/ppc/opt_ppc.h 2>/dev/null || true cat > $MOD/ppc/Makefile <<'EOF' .PATH: /usr/src/sys/dev/misc/ppc /usr/src/sys/bus/ppbus /usr/src/sys/bus/isa KMOD= ppc SRCS= bus_if.h device_if.h isa_if.h ppbus_if.h opt_ppb_1284.h opt_ppc.h ppc.c COPTS+= -DPERIPH_1284 .include <bsd.kmod.mk> EOF # --- ppi ------------------------------------------------------------------ cat > $MOD/ppi/Makefile <<'EOF' .PATH: /usr/src/sys/dev/misc/ppi /usr/src/sys/bus/ppbus KMOD= ppi SRCS= bus_if.h device_if.h ppbus_if.h \ opt_ppb_1284.h ppi.c COPTS+= -DPERIPH_1284 .include <bsd.kmod.mk> EOF # --- ppi.c variant --------------------------------------------------------- cp /root/ppimod/ppi.c.orig /usr/src/sys/dev/misc/ppi/ppi.c case "$V" in armed) (cd /usr/src/sys/dev/misc/ppi && patch -s < $MOD/arming.diff) ;; fixed) (cd /usr/src/sys/dev/misc/ppi && patch -s < $MOD/fix.diff) ;; stock) ;; esac for m in ppbus ppc ppi; do (cd $MOD/$m && rm -f *.ko *.o *.h 2>/dev/null || true rm -f bus_if.h device_if.h ppbus_if.h ppbus_if.c opt_ppb_1284.h cp $MOD/opt_ppb_1284.h . 2>/dev/null || true make SYSDIR=/usr/src/sys clean >/dev/null 2>&1 || true make SYSDIR=/usr/src/sys) done echo "BUILD_OK variant=$V" |