[kbuild-devel] Why shadow trees?

2001-05-15 Thread Keith Owens

A few people have asked why my kbuild-2.5 supports shadow trees.  This
is a reasonable question, given the extra code and complexity required
to support them.  Why not just use Jeff Garzick's patch for supporting
third party drivers?

If kbuild only had to support add on, free-standing third party code
then Jeff's patch would do the job.  But some people have a larger
problem, their code replaces part of the existing kernel.  A short list:

kdb Mostly free standing but it updates ~ 18 existing kernel files,
and that is not counting the vmlinux.lds changes in each
architecture.

xfs Almost all free standing but it updates ~ 10 existing kernel
files.

Donald Becker's drivers.
Every one replaces existing kernel code.  It is not just
Donald's drivers that have this problem, every new version of
an existing driver falls into this category.  Copying the
entire kernel just to patch a couple of files is
unsatisfactory.

Architecture dependent code.
Most architectures have additional and replacement code that
has not been merged into the main tree yet.  In many cases if
these patches are applied to the base source tree then the
source will not compile for other architectures.

The aim of shadow trees is to keep a pristine, Linus blessed source
tree.  The extra code shadows the base tree, using multiple layers if
that is what you need.  I want to be able to compile

  i386 from 2.4.4 base
  ia64 from 2.4.4 base + ia64 shadow tree
  i386 from 2.4.4 base + kdb shadow tree
  ia64 from 2.4.4 base + ia64 shadow tree + kdb shadow tree

Repeat for alpha, sparc etc.  Add xfs, jfs, ext3 etc. over the above
architectures.  When 2.4.5 comes out, replace the base tree, make any
changes required in the shadow files to match 2.4.5 and compile again.

Shadow trees support people developing or using large and relatively
independent update sets.  Without shadow tree support you are doomed to
a separate source tree for every combination.  That duplicates 120Mb of
source which is bad enough.  But the real problem comes when you make a
change in one of the patch sets and then have to extract and duplicate
that change to every other source tree.  It gets even worse when you
change the base kernel version, you have to extract all the changes
from each duplicated source tree, build new trees based on the new base
and try to apply the changes from the previous version.

Shadow trees do not completely remove these problems but it does remove
the need to reproduce changes in multiple separate trees.  It also
means that upgrading to a new base kernel requires one set of changes
for each shadow tree, instead of for each combination that you are
supporting.



___
kbuild-devel mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/kbuild-devel



[kbuild-devel] Re: CML2 design philosophy heads-up

2001-05-15 Thread Eric S. Raymond

Jes Sorensen [EMAIL PROTECTED]:
 If Ray wants to fix things, it's just fine with me.

I have corrected the Mac dependencies as Ray directed.
  
 Eric Does this mean you'll take over maintaining the CML2 rules files
 Eric for the m68k port, so I don't have to?  That would be wonderful.
 
 For a start, so far there has been no reason whatsoever to change the
 format of definitions.

The judgment of the kbuild team is unanimous that you are mistaken on this.
That's the five people (excluding me) who wrote and maintained the CML1 code.
*They* said that code had to go, Linus has concurred with their judgment, 
and the argument is over.

 So far you have only been irritating developers for no reason. What I
 asked you to do is to NOT change whatever config options developers
 developers felt were necessary to introduce. If you want to change the
 format of the config.in files go ahead. Messing around with the config
 options themselves is *not* for you to do, nor are you to impose a
 more restrictive space for people to work in.

If you persist in misunderstanding what I am doing, you are neither
going to be able to influence my behavior nor to persuade other people
that it is wrong.  Listen carefully, please:

1. The CML2 system neither changes the CONFIG_ symbol namespace nor 
   assumes any changes in it.  (Earlier versions did, but Greg Banks
   showed me how to avoid needing to.)

2. The ruleset changes I have made simplify the configuration process,
   but they do *not* in any way restrict the space of configurations 
   that are possible.  By design, every valid (consistent) configuration
   in CML1 can be generated in CML2.  I treat departures from that rule
   as rulesfile bugs and fix them (as I just did at Ray Knight's instruction).

3. I do not have (nor do I seek) the power to impose anything on anyone.

You really ought to give CML2 a technical evaluation yourself before you
flame me again.  Much of what you seem to think you know is not true.
-- 
a href=http://www.tuxedo.org/~esr/;Eric S. Raymond/a

According to the National Crime Survey administered by the Bureau of
the Census and the National Institute of Justice, it was found that
only 12 percent of those who use a gun to resist assault are injured,
as are 17 percent of those who use a gun to resist robbery. These
percentages are 27 and 25 percent, respectively, if they passively
comply with the felon's demands. Three times as many were injured if
they used other means of resistance.
-- G. Kleck, Policy Lessons from Recent Gun Control Research,

___
kbuild-devel mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/kbuild-devel