On Thu, 12 Jan 2012 12:17:57 +0100 Luigi Rizzo <rizzo_at_iet.unipi.it> wrote: >> On Thu, Jan 12, 2012 at 12:22:50PM +0200, Aleksandr Rybalko wrote: >> > On Thu, 12 Jan 2012 11:17:39 +0100 >> > Luigi Rizzo <rizzo_at_iet.unipi.it> wrote: >> > >> > >> On Thu, Jan 12, 2012 at 01:55:39AM -0800, Garrett Cooper wrote: >> > >> > On Thu, Jan 12, 2012 at 2:06 AM, Luigi Rizzo >> > >> > <rizzo_at_iet.unipi.it> wrote: >> > >> > > On Thu, Jan 12, 2012 at 10:16:53AM +0100, Gary Jennejohn >> > >> > > wrote: >> > >> > >> On Thu, 12 Jan 2012 09:11:39 +0100 >> > >> > >> Luigi Rizzo <rizzo_at_iet.unipi.it> wrote: >> > >> > >> >> > >> > >> > usr/sbin/config assumes that the kernel config file >> > >> > >> > lives in ${src_base}/sys/${arch}/conf , which means that >> > >> > >> > if you need to build a custom kernel one needs RW >> > >> > >> > access to that directory. >> > >> > >> > >> > >> > >> > Any idea on how we can enable config to work in a >> > >> > >> > generic directory ? >> > >> > >> > >> > >> > >> > I scanned the source code usr.sbin/config and found that >> > >> > >> > it uses hardwired paths -- specifically, it looks for >> > >> > >> > the kernel source tree in "../.." and has multiple >> > >> > >> > hardwired paths such as "../../conf/". >> > >> > >> > There is also a somewhat undocumented access to a >> > >> > >> > file called DEFAULTS that extends the configuration you >> > >> > >> > pass. >> > >> > >> > >> > >> > >> > Any objections to the addition of a "-s" option to config >> > >> > >> > (8) to specify the location of the source tree ? >> > >> > >> > >> > >> > >> >> > >> > >> Seems like a good idea to me as long as the old behavior is >> > >> > >> kept. >> > >> > > >> > >> > > of course :) >> > >> > >> > >> > Why not just set KERNCONFDIR? >> > >> >> > >> The variable does not seem to be used by usr/sbin/config >> > >> >> > >> cheers >> > >> luigi >> > >> _______________________________________________ >> > >> freebsd-current_at_freebsd.org mailing list >> > >> http://lists.freebsd.org/mailman/listinfo/freebsd-current >> > >> To unsubscribe, send any mail to >> > >> "freebsd-current-unsubscribe_at_freebsd.org" >> > >> > Hi, >> > >> > ZRouter.org use just full path to config file >> > make KERNCONF=/path/to/config buildkernel >> >> It does not work: >> >> > ls -l /home/luigi/FreeBSD/pico9/qemu/PICOBSD.amd64 >> -rw-r--r-- 1 luigi wheel 4285 Jan 12 >> 11:32 /home/luigi/FreeBSD/pico9/qemu/PICOBSD.amd64 >> > make KERNCONF=/home/luigi/FreeBSD/pico9/qemu/PICOBSD.amd64 >> > buildkernel >> ERROR: Missing kernel configuration file(s) >> (/home/luigi/FreeBSD/pico9/qemu/PICOBSD.amd64). >> >> As i said, the hardwired paths in config suggest that there is >> a requirement that the config lives under the source tree and >> cannot be in a completely arbitrary position. My tests confirm that. >> So, KERNCONF=/path/to/config only works for certain values of >> /path/to/config . >> >> Of course i may be wrong but if you have direct experience >> in building a kernel whose config file name is /tmp/NOT_GENERIC >> please let me know how you do it. >> >> cheers >> luigi >> _______________________________________________ >> freebsd-current_at_freebsd.org mailing list >> http://lists.freebsd.org/mailman/listinfo/freebsd-current >> To unsubscribe, send any mail to >> "freebsd-current-unsubscribe_at_freebsd.org" Oh, yes, sorry, I forgot about Makefile.inc1 changes. Her it is: Index: Makefile.inc1 =================================================================== --- Makefile.inc1 (revision 229577) +++ Makefile.inc1 (working copy) _at__at_ -29,6 +29,7 _at__at_ # /usr/share/mk. These include: # obj depend all install clean cleandepend cleanobj +SRC_ROOT=${.CURDIR} # You are supposed to define both of these when calling Makefile.inc1 # directly. However, some old scripts don't. Cope for the moment, but # issue a new warning for a transition period. _at__at_ -215,6 +216,7 _at__at_ CROSSENV= MAKEOBJDIRPREFIX=${OBJTREE} \ MACHINE_ARCH=${TARGET_ARCH} \ MACHINE=${TARGET} \ + SRC_ROOT=${.CURDIR} \ CPUTYPE=${TARGET_CPUTYPE} .if ${OSRELDATE} < 700044 CROSSENV+= AR=gnu-ar RANLIB=gnu-ranlib _at__at_ -381,6 +383,7 _at__at_ mtree -deU -f ${.CURDIR}/etc/mtree/BIND.include.dist \ -p ${WORLDTMP}/usr/include >/dev/null .endif + mkdir -p ${WORLDTMP}/legacy/usr/include/lzma >/dev/null _legacy: _at_echo _at_echo "--------------------------------------------------------------" _at__at_ -768,12 +771,19 _at__at_ BUILDKERNELS= INSTALLKERNEL= .for _kernel in ${KERNCONF} +__absolute=${_kernel:C/^\/.*$/abs/} .if exists(${KERNCONFDIR}/${_kernel}) BUILDKERNELS+= ${_kernel} .if empty(INSTALLKERNEL) INSTALLKERNEL= ${_kernel} .endif +.elif exists(${_kernel}) && ${__absolute} == "abs" +# Kernel config with absolute path +BUILDKERNELS+= ${_kernel} +.if empty(INSTALLKERNEL) +INSTALLKERNEL= ${_kernel} .endif +.endif .endfor # _at__at_ -798,17 +808,24 _at__at_ _at_echo ">>> Kernel build for ${_kernel} started on `LC_ALL=C date`" _at_echo "--------------------------------------------------------------" _at_echo "===> ${_kernel}" - mkdir -p ${KRNLOBJDIR} + mkdir -p ${KRNLOBJDIR}/${_kernel} .if !defined(NO_KERNELCONFIG) _at_echo _at_echo "--------------------------------------------------------------" _at_echo ">>> stage 1: configuring the kernel" _at_echo "--------------------------------------------------------------" +.if ! empty(_kernel:S/^\/.*$//) cd ${KRNLCONFDIR}; \ PATH=${TMPPATH} \ config ${CONFIGARGS} -d ${KRNLOBJDIR}/${_kernel} \ ${KERNCONFDIR}/${_kernel} +.else + cd ${KRNLCONFDIR}; \ + PATH=${TMPPATH} \ + config ${CONFIGARGS} -d ${KRNLOBJDIR}/${_kernel} \ + ${_kernel} .endif +.endif .if !defined(NO_CLEAN) && !defined(NO_KERNELCLEAN) _at_echo _at_echo "--------------------------------------------------------------" P.S. somewhere I else have patch to zrouter which allow do same w/o Makefile.inc1 modification posted by Luiz Otavio O Souza, but I can't find it right now :) WBW -- Aleksandr Rybalko <ray_at_freebsd.org>Received on Thu Jan 12 2012 - 10:50:27 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:23 UTC