summaryrefslogtreecommitdiffstats
path: root/scripts/kconfig/streamline_config.pl
Commit message (Collapse)AuthorAgeFilesLines
* localmodconfig: Process source kconfig files as they are foundSteven Rostedt2013-04-291-10/+7Star
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A bug was reported that caused localmodconfig to not keep all the dependencies of ATH9K. This was caused by the kconfig file: In drivers/net/wireless/ath/Kconfig: --- if ATH_CARDS config ATH_DEBUG bool "Atheros wireless debugging" ---help--- Say Y, if you want to debug atheros wireless drivers. Right now only ath9k makes use of this. source "drivers/net/wireless/ath/ath5k/Kconfig" source "drivers/net/wireless/ath/ath9k/Kconfig" source "drivers/net/wireless/ath/carl9170/Kconfig" source "drivers/net/wireless/ath/ath6kl/Kconfig" source "drivers/net/wireless/ath/ar5523/Kconfig" source "drivers/net/wireless/ath/wil6210/Kconfig" endif --- The current way kconfig works, it processes new source files after the first file is completed. It creates an array of new source config files and when the one file is finished, it continues with the next file. Unfortunately, this means that it loses the fact that the source file is within an "if" statement, and this means that each of these source file's configs will not have the proper dependencies set. As ATH9K requires ATH_CARDS set, the localmodconfig did not see that dependency, and did not enable ATH_CARDS. When the oldconfig was run, it forced ATH9K to be disabled. Link: http://lkml.kernel.org/r/alpine.DEB.2.02.1304291022320.9234@oneiric Cc: stable@vger.kernel.org # 3.8+ Reported-by: Robert P. J. Day <rpjday@crashcourse.ca> Tested-by: Robert P. J. Day <rpjday@crashcourse.ca> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
* localmodconfig: Add debug prints for dependencies of module configsSteven Rostedt2013-04-291-0/+9
| | | | | | | | | | | | When a config for a module is added to the list to save in the final config file, add a print to show what dependencies are used. This is useful to debug when a config is disabled by the make oldconfig after localmodconfig is finished. This print only appears if the environment variable LOCALMODCONFIG_DEBUG is defined. Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
* localmodconfig: Fix localyesconfig to set to 'y' not 'm'Yuta Ando2012-10-011-0/+2
| | | | | | | | | | | | | | | | The kbuild target 'localyesconfig' has been same as 'localmodconfig' since the commit 50bce3e "kconfig/streamline_config.pl: merge local{mod,yes}config". The commit expects this script generates different configure depending on target, but it was not yet implemented. So I added code that sets to 'yes' when target is 'localyesconfig'. Link: http://lkml.kernel.org/r/1349101470-12243-1-git-send-email-yuta.and@gmail.com Cc: stable@vger.kernel.org # v3.2 Cc: linux-kbuild@vger.kernel.org Signed-off-by: Yuta Ando <yuta.and@gmail.com> Signed-off-by: Steven Rostedt <rostedt@rostedt.homelinux.com>
* localmodconfig: Use my variable for loop in streamline_config.plBill Pemberton2012-08-161-1/+1
| | | | | | | | perlcritic complains about $kconfig being reused in the foreach loop at the end of read_kconfig. Change it to a my variable. Signed-off-by: Bill Pemberton <wfp5p@virginia.edu> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
* localmodconfig: Use 3 parameter open in streamline_config.plBill Pemberton2012-08-161-16/+14Star
| | | | | | | | Convert remaining open calls to use the perl's preferred 3 parameter open. Signed-off-by: Bill Pemberton <wfp5p@virginia.edu> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
* localmodconfig: Rework find_config in streamline_config.plBill Pemberton2012-08-161-8/+6Star
| | | | | | | | | Change find_config function to read_config. It now finds the config, reads the config into an array, and returns the array. This makes it a little cleaner and changes the open to use perl's 3 option open. Signed-off-by: Bill Pemberton <wfp5p@virginia.edu> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
* localmodconfig: Set default value for ksource in streamline_config.plBill Pemberton2012-08-161-1/+1
| | | | | | | | | | Running streamline_config.pl as it's shown it in the comment header, you will get a warning about $ksource being uninitialized. This is because $ksource is set to ARGV[0], but the examples don't require any arguments. Fix by setting ksource to . if no ARGV[0] is given. Signed-off-by: Bill Pemberton <wfp5p@virginia.edu> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
* localmodconfig: Add debug environment variable LOCALMODCONFIG_DEBUGSteven Rostedt2012-06-191-0/+21
| | | | | | | | | | | | | If the environment variable LOCALMODCONFIG_DEBUG is set, then debug output will appear in the make localmodconfig. This will simplify debugging what people get with their output, as I can just tell people to do: LOCALMODCONFIG_DEBUG=1 make localmodconfig 2>out.txt and have them send me the out.txt. I'll be able to see why things are not working as they think it should be. Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
* localmodconfig: Check if configs are already set for selectsSteven Rostedt2012-06-191-11/+104
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are some cases that a required module does not have a prompt and needs to have another module enabled that selects it to be set. As localmodconfig is conservative and tries to make the minimum config without breaking the user's kernel, or keeping the user from using devices that were loaded when the lsmod was done, all modules that select this module will also be enabled. If you needed module A, but module A did not have a prompt but needed module B to be selected, localmodconfig would make sure B was still enabled. If not only B selected A, but C, D, E, F, and G also selected A, then all of those would also be included, as well as the modules they depend on. This ballooned the number of configs that localmodconfig would keep. The fix here is to process the depends first, and then record those configs that did not have a prompt and needed to be selected. After the depends are done, check what configs are needed to select the configs in the list, and if a config that selects it is already set, then we don't need to do anything else. If no config that selects the config is set, then just pick one and try again. This change brought down the number of selected modules from 290 to 67! Both before and after were run against a config that had 3095 modules enabled. Tested-by: John David Yost <johnyost@ptd.net> # AlleyTrotter Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
* localmodconfig: Read in orig config file to avoid extra processingSteven Rostedt2012-06-191-2/+24
| | | | | | | | | | | | | | | | Read in the entire config file. If there's a config that we depend on that happens to be in the core set (not a module) then we do not need to process it as a module. Currently, we follow the entire depend and selects even if they are enabled as core and not modules. By checking to make sure that we only look at modules we can drop the count a little. From one of my tests, localmodconfig went from taking 3095 set modules down to 356 before this patch, and down to 290 modules after the change. Tested-by: John David Yost <johnyost@ptd.net> # AlleyTrotter Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
* localmodconfig: Comments and cleanup for streamline_config.plSteven Rostedt2012-06-191-4/+9
| | | | | | | | | Added some more comments and cleaned up part of the the code to use a named variable instead of one of the special $1 perl variables. No functional changes. Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
* kconfig/streamline-config.pl: Fix parsing Makefile with variablesSteven Rostedt2012-01-141-0/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Thomas Lange reported that when he did a 'make localmodconfig', his config was missing the brcmsmac driver, even though he had the module loaded. Looking into this, I found the file: drivers/net/wireless/brcm80211/brcmsmac/Makefile had the following in the Makefile: MODULEPFX := brcmsmac obj-$(CONFIG_BRCMSMAC) += $(MODULEPFX).o The way streamline-config.pl works, is parsing all the obj-$(CONFIG_FOO) += foo.o lines to find that CONFIG_FOO belongs to the module foo.ko. But in this case, the brcmsmac.o was not used, but a variable in its place. By changing streamline-config.pl to remember defined variables in Makefiles and substituting them when they are used in the obj-X lines, allows Thomas (and others) to have their brcmsmac module stay configured when it is loaded and running "make localmodconfig". Reported-by: Thomas Lange <thomas-lange2@gmx.de> Tested-by: Thomas Lange <thomas-lange2@gmx.de> Cc: Arend van Spriel <arend@broadcom.com> Cc: stable@vger.kernel.org Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
* kconfig/streamline-config.pl: Simplify backslash line concatinationSteven Rostedt2012-01-141-13/+12Star
| | | | | | | | | Simplify the way lines ending with backslashes (continuation) in Makefiles is parsed. This is needed to implement a necessary fix. Tested-by: Thomas Lange <thomas-lange2@gmx.de> Cc: stable@vger.kernel.org Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
* kconfig/streamline_config.pl: use options to determine operating modeArnaud Lacombe2011-08-081-1/+13
| | | | | | | | The options introduced are --localmodconfig (default) and --localyesconfig. They match the Makefile target behavior. Cc: Steven Rostedt <rostedt@goodmis.org> Signed-off-by: Arnaud Lacombe <lacombar@gmail.com>
* kconfig/streamline_config.pl: directly access LSMOD from the environmentArnaud Lacombe2011-08-081-2/+6
| | | | | Cc: Steven Rostedt <rostedt@goodmis.org> Signed-off-by: Arnaud Lacombe <lacombar@gmail.com>
* trivial: Fix Steven's Copyright typosUwe Kleine-König2011-02-081-1/+1
| | | | | | | | | OK, the copyright allows you to write a copy, still I think the lawyers prefer the correct spelling. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> LKML-Reference: <1295899921-11333-1-git-send-email-u.kleine-koenig@pengutronix.de> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
* kconfig: Have streamline_config process menuconfigs tooSteven Rostedt2010-10-291-2/+2
| | | | | | | | | | | | | Some menuconfigs in the Kconfig files have prompts and dependencies. Currently, streamline_config misses these, and this can cause streamline_config to keep modules enabled that should not be, and even worse, not enable those that should. This patch makes streamline_config process menuconfigs just like it would process a config. Reported-by: member graysky <graysky@archlinux.us> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
* kconfig: Fix streamline_config to read multi line deps in Kconfig filesSteven Rostedt2010-10-291-1/+18
| | | | | | | | | | | | | | | | | | | I noticed that some Kconfig files have multi line dependencies that continue with a backslash. Those dependencies on the next line will be missed by streamline_config. For example: config CS89x0 tristate "CS89x0 support" depends on NET_ETHERNET && (ISA || EISA || MACH_IXDP2351 \ || ARCH_IXDP2X01 || MACH_MX31ADS) The "|| ARCH_IXDP2X01 || MACH_MX31ADS)" will not be processed. This patch adds code to handle this case. Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
* kconfig: Fix missing declaration of variable $dir in streamline_config.plhiromu2010-10-291-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Fri, Aug 17, 2010 at 01:43PM +0800, Américo Wang wrote: > Acked-by: WANG Cong <xiyou.wangcong@gmail.com> > > BTW, I think we should add "use strict;" too. Then I added "use strict;" to streamline_config.pl, I saw another warning. > Global symbol "$dir" requires explicit package name at scripts/kconfig/streamline_config.pl line 286. > Global symbol "$dir" requires explicit package name at scripts/kconfig/streamline_config.pl line 287. > Global symbol "$dir" requires explicit package name at scripts/kconfig/streamline_config.pl line 288. Then I added "my $dir;" to line 285. Cc: Américo Wang <xiyou.wangcong@gmail.com> Cc: Toralf Foerster <toralf.foerster@gmx.de> Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Cc: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> Signed-off-by: Hiromu Yakura <hiromu1996@gmail.com> LKML-Reference: <1282042158.7160.9.camel@hiromu-Macbook> [ changed to just add my in front of $dir instead of new line ] Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
* kconfig: Fix variable name typo %prompts in streamline_config.plhiromu yagura2010-10-291-2/+2
| | | | | | | | | | | | | | | | | | | When I added "use strict;" to streamline_config.pl, I saw the following warnings: > Global symbol "%prompt" requires explicit package name at scripts/kconfig/streamline_config.pl line 183. > Global symbol "%prompt" requires explicit package name at scripts/kconfig/streamline_config.pl line 368. The declaration of %prompt was incorrect, and should have been %prompts. Cc: Toralf Foerster <toralf.foerster@gmx.de> Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Cc: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> Signed-off-by: Hiromu Yakura <hiromu1996@gmail.com> LKML-Reference: <1281845597.11566.5.camel@camp10-laptop> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
* kconfig: Make localmodconfig handle environment variablesSteven Rostedt2010-10-291-1/+11
| | | | | | | | | | | | | | | | | The commit 838a2e55e6a4e9e8a10451ed2ef0f7a08dabdb04 kbuild: migrate all arch to the kconfig mainmenu upgrade Broke make localmodconfig. The reason was that it added a environment variable to the kconfig source, which the streamline_config.pl could not handle. This patch changes streamline_config.pl to handle kconfig sources using environment variables in their names. Cc: Arnaud Lacombe <lacombar@gmail.com> Cc: Sam Ravnborg <sam@ravnborg.org> Cc: Michal Marek <mmarek@suse.cz> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
* kconfig: Hide error output in find command in streamline_config.plToralf Förster2010-05-281-2/+3
| | | | | | | | | | | | Finding the list of Makefiles in streamline-config should not report errors. Also move the "chomp" to the @makefiles array instead of doing it in the for loop. This is more efficient, and does not make it any less readable by C programmers. Signed-off-by: Toralf Foerster <toralf.foerster@gmx.de> LKML-Reference: <201005262022.02928.toralf.foerster@gmx.de> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
* kconfig: Fix typo in comment in streamline_config.plToralf Foerster2010-05-281-1/+1
| | | | | | Signed-off-by: Toralf Foerster <toralf.foerster@gmx.de> LKML-Reference: <201005281025.52753.toralf.foerster@gmx.de> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
* kconfig: Make a variable local in streamline_config.plToralf Foerster2010-05-281-1/+1
| | | | | | | | | Proper perl requires that local variables should be declared with 'my', otherwise this may produce errors. Signed-off-by: Toralf Foerster <toralf.foerster@gmx.de> LKML-Reference: <201005281025.00358.toralf.foerster@gmx.de> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
* kconfig: Add LSMOD=file to override the lsmod for localmodconfigSteven Rostedt2010-02-031-11/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Doing the following: make LSMOD=file localmodconfig Will make the streamline-config code use the given file instead of lsmod. If the file is an executable, it will execute it, otherwise it will read it as text. make LSMOD=/my/local/path/lsmod localmodconfig The above will execute the lsmod in /my/local/path instead of the lsmods that may be located elsewhere. make LSMOD=embedded_board_lsmod localmodconfig The above will read the "embedded_board_lsmod" as a text file. This is useful if you are doing a cross compile and need to run the config against modules that exist on an embedded device. Note, if the LSMOD= file does is not a path, it will add the path to the object directory. That is, the above example will look for "embedded_board_lsmod" in the directory that the binary will be built in (the O=dir directory). Signed-off-by: Steven Rostedt <rostedt@goodmis.org> On branch config/linus
* kconfig: Look in both /bin and /sbin for lsmod in streamline_config.plSteven Rostedt2010-02-021-1/+14
| | | | | | | | | | Distributions now have lsmod in /bin instead of /sbin. But to handle both cases, we look for it in /sbin /bin /usr/bin and /usr/sbin. If lsmod is not found in any of those paths, it defaults to use just lsmod and hopes that it lies in the path of the user. Tested-by: Xavier Chantry <shiningxc@gmail.com> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
* kconfig: Check for if conditions in Kconfig for localmodconfigSteven Rostedt2010-01-061-0/+26
| | | | | | | | | | | | | | | | | | | | | The streamline_config.pl misses the if conditions for checking dependencies. For Kconfigs with the following construct: if MEDIA_SUPPORT config VIDEO_DEV [...] If VIDEO_DEV was enabled, the script will miss the fact that MEDIA_SUPPORT is also needed. This patch changes streamline_config.pl to include if conditions into the dependencies of configs. Reported-by: Anton Blanchard <anton@sambo.org> Tested-by: Anton Blanchard <anton@sambo.org> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
* kconfig: Fix make O=<dir> local{mod,yes}configSteven Rostedt2009-11-201-6/+6
| | | | | | | | | | When the output directory is something other than the kernel source, the streamline_config script gets confused. This patch passes in the source directory to the script so that it can find the proper files. Reported-by: Peter Zijlstra <peterz@infradead.org> Tested-by: Peter Zijlstra <peterz@infradead.org> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
* kconfig: make local .config default for streamline_configSteven Rostedt2009-08-191-4/+4
| | | | | | | | | | As Andi Kleen pointed out, most people would expect that the local .config file to be based for a streamline config. This patch changes the order of searching for a config file to consider the .config in the local directory first. Reported-by: Andi Kleen <andi@firstfloor.org> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
* kconfig: test for /boot/config-uname after /proc/config.gz in localconfigSteven Rostedt2009-08-191-0/+4
| | | | | | | | Many distros put their config in /boot/config-`uname -r`, add a check for that right after /proc/config.gz Reported-by: Alan Jenkins <sourcejedi.lkml@googlemail.com> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
* kconfig: unset IKCONFIG_PROC and clean up nestingSteven Rostedt2009-08-191-6/+3Star
| | | | | | | | | | Due to cut and paste error IKCONFIG was both set and cleared. It was suppose to be IKCONFIG_PROC to be cleared. Also cleaned up if nesting. Reported-by: Alan Jenkins <sourcejedi.lkml@googlemail.com> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
* kconfig: search for a config to base the local(mod|yes)config onSteven Rostedt2009-08-191-1/+62
| | | | | | | | | | | | | | | | | | | | | Instead of using the .config in the local directory. This patch changes streamline_config.pl to search various locations for a config. Here's the list and order of search: /proc/config.gz /boot/vmlinuz-`uname -r` vmlinux # local to the directory /lib/modules/`uname -r`/kernel/kernel/configs.ko kernel/configs.ko kernel/configs.o .config Once it finds a file that contains a config (it checks if the binary objects have configs first) it then uses it to create the .config with minimum modules needed. Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
* kconfig: enable CONFIG_IKCONFIG from streamline_config.plSteven Rostedt2009-08-191-10/+23
| | | | | | | | | | | | | | | Ingo Molnar suggested that the streamline_config.pl should enable CONFIG_IKCONFIG to keep the current config in the kernel. Then we can use scripts/extract-ikconfig to find the current modules. This patch changes streamline_config.pl to check if CONFIG_IKCONFIG is not set, and if it is not, it enables it to be a module. [ Impact: make current config options easier to find ] Reported-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
* kconfig: do not warn about modules built inSteven Rostedt2009-08-191-3/+5
| | | | | | | | | | | | | | The streamline_config.pl finds all the configs that are needed to compile the currently loaded modules. After it creates the .config file, it tests to make sure all the configs that are needed were set. It only looks at the configs that are modules, it does not look at the builtin configs. This causes unnecessary warnings about modules not being covered. Reported-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
* kconfig: streamline_config.pl do not stop with no dependsSteven Rostedt2009-08-191-5/+3Star
| | | | | | | | | | | | | | | | | If a config does not have a prompt, it must be selected. streamline_config.pl keeps track of all configs that select other configs. If a config that does not have a prompt needs to be set to enable a current module, it will include all configs that select it. Note, streamline_config.pl does not enable modules that are not already enabled. It only keeps enabled those that were enabled and might be needed to compile the current modules. The code to find the selects of a config is after the code that adds the depends. But if a config needed selects but had no dependencies, it would not be set. Because the code would stop before getting to the select. Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
* kconfig: add streamline_config.pl to scriptsSteven Rostedt2009-08-191-0/+291
streamline_config.pl is a very powerful tool. For those that install a kernel to a new box using the config file from the distribution know that it can take forever to compile the kernel. Making a custom config file that will still boot your box, but bring down the compile time of the kernel can be quit painful, and to ask someone that reported a bug to do this can be a large burdon since that person may not even know how to build a kernel. This script will perform "lsmod" to find all the modules loaded on the current running system. It will read all the Makefiles to map which CONFIG enables a module. It will read the Kconfig files to find the dependencies and selects that may be needed to support a CONFIG. Finally, it reads the .config file and removes any module "=m" that is not needed to enable the currently loaded modules. The output goes to standard out. Here's a way to run the script. From the Linux directory that holds a distribution .config. $ scripts/kconfig/streamline_config.pl arch/x86/Kconfig > config-sl $ mv .config config-save $ mv config-sl .config $ make oldconfig Now you have a .config that will still build all your modules, but also take much less time to build the kernel. Signed-off-by: Steven Rostedt <rostedt@goodmis.org>