Newer yacc needed for building world
Willem Jan Withagen
wjw at digiware.nl
Sat Apr 25 13:50:33 UTC 2015
On 24/04/2015 12:05, Garrett Cooper wrote:
> On Apr 24, 2015, at 3:03, Garrett Cooper <yaneurabeya at gmail.com>
> wrote:
>
>> On Apr 24, 2015, at 2:59, Garrett Cooper <yaneurabeya at gmail.com>
>> wrote:
>>
>>> On Apr 23, 2015, at 2:05, Willem Jan Withagen <wjw at digiware.nl>
>>> wrote:
>>>
>>>> On 22/04/2015 23:37, Ed Maste wrote:
>>>>> On 22 April 2015 at 15:55, Willem Jan Withagen
>>>>> <wjw at digiware.nl> wrote:
>>>>>>
>>>>>>> Yes:
>>>>>>> https://lists.freebsd.org/pipermail/freebsd-current/2015-February/054740.html
>>>>>>>
>>>>>>
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
But this is not enough to make yacc part of the build tools??
>>>>>
>>>>> yacc is unconditionally built during bootstrap-tools as of
>>>>> r281615. What SVN rev is your tree?
>>>>>
>>>>
>>>> # svn info Path: . Working Copy Root Path: /usr/src URL:
>>>> svn://svn.freebsd.org/base/stable/10 Relative URL: ^/stable/10
>>>> Repository Root: svn://svn.freebsd.org/base Repository UUID:
>>>> ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f Revision: 281853 Node
>>>> Kind: directory Schedule: normal Last Changed Author: kib Last
>>>> Changed Rev: 281849 Last Changed Date: 2015-04-22 12:59:05
>>>> +0200 (Wed, 22 Apr 2015)
>>>>
>>>> Then I removed /usr/obj/* to get a fresh start. Removing yacc
>>>> just gets me into trouble even earlier:
>>>>
>>>> # make -j 32 buildworld . . . ---
>>>> _bootstrap-tools-usr.bin/compile_et --- --- parse.c --- yacc -d
>>>> -o parse.c
>>>> /usr/src/usr.bin/compile_et/../../contrib/com_err/parse.y yacc:
>>>> not found --- _bootstrap-tools-usr.sbin/bsnmpd/gensnmptree ---
>>>> /usr/obj/usr/src/tmp/usr/src/usr.sbin/bsnmpd/gensnmptree
>>>> created for /usr/src/usr.sbin/bsnmpd/gensnmptree ---
>>>> _bootstrap-tools-usr.bin/compile_et --- *** [parse.c] Error
>>>> code 127
>>>>
>>>> So I have relatively little further to test. Perhaps the '-j
>>>> 32' was a bit aggressive, but it gets fast where the error is.
>>>
>>> Well, that’s amusing :(. You found a new race that wasn’t present
>>> before my changes to parallelize bootstrap-tools (kerberos comes
>>> before yacc in bootstrap-tools). Do you have yacc installed on
>>> your machine? Please try out this patch. Thanks! -NGie
>>>
>>> $ svn diff Makefile.inc1 Index: Makefile.inc1
>>> ===================================================================
>>>
>>>
>>>
>>>
--- Makefile.inc1 (revision 281823)
>>> +++ Makefile.inc1 (working copy) @@ -1358,6 +1358,8 @@
>>> usr.bin/compile_et
>>>
>>> .ORDER: ${_kerberos5_bootstrap_tools:C/^/${_bt}-/g} +
>>> +${_bt}-usr.bin/compile_et: ${_bt}-usr.bin/yacc .endif
>>>
>>> bootstrap-tools: .PHONY
>>
>> It’ll also need lex too. This should be a bit more comprehensive:
>>
>> Index: Makefile.inc1
>> ===================================================================
>>
>>
>>
>>
--- Makefile.inc1 (revision 281823)
>> +++ Makefile.inc1 (working copy) @@ -1358,6 +1358,8 @@
>> usr.bin/compile_et
>>
>> .ORDER: ${_kerberos5_bootstrap_tools:C/^/${_bt}-/g} +
>> +${_bt}-usr.bin/compile_et: ${_bt}$-usr.bin/lex
>> ${_bt}-usr.bin/yacc .endif
>>
>> bootstrap-tools: .PHONY
>
> I’ll work out the finally kinks with how to spell lex and yacc…
>
> This is part of the reason why I think BOOTSTRAPPING needs to be
> kicked to the curb and everything needs to be built in parallel, but
> enough people haven’t complained about built failures, so the
> optimization remains..
>
Remember I moved /usr/bin/out of the path. Which would be different for
using an outdated yacc. Which is where the bug originally started.
This fixes the problem for a non-parallel build.
But once parallel builds (with -j > 5 ) are done, the
.for _tool in \
loop runs into trouble when _yacc is not finished/started before config
is being build.
Normally this would not be a problem as long as config is not dependant
on any of the new features/size in the yacc to be build.
--WjW
More information about the freebsd-current
mailing list