Re: diet-kconfig: a script to trim unneeded kconfigs

From: Takashi Iwai
Date: Mon Sep 22 2008 - 06:02:07 EST


At Fri, 19 Sep 2008 16:55:51 -0700,
Chris Li wrote:
>
> On Fri, Sep 19, 2008 at 9:01 AM, Takashi Iwai <tiwai@xxxxxxx> wrote:
> > Yes. Your stuff would be actually helpful for people who want
> > a really slim kernel config.
>
> Incidentally, I wrote such a script as well. In 64 lines of python code.
> I attach the script in question in the mail. I use a approach very
> similar to yours. But I work around some of the nasty part.

Thanks, I'll check yours too soon.

> It needs to start with kernel config has most of the modules enabled.
> Most of the kernel config from the linux distribution is like that.
> Then it try to parse the Kbuild looking for what kernel config produce
> what module. It is not a 1 to 1 mapping.
>
> Once we have the mapping. It open /proc/modules to go over every
> module. Remove the config which can produce those module from the
> mapping.
>
> Now we have a blacklist of config produce modules but not the one we want.
>
> Then the last stage is just open a config file and filter out the config
> option on the blacklist. Write the result to a new config file.

I think a whitelist would be useful, too, e.g. for hotplug devices
like usb.

> I avoid arch/ and firmware/ because it is nasty. I figure module in
> arch/ is small enough I don't mind building it. And the firmware directory,
> if I don't build the module loads it. Those firmware will automatically skipped
> any way.

Agreed.

> The little tricky part is some thing like this:
> ========================
> ifeq ($(CONFIG_BLK_DEV_CMD640), m)
> obj-m += cmd640.o
> endif
> ========================
> Internally it get convert it into:
> "obj-$(CONFIG_BLK_DEV_CMD640) += cmd640.o"

This should be fixed in Makefile.
Care to submit a patch?


Takashi
--
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/