Re: [PATCH] make miniconfig (take 2)

From: Rob Landley
Date: Sat Nov 26 2005 - 10:52:08 EST


On Saturday 26 November 2005 08:19, Pavel Machek wrote:
> > Also, zappable lines tend to clump, so if it gets 2 zappable lines in a
> > row it could speculatively try zapping 2 at a time to see if it makes
> > faster progress. (The down side is the extra allnoconfig runs for
> > backing up and iterating through on failures to see _which_ ones made a
> > difference. That's not low-hanging fruit, may not be edible at all...)
>
> Can't you just filter out all the comments beforehand?

The problem is that the comments aren't all comments. The
# CONFIG_BLAH is not set
comments are actually like negative dentries specifying "CONFIG_BLAH=n", and
otherwise it's unspecified which means you get the default. (They look like
comments, but they have meaning and yanking them can change behavior.)

This is noticeable if you feed a script through oldconfig, where everything
that isn't specified one way or the other gets the default setting (which
might as well be from randconfig). But even allnoconfig has a lot of "y"
entries in the resulting script, and some of them (like CONFIG_KALLSYMS or
CONFIG_DEBUG_BUGVERBOSE) we may very well want to switch off.

Try this:

make allnoconfig
grep -v "^#" .config | grep -v "^$" > .config2
mv .config2 .config
make oldconfig

On the other hand, if you instead mv .config2 to allno.config and make
allnoconfig, you get something that matches the original .config back. And I
haven't seen an "# blah is not set" line wind up in a miniconfig yet.

My understanding is that if you set the right symbol to open up the menu that
a symbol you want to switch off is in, then not specifying a symbol in that
menu leads allnoconfig to switch it off, since otherwise it would have to be
specified. It's only closed menus that get the defaults. So if you
originally created your .config through menuconfig, the "# is not set" lines
should never be essential. I think. (By the way: note that the contents of
a lot of submenus never actually get written out at all if their guard symbol
is switched off. Look at firewire or i2o support in
allnoconfig's .config...)

(I spent a lot of time poking at this to make miniconfig work back under
2.6.10. And the busybox CONFIG_ vs ENABLE_ stuff, too...)

Then again I still haven't figured out why running the shrinker script against
allnoconfig's config insists that CONFIG_PM=y still has to be set or the
behavior changes. Something I need to look at one of these days...

In any case, 99% of the time we should be able to ignore the comments and that
lets us skip large chunks of config and should be a noticeable speedup. A
fallback to handle cases where the "is not set" comments change stuff may be
sheer paranoia, but I can't be sure it's never necessary just yet...

> Pavel

Rob
--
Steve Ballmer: Innovation! Inigo Montoya: You keep using that word.
I do not think it means what you think it means.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/