Re: source code reorg makefiles

2009-05-27 Thread Alex Rousskov
On 05/11/2009 06:08 AM, Robert Collins wrote:
 I have one small request vis-a-vis the source code reorg.
 
 Please don't undo the non-recursive make support. I put a lot of effort
 into getting it where it was up to (even though that wasn't propogated
 across the entire code base). It makes a substantial difference to
 correctness, performance and ease of use of incremental builds.
 
 Where the goal is to split out a Makefile, I suggest the use of an
 include to incorporate smaller files.
 
 I can see a number of regressions in this to-date, which is why I'm
 asking that we not let it slide anymore.

I am not against non-recursive Makefiles as such, but I do not think it
is accurate to characterize the mess the SourceLayout project inherited
as a non-recursive or recursive design. It is just a mess with no
sense of direction or style. Whatever effort was spent in moving towards
one design goal is not really visible behind the problems that remained
and/or were added on top.

Moving towards recursive make was easier for me because the concept is
better understood, better documented, and is arguably simpler to
implement (dependency loops aside). We can reverse the direction now if
that's the consensus.


Here is the good news: Regardless of the non/recursive decision, most of
the SourceLayout changes are valid and useful. They properly organize
the sources files. If we decide that non-recursive make is the goal, it
would be much easier to convert to that style now (or later).


Do all modern environments have good support for large non-recursive
projects? Can somebody provide an example of a large project using
non-recursive Makefiles? Or is that just a nice idea that never really
took flight and is not being optimized/designed for?

Thank you,

Alex.



Re: source code reorg makefiles

2009-05-27 Thread Robert Collins
On Wed, 2009-05-27 at 16:31 -0600, Alex Rousskov wrote:

 Here is the good news: Regardless of the non/recursive decision, most
 of
 the SourceLayout changes are valid and useful. They properly organize
 the sources files. If we decide that non-recursive make is the goal,
 it
 would be much easier to convert to that style now (or later).

Great.

 Do all modern environments have good support for large non-recursive
 projects? Can somebody provide an example of a large project using
 non-recursive Makefiles? Or is that just a nice idea that never really
 took flight and is not being optimized/designed for?

Without going out and doing an audit of other projects, I can't state
specifics about where nonrecursive make is/isn't used.

The autotools toolchain, which we are using, has tolerably good support
for non-recursive make, and it is improving over time.

I suspect that most large projects don't use non-recursive make, simply
because they have generally been created some time ago before toolchain
support existed at all.

I do know that CMake, SCons, WAFfle, bake, cook, and other such
toolchains all use a global-dependency-graph approach (which is the same
as non-recursive make).

-Rob


signature.asc
Description: This is a digitally signed message part


Re: source code reorg makefiles

2009-05-27 Thread Alex Rousskov
On 05/27/2009 05:45 PM, Robert Collins wrote:
 On Wed, 2009-05-27 at 16:31 -0600, Alex Rousskov wrote:
 Do all modern environments have good support for large non-recursive
 projects? Can somebody provide an example of a large project using
 non-recursive Makefiles? Or is that just a nice idea that never really
 took flight and is not being optimized/designed for?
 
 Without going out and doing an audit of other projects, I can't state
 specifics about where nonrecursive make is/isn't used.
 
 The autotools toolchain, which we are using, has tolerably good support
 for non-recursive make, and it is improving over time.
 
 I suspect that most large projects don't use non-recursive make, simply
 because they have generally been created some time ago before toolchain
 support existed at all.
 
 I do know that CMake, SCons, WAFfle, bake, cook, and other such
 toolchains all use a global-dependency-graph approach (which is the same
 as non-recursive make).

This does not sound very encouraging. It is obviously not your fault
that there are no *well-known* examples of large projects using
non-recursive makes. However, your remarks seem to imply that as long as
we are using autotools, migrating to non-recursive makes will force us
to use less popular parts of the toolchain (to put it mildly). Given
Squid size, we may end up on the cutting edge of autotools use in that
context.

This sounds like a recipe for serious autotools pains. Do you think I am
being too pessimistic? If not, are those autotools pains worth the
advantages offered by non-recursive Makefiles?

Thank you,

Alex.


source code reorg makefiles

2009-05-11 Thread Robert Collins
I have one small request vis-a-vis the source code reorg.

Please don't undo the non-recursive make support. I put a lot of effort
into getting it where it was up to (even though that wasn't propogated
across the entire code base). It makes a substantial difference to
correctness, performance and ease of use of incremental builds.

Where the goal is to split out a Makefile, I suggest the use of an
include to incorporate smaller files.

I can see a number of regressions in this to-date, which is why I'm
asking that we not let it slide anymore.

-Rob


signature.asc
Description: This is a digitally signed message part


Re: source code reorg makefiles

2009-05-11 Thread Amos Jeffries

Robert Collins wrote:

I have one small request vis-a-vis the source code reorg.

Please don't undo the non-recursive make support. I put a lot of effort
into getting it where it was up to (even though that wasn't propogated
across the entire code base). It makes a substantial difference to
correctness, performance and ease of use of incremental builds.


Do you mean the DiskIO/* and fs/*/* stuff?



Where the goal is to split out a Makefile, I suggest the use of an
include to incorporate smaller files.



We are doing that.. (Common.am and TestHeaders.am etc)


I can see a number of regressions in this to-date, which is why I'm
asking that we not let it slide anymore.

-Rob


Can you explain a bit more detail please? what are you seeing us do 
wrong? we are not trying to remove anything at this point AFAIK.


Amos
--
Please be using
  Current Stable Squid 2.7.STABLE6 or 3.0.STABLE15
  Current Beta Squid 3.1.0.7


Re: source code reorg makefiles

2009-05-11 Thread Robert Collins
On Tue, 2009-05-12 at 01:48 +1200, Amos Jeffries wrote:

 Can you explain a bit more detail please? what are you seeing us do 
 wrong? we are not trying to remove anything at this point AFAIK.

acl is the one I noticed; but I had the others building non-recursively
too.

Non-recursive make is where make builds objects in directories without
reinvoking make. Instead it holds a single build graph and can handle
more complex dependencies safely.

-Rob


signature.asc
Description: This is a digitally signed message part