Subject: Re: bin/36168: usr.bin/config without ecalloc/friends is harder to compile on older hosts
To: None <gnats-bugs@netbsd.org>
From: Marc Tooley <netbsdMLpostNO@spam.quake.ca>
List: netbsd-bugs
Date: 04/18/2007 15:15:42
> On Wed, Apr 18, 2007 at 07:10:00PM +0000, Marc Tooley wrote:
> > >Fix:
> >
> > Back out the removal of the functions, I guess. Tests here
> > indicate it seems to work just fine.
>
> This is hardly a bug. With even older systems (pre gcc 3.3) you
> won't be able to compile the kernel - not a lot different to this
> scenario.
>
> "build.sh tools" is your friend, sorry about the inconvenience.
>
> Martin
I'm aware it's not a bug/malfunction. I'm also aware of build.sh. It's
part of the reason I was forced to create another 10k build script that
cleans up after every update/build cycle when iterating through the
eight individual arch/version combos I track. build.sh isn't so
friendly.
This problem was send-pr'd because:
. it's yet another barrier to classic-style kernel compilation; a
barrier that didn't exist prior to the unnecessary removal of those
functions.
. it increases inter-dependencies unnecessarily
. an entire tool chain shouldn't need to be rebuilt if the host machine
provides an adequate compiler.
. make'ing manually one step harder for all machines older than.. Aug
2006. "UPDATING" does not mention this.
In essence, this send-pr is the "I've been solving little problems like
this for hours now. Here's the one that exceeded my patience
threshold."
I guess my point was, why increase complexity this way? The functions
are perhaps two lines a piece, so what is lost by making config(1) as
self-contained as possible by rolling back part of this change?
Honestly: ecalloc()?
Now people like me must expend additional effort to maintain a parallel
source tree if we wish to continue building fresh kernels as documented
here:
http://www.netbsd.org/Documentation/kernel/#how_to_build_a_kernel
... but without the enormous build.sh overhead or the enormous system
upgrade overhead.
I'm cognisant of the risks of using an older toolchain to build a new
software; however, since the kernel itself is essentially monolithic it
doesn't necessarily follow that the environment should make this much
of a difference to kernel compilation as it does to userland.
Meanwhile, we now have a needless libutil dependency apparently in the
name of code consolidation.
I'm not talking about prehistoric machines either. I realise there's a
point in time prior to which it's impossible to build a recent kernel.
Still, changes like this decrease the ability of hobbiests to
track -current. Not all of us can afford to spend the rapidly
increasing amount of time necessary to participate in this particular
march of progress.
For the record, this machine can compile a -current kernel just fine.
3.99.23 was stocked with gcc 4.1.2, and the resulting kernel (after I
fixed config) appears to boot on the target hardware.