[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Make, make, make. . .



Keith Lucas wrote:

> Because they didn't think very carefully about this stuff, their DAG
> is broken. The build scripts rely on multiple passes across the source
> to generate everything correctly. So basically, every so often you get
> these "odd" problems, with things linking incompatible stuff that gets
> solved by a complete re-build which only takes about TWO HOURS to just
> check what needs recompiling.
> 
> By contrast, it only takes about 2 1/2 hours if it needs to build
> everything.

That's what happen with Mozilla. There are three passes over the whole
tree and the difference between an empty 'make' with nothing to do (just
checking) and a full build is something like the empty make taking
30%-40% of the time a full build takes (an awful lot on my Pentium
225!).

> I can counter every example of "a foo that happens to work" with a "a
> foo that didn't" example. If your dependency graph has breaks in it,
> you're at risk from finding that every time you add a dependency. That
> you haven't hit the problems yet doesn't mean you will, but it doesn't
> mean you won't. And finding it means something might not build right
> but might not generate the right errors either..

I had that happen to me even in my small 35kloc project!

I would like to point out that I have "weird" dependencies and that my
tree is laid out for "human consumption", but still I have no problem
with non-recursive makes. You just gets rules like this one:

foo/bar.cpp: foo/bar.h include/foo.h

> It's like the difference between testing the program by running it a
> few times with different data, and using a mathematical verification
> to show there are no defects.

Exactly.

-- 
Pierre Phaneuf
Systems Exorcist

---------------------------------------------------------------------
To unsubscribe, e-mail: linuxgames-unsubscribe@sunsite.auc.dk
For additional commands, e-mail: linuxgames-help@sunsite.auc.dk