From 3b25fbd435d9ee6d47af7128014528e2fadfb5e5 Mon Sep 17 00:00:00 2001 From: YONETANI Tomokazu Date: Tue, 10 Feb 2009 21:35:13 +0900 Subject: [PATCH] Add two variables to adjust where to install kernel and modules. DESTLABEL common suffix added to kernel and modules directory. for example, `make DESTLABEL=test installkernel' installs them as /boot/kernel.test and /boot/modules.test, respectively. DESTKERNDIR where to install kernel and modules, /boot by default. Add /sys/conf/kern.path.mk to define default paths for kernel and modules. Also move KMOD* definitions to /sys/conf/kmod.mk where it really belongs. Submitted-by: Stefan Johannesdal with a slight modification by me. --- share/mk/bsd.kmod.mk | 1 + share/mk/bsd.own.mk | 15 --------------- sys/conf/kern.paths.mk | 15 +++++++++++++++ sys/conf/kern.post.mk | 39 +++++++++++++++++++-------------------- sys/conf/kern.pre.mk | 1 - sys/conf/kmod.mk | 12 ++++++++++-- 6 files changed, 45 insertions(+), 38 deletions(-) create mode 100644 sys/conf/kern.paths.mk diff --git a/share/mk/bsd.kmod.mk b/share/mk/bsd.kmod.mk index 61bddd6c93..c3a1b2c4e1 100644 --- a/share/mk/bsd.kmod.mk +++ b/share/mk/bsd.kmod.mk @@ -12,5 +12,6 @@ SYSDIR= ${_dir} .endif .include "${SYSDIR}/conf/kmod.mk" +.include "${SYSDIR}/conf/kern.paths.mk" .include diff --git a/share/mk/bsd.own.mk b/share/mk/bsd.own.mk index e09ffe6eef..42ca5ad1be 100644 --- a/share/mk/bsd.own.mk +++ b/share/mk/bsd.own.mk @@ -84,16 +84,6 @@ # LIBMODE Library mode. [${NOBINMODE}] # # -# KMODDIR Base path for loadable kernel modules -# (see kld(4)). [/boot/modules] -# -# KMODOWN KLD owner. [${BINOWN}] -# -# KMODGRP KLD group. [${BINGRP}] -# -# KMODMODE KLD mode. [${BINMODE}] -# -# # SHAREDIR Base path for architecture-independent ascii # text files. [/usr/share] # @@ -151,11 +141,6 @@ BINGRP?= wheel BINMODE?= 555 NOBINMODE?= 444 -KMODDIR?= /boot/modules -KMODOWN?= ${BINOWN} -KMODGRP?= ${BINGRP} -KMODMODE?= ${BINMODE} - LIBDIR?= /usr/lib GCCLIBDIR?= ${LIBDIR}/${CCVER} LIBCOMPATDIR?= /usr/lib/compat diff --git a/sys/conf/kern.paths.mk b/sys/conf/kern.paths.mk new file mode 100644 index 0000000000..93c3fd0fa9 --- /dev/null +++ b/sys/conf/kern.paths.mk @@ -0,0 +1,15 @@ +# Set up the default install paths for kernel/modules +# +# DESTLABEL add suffix to kernel and modules directory [not set] +# DESTKERNDIR where kernel and modules are to be installed [/boot] +# DESTKERNNAME name of installed kernel [${KERNEL}] +# DESTMODULESNAME name of modules directory [modules] +# +.if defined(DESTLABEL) +DESTKERNNAME?= ${KERNEL}.${DESTLABEL} +DESTMODULESNAME?= modules.${DESTLABEL} +.else +DESTKERNNAME?= ${KERNEL} +DESTMODULESNAME?= modules +.endif +DESTKERNDIR?= /boot diff --git a/sys/conf/kern.post.mk b/sys/conf/kern.post.mk index 307476053e..de0dc8e29b 100644 --- a/sys/conf/kern.post.mk +++ b/sys/conf/kern.post.mk @@ -9,6 +9,7 @@ all: ${KERNEL}.stripped _MACHINE_FWD= ${.OBJDIR} .include "$S/conf/kern.fwd.mk" +.include "$S/conf/kern.paths.mk" depend kernel-depend modules-depend: ${FORWARD_HEADERS_COOKIE} @@ -111,42 +112,40 @@ kernel-install: kernel-installable echo "You must build a kernel first." ; \ exit 1 ; \ fi -. if exists(${DESTDIR}/boot/${DESTKERNNAME}) +. if exists(${DESTDIR}${DESTKERNDIR}/${DESTKERNNAME}) .ifndef NOFSCHG - -chflags noschg ${DESTDIR}/boot/${DESTKERNNAME} + -chflags noschg ${DESTDIR}${DESTKERNDIR}/${DESTKERNNAME} .endif . ifdef NO_KERNEL_OLD_STRIP - cp -p ${DESTDIR}/boot/${DESTKERNNAME} ${DESTDIR}/boot/${DESTKERNNAME}.old + cp -p ${DESTDIR}${DESTKERNDIR}/${DESTKERNNAME} ${DESTDIR}${DESTKERNDIR}/${DESTKERNNAME}.old . else - ${OBJCOPY} --strip-debug ${DESTDIR}/boot/${DESTKERNNAME} ${DESTDIR}/boot/${DESTKERNNAME}.old + ${OBJCOPY} --strip-debug ${DESTDIR}${DESTKERNDIR}/${DESTKERNNAME} ${DESTDIR}${DESTKERNDIR}/${DESTKERNNAME}.old . endif . endif + mkdir -p ${DESTDIR}${DESTKERNDIR} .ifdef NOFSCHG ${INSTALL} -m 555 -o root -g wheel \ - ${SELECTEDKERNEL} ${DESTDIR}/boot/${DESTKERNNAME} + ${SELECTEDKERNEL} ${DESTDIR}${DESTKERNDIR}/${DESTKERNNAME} .else ${INSTALL} -m 555 -o root -g wheel -fschg \ - ${SELECTEDKERNEL} ${DESTDIR}/boot/${DESTKERNNAME} + ${SELECTEDKERNEL} ${DESTDIR}${DESTKERNDIR}/${DESTKERNNAME} .endif kernel-reinstall: kernel-installable + mkdir -p ${DESTDIR}${DESTKERNDIR} .ifdef NOFSCHG ${INSTALL} -m 555 -o root -g wheel \ - ${SELECTEDKERNEL} ${DESTDIR}/boot/${DESTKERNNAME} + ${SELECTEDKERNEL} ${DESTDIR}${DESTKERNDIR}/${DESTKERNNAME} .else ${INSTALL} -m 555 -o root -g wheel -fschg \ - ${SELECTEDKERNEL} ${DESTDIR}/boot/${DESTKERNNAME} + ${SELECTEDKERNEL} ${DESTDIR}${DESTKERNDIR}/${DESTKERNNAME} .endif -# Require DESTDIR to be manually specified when installing a -# virtual kernel. -# kernel-installable: .if ${P} == vkernel .if !defined(DESTDIR) @echo "When installing a virtual kernel, DESTDIR must be manually specified" @exit 1 -.endif .endif @if [ -f ${DESTDIR}/${DESTKERNNAME} ]; then \ echo "You need to make buildworld, installworld, and upgrade"; \ @@ -199,28 +198,28 @@ modules-tags: modules-install: .if !defined(NO_MODULES_OLD) . ifdef NO_KERNEL_OLD_STRIP - set -- ${DESTDIR}/boot/modules/*; \ + set -- ${DESTDIR}${DESTKERNDIR}/${DESTMODULESNAME}/*; \ if [ -f "$$1" ]; then \ - mkdir -p ${DESTDIR}/boot/modules.old; \ + mkdir -p ${DESTDIR}${DESTKERNDIR}/${DESTMODULESNAME}.old; \ for file; do \ - cp -p $$file ${DESTDIR}/boot/modules.old; \ + cp -p $$file ${DESTDIR}${DESTKERNDIR}/${DESTMODULESNAME}.old; \ done; \ fi . else - set -- ${DESTDIR}/boot/modules/*; \ + set -- ${DESTDIR}${DESTKERNDIR}/${DESTMODULESNAME}/*; \ if [ -f "$$1" ]; then \ - mkdir -p ${DESTDIR}/boot/modules.old; \ + mkdir -p ${DESTDIR}${DESTKERNDIR}/${DESTMODULESNAME}.old; \ for file; do \ - ${OBJCOPY} --strip-debug $$file ${DESTDIR}/boot/modules.old/$${file##*/}; \ + ${OBJCOPY} --strip-debug $$file ${DESTDIR}${DESTKERNDIR}/${DESTMODULESNAME}.old/$${file##*/}; \ done; \ fi . endif .endif - mkdir -p ${DESTDIR}/boot/modules # Ensure that the modules directory exists! + mkdir -p ${DESTDIR}${DESTKERNDIR}/${DESTMODULESNAME} # Ensure that the modules directory exists! cd $S ; env ${MKMODULESENV} ${MAKE} -f Makefile.modules install modules-reinstall: - mkdir -p ${DESTDIR}/boot/modules # Ensure that the modules directory exists! + mkdir -p ${DESTDIR}/${DESTKERNDIR}/${DESTMODULESNAME} # Ensure that the modules directory exists! cd $S ; env ${MKMODULESENV} ${MAKE} -f Makefile.modules install config.o: diff --git a/sys/conf/kern.pre.mk b/sys/conf/kern.pre.mk index 34527fa84d..7aff3883fc 100644 --- a/sys/conf/kern.pre.mk +++ b/sys/conf/kern.pre.mk @@ -106,7 +106,6 @@ SELECTEDKERNEL= ${KERNEL}.debug FULLKERNEL= ${KERNEL}.nodebug SELECTEDKERNEL= ${KERNEL}.stripped .endif -DESTKERNNAME?= ${KERNEL} MKMODULESENV= MAKEOBJDIRPREFIX=${.OBJDIR} BUILDING_WITH_KERNEL=${.OBJDIR} diff --git a/sys/conf/kmod.mk b/sys/conf/kmod.mk index 395597b5dd..cd6bf2bb14 100644 --- a/sys/conf/kmod.mk +++ b/sys/conf/kmod.mk @@ -12,7 +12,8 @@ # # KMOD The name of the kernel module to build. # -# KMODDIR Base path for kernel modules (see kld(4)). [/modules] +# KMODDIR Base path for kernel modules (see kld(4)). +# [${DESTKERNDIR}/${DESTMODULESNAME}] # # KMODOWN KLD owner. [${BINOWN}] # @@ -33,7 +34,9 @@ # # KMODDEPS List of modules which this one is dependant on # -# DESTDIR Change the tree where the module gets installed. [not set] +# DESTKERNDIR Change the tree where the kernel and the modules get +# installed. [/boot] ${DESTDIR} changes the root of the tree +# pointed to by ${DESTKERNDIR}. # # MFILES Optionally a list of interfaces used by the module. # This file contains a default list of interfaces. @@ -62,6 +65,11 @@ OBJCOPY?= objcopy KMODLOAD?= /sbin/kldload KMODUNLOAD?= /sbin/kldunload +KMODDIR?= ${DESTKERNDIR}/${DESTMODULESNAME} +KMODOWN?= ${BINOWN} +KMODGRP?= ${BINGRP} +KMODMODE?= ${BINMODE} + .include .SUFFIXES: .out .o .c .cc .cxx .C .y .l .s .S -- 2.41.0