>Number:         187712
>Category:       kern
>Synopsis:       config(8) does not respect KERNCONFDIR
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Tue Mar 18 22:20:00 UTC 2014
>Closed-Date:
>Last-Modified:
>Originator:     Alan Somers
>Release:        11.0 CURRENT
>Organization:
Spectra Logic
>Environment:
FreeBSD alans-fbsd-head 11.0-CURRENT FreeBSD 11.0-CURRENT #40 r263266: Mon Mar 
17 13:07:35 MDT 2014     
al...@ns1.eng.sldomain.com:/vmpool/obj/usr/home/alans/freebsd/head/sys/GENERIC  
amd64
>Description:
When doing a buildkernel, you can set the make variable KERNCONFDIR if the 
kernel config file is in a location other than sys/${ARCH}/conf.  However, if 
your kernel config file uses the "include" statement to include another config 
file, config(8) will not search in KERNCONFDIR to find the included file.  My 
patch makes config(8) aware of KERNCONFDIR when processing the "include" 
statement, and causes make to set KERNCONFDIR when invoking config(8).

This bug is the more general case of ports/164242.
>How-To-Repeat:
# cd /usr/src
# cp sys/amd64/conf/GENERIC  /tmp/GENERIC_dup
# echo "include GENERIC_dup" > /tmp/GENERIC2
# make KERNCONFDIR="/tmp" KERNCONF=GENERIC2 buildkernel
--------------------------------------------------------------
>Fix:
Apply attached patch

Patch attached with submission follows:

Index: Makefile.inc1
===================================================================
--- Makefile.inc1       (revision 263266)
+++ Makefile.inc1       (working copy)
@@ -1013,7 +1013,7 @@
        @echo ">>> stage 1: configuring the kernel"
        @echo "--------------------------------------------------------------"
        cd ${KRNLCONFDIR}; \
-               PATH=${TMPPATH} \
+               PATH=${TMPPATH} KERNCONFDIR=${KERNCONFDIR} \
                    config ${CONFIGARGS} -d ${KRNLOBJDIR}/${_kernel} \
                        ${KERNCONFDIR}/${_kernel}
 .endif
Index: usr.sbin/config/lang.l
===================================================================
--- usr.sbin/config/lang.l      (revision 263266)
+++ usr.sbin/config/lang.l      (working copy)
@@ -34,6 +34,7 @@
 #include <assert.h>
 #include <ctype.h>
 #include <err.h>
+#include <stdlib.h>
 #include <string.h>
 #include "y.tab.h"
 #include "config.h"
@@ -258,6 +259,7 @@
        FILE *fp;
        struct incl *in;
        char *fnamebuf;
+       char *kernconfdir;
 
        fnamebuf = NULL;
        fp = fopen(fname, "r");
@@ -269,6 +271,16 @@
                }
        }
        if (fp == NULL) {
+               kernconfdir = getenv("KERNCONFDIR");
+               if (kernconfdir != NULL) {
+                       asprintf(&fnamebuf, "%s/%s", kernconfdir, fname);
+                       if (fnamebuf != NULL) {
+                               fp = fopen(fnamebuf, "r");
+                               free(fnamebuf);
+                       }
+               }
+       }
+       if (fp == NULL) {
                yyerror("cannot open included file");
                return (-1);
        }


>Release-Note:
>Audit-Trail:
>Unformatted:
 >>> Kernel build for GENERIC2 started on Tue Mar 18 12:13:27 MDT 2014
 --------------------------------------------------------------
 ===> GENERIC2
 mkdir -p /vmpool/obj/usr/home/alans/freebsd/head/sys
 
 --------------------------------------------------------------
 >>> stage 1: configuring the kernel
 --------------------------------------------------------------
 cd /usr/home/alans/freebsd/head/sys/amd64/conf;  
PATH=/vmpool/obj/usr/home/alans/freebsd/head/tmp/legacy/usr/sbin:/vmpool/obj/usr/home/alans/freebsd/head/tmp/legacy/usr/bin:/vmpool/obj/usr/home/alans/freebsd/head/tmp/legacy/usr/games:/vmpool/obj/usr/home
 
/alans/freebsd/head/tmp/legacy/bin:/vmpool/obj/usr/home/alans/freebsd/head/tmp/usr/sbin:/vmpool/obj/usr/home/alans/freebsd/head/tmp/usr/bin:/vmpool/obj/usr/home/alans/freebsd/head/tmp/usr/games:/sbin:/bin:/usr/sbin:/usr/bin
  config  -d /vmpool/obj/usr/ho me/alans/freebsd/head/sys/GENERIC2  
/tmp/GENERIC2
 config: /tmp/GENERIC2:2: cannot open included file
 *** Error code 1
 
 
_______________________________________________
freebsd-bugs@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-bugs
To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"

Reply via email to