Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 9 Oct 2003 03:36:35 +1000 (EST)
From:      Bruce Evans <bde@zeta.org.au>
To:        "Adam C. Migus" <adam@migus.org>
Cc:        arch@freebsd.org
Subject:   Re: sys/conf/DEFAULT[S]
Message-ID:  <20031009032431.Y6050@gamplex.bde.org>
In-Reply-To: <51457.204.254.155.35.1065630793.squirrel@mail.migus.org>
References:  <XFMail.20030924170342.jhb@FreeBSD.org>           <20030925092319.H5418@gamplex.bde.org><49939.204.254.155.35.1064593320.squirrel@mail.migus.org> <20030927080420.N18558@gamplex.bde.org>      <49955.192.168.4.2.1065074430.squirrel@mail.migus.org>      <51310.204.254.155.35.1065622332.squirrel@mail.migus.org> <51457.204.254.155.35.1065630793.squirrel@mail.migus.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 8 Oct 2003, Adam C. Migus wrote:

> Bruce Evans said:
> > On Wed, 8 Oct 2003, Adam C. Migus wrote:
> >> ...
> >> WRT Stefan's solution, simply nest two includes on the first line,
> >> like so:
> >>
> >> head -1 KERNEL
> >> include SUB1
> >>
> >> head -1 SUB1
> >> include SUB2
> >>
> >> This will cause config to fail in the same manner it did before,
> >> with his patch.
> >
> > Er, but this works for me.  I test with SUB2 having the following:
> > 1) include GENERIC
> > 2) same contents as GENERIC
> > 3) same contents as GENERIC except for no comment lines at
> > beginning.

> Here's my broken config (with Stefan's patch) compile, run, error,
> output and config exerpts:

This still works for me :-).

> root@caster:ttyp4:config# make clean
> rm -f config config.o main.o lang.o mkmakefile.o mkheaders.o
> mkoptions.o config.8.gz config.8.cat.gz lang.c config.c y.tab.c
> y.tab.h
> root@caster:ttyp4:config# make CFLAGS="`make -V CFLAGS` -DYYDEBUG=1"
> Warning: Object directory not changed from original
> /src/freebsd/CURRENT/src/usr.sbin/config
> yacc -d config.y
> cp y.tab.c config.c
> cc -O -pipe -mcpu=pentiumpro -I.
> -I/src/freebsd/CURRENT/src/usr.sbin/config   -Wsystem-headers
> -Werror  -DYYDEBUG=1 -c config.c
> cc -O -pipe -mcpu=pentiumpro -I.
> -I/src/freebsd/CURRENT/src/usr.sbin/config   -Wsystem-headers
> -Werror  -DYYDEBUG=1 -c main.c
> lex -t  lang.l > lang.c
> cc -O -pipe -mcpu=pentiumpro -I.
> -I/src/freebsd/CURRENT/src/usr.sbin/config   -Wsystem-headers
> -Werror  -DYYDEBUG=1 -c lang.c
> cc -O -pipe -mcpu=pentiumpro -I.
> -I/src/freebsd/CURRENT/src/usr.sbin/config   -Wsystem-headers
> -Werror  -DYYDEBUG=1 -c mkmakefile.c
> cc -O -pipe -mcpu=pentiumpro -I.
> -I/src/freebsd/CURRENT/src/usr.sbin/config   -Wsystem-headers
> -Werror  -DYYDEBUG=1 -c mkheaders.c
> cc -O -pipe -mcpu=pentiumpro -I.
> -I/src/freebsd/CURRENT/src/usr.sbin/config   -Wsystem-headers
> -Werror  -DYYDEBUG=1 -c mkoptions.c
> cc -O -pipe -mcpu=pentiumpro -I.
> -I/src/freebsd/CURRENT/src/usr.sbin/config   -Wsystem-headers
> -Werror  -DYYDEBUG=1  -o config config.o main.o lang.o mkmakefile.o
> mkheaders.o mkoptions.o -ll
> gzip -cn config.8 > config.8.gz
> root@caster:ttyp4:config# cp config /tmp
> root@caster:ttyp4:config# cd ../../sys/i386/conf
> root@caster:ttyp4:conf# export YYDEBUG=1
> root@caster:ttyp4:conf# /tmp/config DISKLESS_SMP_MAC
> yydebug: state 0, reducing by rule 3 (Many_specs :)
> yydebug: after reduction, shifting from state 0 to state 2
> yydebug: state 2, reading 274 (INCLUDE)
> yydebug: state 2, shifting to state 19
> yydebug: state 19, reading 275 (ID)
> yydebug: state 19, shifting to state 46
> yydebug: state 46, reading 273 (SEMICOLON)
> yydebug: state 46, shifting to state 56
> yydebug: state 56, reducing by rule 20 (Config_spec : INCLUDE ID
> SEMICOLON)

This seems to be from a patching error.  Stefan's patch moved
"INCLUDE ID SEMICOLON" from Config_spec to Spec.

> yydebug: after reduction, shifting from state 2 to state 22
> yydebug: state 22, reading 274 (INCLUDE)
> config: SMP_MAC:1: syntax error
> root@caster:ttyp4:conf# head -3 DISKLESS_SMP_MAC SMP_MAC MAC
> ==> DISKLESS_SMP_MAC <==
> include SMP_MAC
>
> ident           DISKLESS_SMP_MAC
>
> ==> SMP_MAC <==
> include MAC
>
> #ident          SMP_MAC
>
> ==> MAC <==
> #
> # MAC -- Generic kernel configuration file for FreeBSD/i386 w/MAC
> #

My debugging output shows the move:

%%%
yydebug: state 0, reducing by rule 3 (Many_specs :)
yydebug: after reduction, shifting from state 0 to state 2
yydebug: state 2, reading 274 (INCLUDE)
yydebug: state 2, shifting to state 19
yydebug: state 19, reading 275 (ID)
yydebug: state 19, shifting to state 46
yydebug: state 46, reading 273 (SEMICOLON)
yydebug: state 46, shifting to state 56
yydebug: state 56, reducing by rule 6 (Spec : INCLUDE ID SEMICOLON)
                               ^^^^^^  ^^^^

[The first difference is here]

yydebug: after reduction, shifting from state 2 to state 20
yydebug: state 20, reducing by rule 2 (Many_specs : Many_specs Spec)
yydebug: after reduction, shifting from state 0 to state 2
yydebug: state 2, reading 274 (INCLUDE)
yydebug: state 2, shifting to state 19
yydebug: state 19, reading 275 (ID)
yydebug: state 19, shifting to state 46
yydebug: state 46, reading 273 (SEMICOLON)
yydebug: state 46, shifting to state 56
yydebug: state 56, reducing by rule 6 (Spec : INCLUDE ID SEMICOLON)
yydebug: after reduction, shifting from state 2 to state 20
yydebug: state 20, reducing by rule 2 (Many_specs : Many_specs Spec)
yydebug: after reduction, shifting from state 0 to state 2
yydebug: state 2, reading 273 (SEMICOLON)
yydebug: state 2, shifting to state 18
yydebug: state 18, reducing by rule 7 (Spec : SEMICOLON)
yydebug: after reduction, shifting from state 2 to state 20
yydebug: state 20, reducing by rule 2 (Many_specs : Many_specs Spec)
yydebug: after reduction, shifting from state 0 to state 2
yydebug: state 2, reading 273 (SEMICOLON)
yydebug: state 2, shifting to state 18
yydebug: state 18, reducing by rule 7 (Spec : SEMICOLON)
yydebug: after reduction, shifting from state 2 to state 20
yydebug: state 20, reducing by rule 2 (Many_specs : Many_specs Spec)
yydebug: after reduction, shifting from state 0 to state 2
yydebug: state 2, reading 273 (SEMICOLON)
yydebug: state 2, shifting to state 18
yydebug: state 18, reducing by rule 7 (Spec : SEMICOLON)
yydebug: after reduction, shifting from state 2 to state 20
yydebug: state 20, reducing by rule 2 (Many_specs : Many_specs Spec)
yydebug: after reduction, shifting from state 0 to state 2
yydebug: state 2, reading 273 (SEMICOLON)
yydebug: state 2, shifting to state 18
yydebug: state 18, reducing by rule 7 (Spec : SEMICOLON)
yydebug: after reduction, shifting from state 2 to state 20
yydebug: state 20, reducing by rule 2 (Many_specs : Many_specs Spec)
yydebug: after reduction, shifting from state 0 to state 2
yydebug: state 2, reading 273 (SEMICOLON)
yydebug: state 2, shifting to state 18
yydebug: state 18, reducing by rule 7 (Spec : SEMICOLON)
yydebug: after reduction, shifting from state 2 to state 20
yydebug: state 20, reducing by rule 2 (Many_specs : Many_specs Spec)
yydebug: after reduction, shifting from state 0 to state 2
yydebug: state 2, reading 273 (SEMICOLON)
yydebug: state 2, shifting to state 18
yydebug: state 18, reducing by rule 7 (Spec : SEMICOLON)
yydebug: after reduction, shifting from state 2 to state 20
yydebug: state 20, reducing by rule 2 (Many_specs : Many_specs Spec)
yydebug: after reduction, shifting from state 0 to state 2
yydebug: state 2, reading 266 (IDENT)
yydebug: state 2, shifting to state 11
yydebug: state 11, reading 275 (ID)
yydebug: state 11, shifting to state 35
yydebug: state 35, reducing by rule 15 (Config_spec : IDENT ID)
yydebug: after reduction, shifting from state 2 to state 22
yydebug: state 22, reading 273 (SEMICOLON)
yydebug: state 22, shifting to state 48
yydebug: state 48, reducing by rule 5 (Spec : Config_spec SEMICOLON)
yydebug: after reduction, shifting from state 2 to state 20
yydebug: state 20, reducing by rule 2 (Many_specs : Many_specs Spec)
yydebug: after reduction, shifting from state 0 to state 2
yydebug: state 2, reading 0 (end-of-file)
yydebug: state 2, reducing by rule 1 (Configuration : Many_specs)
yydebug: after reduction, shifting from state 0 to state 1
Specify machine type, e.g. ``machine i386''
%%%

Bruce



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20031009032431.Y6050>