On Thu, 12 Jan 2012 12:17:57 +0100
Luigi Rizzo <ri...@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 <ri...@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
>> > >> > <ri...@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 <ri...@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@freebsd.org mailing list
>> > >> http://lists.freebsd.org/mailman/listinfo/freebsd-current
>> > >> To unsubscribe, send any mail to
>> > >> "freebsd-current-unsubscr...@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@freebsd.org mailing list
>> http://lists.freebsd.org/mailman/listinfo/freebsd-current
>> To unsubscribe, send any mail to
>> "freebsd-current-unsubscr...@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)
@@ -29,6 +29,7 @@
 # /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.
@@ -215,6 +216,7 @@
 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
@@ -381,6 +383,7 @@
        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:
        @echo
        @echo
"--------------------------------------------------------------" @@
-768,12 +771,19 @@ 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
 
 #
@@ -798,17 +808,24 @@
        @echo ">>> Kernel build for ${_kernel} started on `LC_ALL=C
date`" @echo
"--------------------------------------------------------------" @echo
"===> ${_kernel}"
-       mkdir -p ${KRNLOBJDIR}
+       mkdir -p ${KRNLOBJDIR}/${_kernel}
 .if !defined(NO_KERNELCONFIG)
        @echo
        @echo
"--------------------------------------------------------------" @echo
">>> stage 1: configuring the kernel" @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)
        @echo
        @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 <r...@freebsd.org>
_______________________________________________
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"

Reply via email to