potential future proofing fix for aicasm build.

Dimitry Andric dimitry at andric.com
Thu May 2 12:46:50 UTC 2013


On 2013-05-02 13:55, Steven Hartland wrote:
> From: "Dimitry Andric" <dimitry at andric.com>
>> On 2013-05-02 11:54, Steven Hartland wrote:
>>> From: "Dimitry Andric" <dimitry at andric.com>
...
>>> I think what I did was the following:-
>>> 1. make buildkernel KERNCONF=MYCONF -j10 # failed due to aicasm
>>
>> And this is what I cannot reproduce.  Works just fine, either with or without -j.
>
> Have just confirmed this reproduces the issue with a recent head source on 8.3-RELEASE
> machine.

Note this is the other way around; the original poster was talking about
building "an older 9.0 src on a machine running HEAD".


> 1. rm -rf /usr/obj
> 2. make buildkernel KERNCONF=MYCONF -j10 # Fails with:-
> cc1: warnings being treated as errors
> aicasm_gram.c:1539: warning: no previous prototype for 'yyparse'

Yes, this is because r243906 removed the prototype, since newer versions
of yacc generate the prototype for yyparse themselves.

Here, lex and yacc should really be (also) built as part of the kernel's
bootstrap tools.  Currently, they are only part of the bootstrap tools
for buildworld, which explains the events below.


> 3. make buildworld

So here the correct versions of lex and yacc are built...


> 4. make buildkernel KERNCONF=MYCONF -j10 # Still fails with:-
> cc1: warnings being treated as errors
> aicasm_gram.c:1539: warning: no previous prototype for 'yyparse'

However, since the .c file is newer than the .y file, it does not get
regenerated...


> Fix is:
> 1. rm -rf /usr/obj/usr/src/sys/MYCONF
> 2. make buildkernel KERNCONF=MYCONF -j10 # Now works

And with this, you have forced regeneration of the aicasm_gram.c file,
so now it builds correctly.

E.g., I think you might get away with just rm'ing all the generated
aicasm*.c files.


More information about the freebsd-hackers mailing list