[Rake-devel] Suggestion: allow passing of extra command-lineargstothe task

Bennett, Patrick Patrick.Bennett at inin.com
Tue Jun 15 10:04:34 EDT 2004



> -----Original Message-----
> From: rake-devel-bounces at rubyforge.org [mailto:rake-devel-
> bounces at rubyforge.org] On Behalf Of Steven Knight
> Sent: Tuesday, June 15, 2004 8:11 AM
> To: Rake Development and Discussion
> Subject: RE: [Rake-devel] Suggestion: allow passing of extra command-
> lineargstothe task
> 
> The standard paper describing the pitfalls of recursive use of Make is
> Peter Miller's "Recursive Make Considered Harmful":
> 
>         http://www.pcug.org.au/~millerp/rmch/recu-make-cons-harm.html
> 
> It's pretty much required reading these days for people working on
> software build issues.

[Bennett, Patrick] Hmm, interesting, but still not an argument against
my specific changes/recommendation, nor an argument (IMO) against nested
makefiles.  The examples listed would fail miserably with a large system
(a clean iterative build of our system on a beefy box takes about 12-14
hours).  Creating that as 'one' DAG would be... disastrous.  The
author's idea of a 'big' system seems to be a few thousand files, well,
*cough* we have a few hundred thousand.  :\ 
Realistically, a hybrid approach is often necessary, but that's more
than I really want to get into on this list.  I'd (personally) rather
focus on rake issues only.  If you want to discuss large build systems,
I'm more than willing to yack about it, but probably over the phone than
on a mailing list.  Mailing lists just aren't good places for discussion
IMO (or at least, they take way too much time ;>)

...
> Miller's paper doesn't argue against traditional hierarchical use of
> a Makefile in each subdirectory, but against structuring your build by
> recursively *invoking* the build tool in each subdirectory so that
each
> invocation has an incomplete view of only part of the dependency
graph.
> It's still possible, of course, for a user to write their build files
in
> this way, but the underlying build tool should support (and encourage)
> a global view of the dependency graph.

[Bennett, Patrick] This is what my changes to rake do.
It's *definitely* unacceptable to recursively call make (or rake in this
case) itself (spawning a new process).  If a user runs rake from the
root of a huge tree with my change, then only one rake process will ever
run.





More information about the Rake-devel mailing list