switch tounconditionnal boostrapping while to build the tree

Dimitry Andric dim at FreeBSD.org
Mon May 28 19:56:02 UTC 2012


On 2012-05-27 01:55, Baptiste Daroussin wrote:
> After I replace yacc(1) by byacc(1) on current, we discovered than now it is
> impossible to build 9 on current, because byacc(1) is not 100% backward
> compatible with our yacc(1). this is because building a boostrap yacc(1) is
> conditionned on the version of the host that is building world.
> 
> Looking at Makefile.inc1 I can see that lots of tools are conditionned like
> this. I think if we want to go to be able to cross build the tree (I remember
> from EuroBSDcon that this is something we want to do) then we need to remove the
> conditions and always boostrap any tool necessary to be able to build the tree.
> 
> so if no one care I'll remove the condition to boostrap at least yacc(1) and
> lex(1) on current, 9, 8 and 7.
> 
> Would be great imho to do the same for any tools needed by the build system.

It could prevent a lot of subtle (and not to subtle :) problems, but it
will also waste a lot of CPU time and energy building stuff that isn't
strictly needed.  (I'm saying this with tongue in cheek, since I'm
responsible for a lot of CPU wastage, a.k.a. clang... ;)

E.g., the bootstrapping version check mechanism which is now in place,
is really a build time optimization, comparable to running builds with
NO_CLEAN: you can shoot yourself in the foot, it's dirty, but it works
most of the time, and it is *much* faster.

I really would not want to throw all that away.  But as a compromise,
you could add an option to do "brute force bootstrapping", which ignores
all version checking, and just builds all required bootstrap tools.

The question is also what your end goal is: do you want to reach a
NetBSD style approach (basically bootstrap *everything*), or just make
the current implementation more robust?


More information about the freebsd-arch mailing list