1. 16 6月, 2013 1 次提交
    • A
      kconfig: Fix defconfig when one choice menu selects options that another choice menu depends on · fbe98bb9
      Arve Hjønnevåg 提交于
      The defconfig and Kconfig combination below, which is based on 3.10-rc4
      Kconfigs, resulted in several options getting set to "m" instead of "y".
      
      defconfig.choice:
      ---8<---
      CONFIG_MODULES=y
      CONFIG_USB_ZERO=y
      ---8<---
      
      Kconfig.choice:
      ---8<---
      menuconfig MODULES
      	bool "Enable loadable module support"
      
      config CONFIGFS_FS
      	tristate "Userspace-driven configuration filesystem"
      
      config OCFS2_FS
              tristate "OCFS2 file system support"
              depends on CONFIGFS_FS
              select CRC32
      
      config USB_LIBCOMPOSITE
      	tristate
      	select CONFIGFS_FS
      
      choice
      	tristate "USB Gadget Drivers"
      	default USB_ETH
      
      config USB_ZERO
      	tristate "Gadget Zero (DEVELOPMENT)"
      	select USB_LIBCOMPOSITE
      
      config USB_ETH
      	tristate "Ethernet Gadget (with CDC Ethernet support)"
      	select USB_LIBCOMPOSITE
      
      endchoice
      
      config CRC32
              tristate "CRC32/CRC32c functions"
              default y
      
      choice
              prompt "CRC32 implementation"
              depends on CRC32
              default CRC32_SLICEBY8
      
      config CRC32_SLICEBY8
              bool "Slice by 8 bytes"
      
      endchoice
      ---8<---
      
      $ scripts/kconfig/conf --defconfig=defconfig.choice Kconfig.choice
      
      would result in:
      
      .config:
      ---8<---
      CONFIG_MODULES=y
      CONFIG_CONFIGFS_FS=m
      CONFIG_USB_LIBCOMPOSITE=m
      CONFIG_USB_ZERO=m
      CONFIG_CRC32=y
      CONFIG_CRC32_SLICEBY8=y
      ---8<---
      
      when the expected result would be:
      
      .config:
      ---8<---
      CONFIG_MODULES=y
      CONFIG_CONFIGFS_FS=y
      CONFIG_USB_LIBCOMPOSITE=y
      CONFIG_USB_ZERO=y
      CONFIG_CRC32=y
      CONFIG_CRC32_SLICEBY8=y
      ---8<---
      Signed-off-by: NArve Hjønnevåg <arve@android.com>
      [yann.morin.1998@free.fr: add the resulting .config to commit log,
                                remove unneeded USB_GADGET from the defconfig]
      Tested-by: N"Yann E. MORIN" <yann.morin.1998@free.fr>
      Reviewed-by: N"Yann E. MORIN" <yann.morin.1998@free.fr>
      Signed-off-by: NYann E. MORIN <yann.morin.1998@free.fr>
      fbe98bb9
  2. 27 4月, 2013 1 次提交
  3. 25 4月, 2013 4 次提交
    • Y
      kconfig: implement KCONFIG_PROBABILITY for randconfig · e43956e6
      Yann E. MORIN 提交于
      Currently the odds to set each symbol is (rounded):
          booleans:   y: 50%          n: 50%
          tristates:  y: 33%  m: 33%  n: 33%
      
      Introduce a KCONFIG_PROBABILITY environment variable to tweak the
      probabilities (in percentage), as such:
          KCONFIG_PROBABILITY     y:n split           y:m:n split
          -----------------------------------------------------------------
      [1] unset or empty          50  : 50            33  : 33  : 34
      [2] N                        N  : 100-N         N/2 : N/2 : 100-N
          N:M                     N+M : 100-(N+M)      N  :  M  : 100-(N+M)
          N:M:L                    N  : 100-N          M  :  L  : 100-(M+L)
      
      [1] The current behaviour is kept as default, for backward compatibility
      [2] The solution initially implemented by Peter for Buildroot, see:
          http://git.buildroot.org/buildroot/commit/?id=3435c1afb5Signed-off-by: NPeter Korsgaard <jacmet@uclibc.org>
      [yann.morin.1998@free.fr: add to Documentation/]
      Signed-off-by: N"Yann E. MORIN" <yann.morin.1998@free.fr>
      e43956e6
    • Y
      kconfig: fix randomising choice entries in presence of KCONFIG_ALLCONFIG · 422c809f
      Yann E. MORIN 提交于
      Currently, randconfig does randomise choice entries, unless KCONFIG_ALLCONFIG
      is specified.
      
      For example, given those two files (Thomas' test-case):
      
          ---8<--- Config.test.in
          config OPTIONA
              bool "Option A"
      
          choice
              prompt "This is a choice"
      
          config CHOICE_OPTIONA
              bool "Choice Option A"
      
          config CHOICE_OPTIONB
              bool "Choice Option B"
      
          endchoice
      
          config OPTIONB
              bool "Option B"
          ---8<--- Config.test.in
      
          ---8<--- config.defaults
          CONFIG_OPTIONA=y
          ---8<--- config.defaults
      
      And running:
          ./scripts/kconfig/conf --randconfig Config.test.in
      
      does properly randomise the two choice symbols (and the two booleans).
      
      However, running:
          KCONFIG_ALLCONFIG=config.defaults \
          ./scripts/kconfig/conf --randconfig Config.test.in
      
      does *not* reandomise the two choice entries, and only CHOICE_OPTIONA
      will ever be selected. (OPTIONA will always be set (expected), and
      OPTIONB will be be properly randomised (expected).)
      
      This patch defers setting that a choice has a value until a symbol for
      that choice is indeed set, so that choices are properly randomised when
      KCONFIG_ALLCONFIG is set, but not if a symbol for that choice is set.
      
      Also, as a side-efect, this patch fixes the following case:
      
          ---8<---
          choice
          config OPTION_A
              bool "Option A"
          config OPTION_B
              bool "Option B"
          config OPTION_C
              bool "Option C"
          endchoice
          ---8<---
      
      which could previously generate such .config files:
      
          ---8<---                            ---8<---
          CONFIG_OPTION_A=y                   CONFIG_OPTION_A=y
          CONFIG_OPTION_B=y                   # CONFIG_OPTION_B is not set
          # CONFIG_OPTION_C is not set        CONFIG_OPTION_C=y
          ---8<---                            ---8<---
      
      Ie., the first entry in a choice is always set, plus zero or one of
      the other options may be set.
      
      This patch ensures that only one option may be set for a choice.
      Reported-by: NThomas Petazzoni <thomas.petazzoni@free-electrons.com>
      Signed-off-by: N"Yann E. MORIN" <yann.morin.1998@free.fr>
      Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
      Cc: Michal Marek <mmarek@suse.cz>
      Cc: Sam Ravnborg <sam@ravnborg.org>
      Cc: Arnaud Lacombe <lacombar@gmail.com>
      
      ---
      Changes v2 -> v3
        - ensure only one symbol is set in a choice
      
      Changes v1 -> v2:
        - further postpone setting that a choice has a value until
          one is indeed set
        - do not print symbols that are part of an invisible choice
      422c809f
    • Y
      kconfig: do not override symbols already set · cfa98f2e
      Yann E. MORIN 提交于
      For randconfig, if a list of required symbols is specified with
      KCONFIG_ALLCONFIG, such symbols do not "have a value" as per
      sym_has_value(), but have the "valid" flag set.
      Signed-off-by: N"Yann E. MORIN" <yann.morin.1998@free.fr>
      cfa98f2e
    • Y
      kconfig: fix randconfig tristate detection · 61fa0e17
      Yann E. MORIN 提交于
      Because the modules' symbole (CONFIG_MODULES) may not yet be set when
      we check a symbol's tristate capabilty, we'll always find that tristate
      symbols are booleans, even if we randomly decided that to enable modules:
      sym_get_type(sym) always return boolean for tristates when modules_sym
      has not been previously set to 'y' *and* its value calculated *and* its
      visibility calculated, both of which only occur after we randomly assign
      values to symbols.
      
      Fix that by looking at the raw type of symbols. Tristate set to 'm' will
      be promoted to 'y' when their values will be later calculated.
      Signed-off-by: N"Yann E. MORIN" <yann.morin.1998@free.fr>
      61fa0e17
  4. 14 7月, 2012 1 次提交
  5. 13 4月, 2012 2 次提交
  6. 26 1月, 2012 1 次提交
    • A
      kconfig: fix new choices being skipped upon config update · 5d09598d
      Arnaud Lacombe 提交于
      Running `oldconfig' after any of the following configuration change:
      
      either trivial addition, such as:
      
      config A
      	bool "A"
      
      choice
      	prompt "Choice ?"
      	depends on A
      
      	config CHOICE_B
      		bool "Choice B"
      
      	config CHOICE_C
      		bool "Choice C"
      endchoice
      
      or more tricky change:
      
      OLD KCONFIG                      |  NEW KCONFIG
                                       |
                                       |  config A
                                       |          bool "A"
                                       |
      choice                           |  choice
              prompt "Choice ?"        |          prompt "Choice ?"
                                       |
              config CHOICE_C          |          config CHOICE_C
                      bool "Choice C"  |                  bool "Choice C"
                                       |
              config CHOICE_D          |          config CHOICE_D
                      bool "Choice D"  |                  bool "Choice D"
      endchoice                        |
                                       |          config CHOICE_E
                                       |                  bool "Choice E"
                                       |                  depends on A
                                       |  endchoice
      
      will not cause the choice to be considered as NEW, and thus not be
      asked. The cause of this behavior is that choice's novelty are computed
      statically right after the saved configuration has been read. At this
      point, the new dependency's value is still unknown and asserted to be
      `no'. Moreover, no update to this decision is made afterward.
      
      Correct this by dynamically evaluating a choice's novelty, and removing the
      static evaluation.
      Reported-and-tested-by: NUwe Kleine-König <u.kleine-koenig@pengutronix.de>
      Signed-off-by: NArnaud Lacombe <lacombar@gmail.com>
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      5d09598d
  7. 19 12月, 2011 1 次提交
    • P
      kconfig: use xfwrite wrapper function to silence warnings · 70cc01e7
      Peter Foley 提交于
      Use the xfwrite wrapper function defined in lkc.h to check the return value of
      fwrite and silence these warnings.
      
        HOSTCC  scripts/kconfig/zconf.tab.o
      scripts/kconfig/zconf.tab.c: In function 'header_print_comment':
      /usr/src/lto/scripts/kconfig/confdata.c:551:10: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result
      scripts/kconfig/zconf.tab.c: In function 'kconfig_print_comment':
      /usr/src/lto/scripts/kconfig/confdata.c:467:10: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result
      Signed-off-by: NPeter Foley <pefoley2@verizon.net>
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      70cc01e7
  8. 30 8月, 2011 1 次提交
  9. 30 7月, 2011 1 次提交
  10. 18 7月, 2011 1 次提交
  11. 01 7月, 2011 1 次提交
    • A
      kconfig: introduce specialized printer · e54e692b
      Arnaud Lacombe 提交于
      Make conf_write_symbol() grammar agnostic to be able to use it from different
      code path. These path pass a printer callback which will print a symbol's name
      and its value in different format.
      
      conf_write_symbol()'s job become mostly only to prepare a string for the
      printer. This avoid to have to pass specialized flag to generic
      functions
      Signed-off-by: NArnaud Lacombe <lacombar@gmail.com>
      [mmarek: rebased on top of de125187 (kconfig: autogenerated config_is_xxx
      macro)]
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      e54e692b
  12. 07 6月, 2011 4 次提交
  13. 25 5月, 2011 1 次提交
  14. 24 5月, 2011 1 次提交
  15. 17 5月, 2011 1 次提交
  16. 18 4月, 2011 1 次提交
  17. 15 12月, 2010 3 次提交
  18. 02 11月, 2010 1 次提交
  19. 04 10月, 2010 1 次提交
  20. 01 10月, 2010 1 次提交
    • N
      kconfig: Don't go out from read config loop when you read new symbol · 8bea7548
      Naohiro Aota 提交于
      commit 8baefd30 of linux-next replaced
      a `switch()' statement with some `if()' statements, but left `break's
      in the `switch()' statement untouched. This cause read config loop to
      exit and so "make oldconfig" is not much usable (see below).
      
      > $ make oldconfig
      ><snip>
      > scripts/kconfig/conf --oldconfig Kconfig
      > #
      > # using defaults found in /boot/config-2.6.34-ccs-r1
      > #
      > *
      > * Restart config...
      > *
      > *
      > * General setup
      > *
      > Prompt for development and/or incomplete code/drivers (EXPERIMENTAL) [N/y/?] (NEW)
      
      (I've already have "CONFIG_EXPERIMENTAL=y" in the old config file. But
      that's not read here.)
      
      This patch should fix this problem.
      Signed-off-by: NNaohiro Aota <naota@elisp.net>
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      8bea7548
  21. 20 9月, 2010 3 次提交
  22. 17 8月, 2010 2 次提交
  23. 15 8月, 2010 1 次提交
    • S
      kconfig: fix savedefconfig with choice marked optional · 84062dd3
      Sam Ravnborg 提交于
      savedefconfig failed to save the correct minimal config
      when it encountered a choice marked optional.
      
      Consider following minimal configuration:
      $cat Kconfig
      choice
      	prompt "choice"
      	optional
      
      config A
      	bool "a"
      
      config B
      	bool "b"
      
      endchoice
      
      $cat .config | grep -v ^#
      CONFIG_A=y
      
      $conf --savedefconfig=defconfig Kconfig
      
      would before this fix result in an empty file, because
      kconfig would assume that CONFIG_A=y is a default value.
      But because the choice is optional the default is that
      both A and B are =n.
      
      Fix so we handle optional choices correct.
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      84062dd3
  24. 13 8月, 2010 1 次提交
  25. 12 8月, 2010 2 次提交
    • S
      kconfig: fix tristate choice with minimal config · a64b44ea
      Sam Ravnborg 提交于
      If a minimal config did not specify the value
      of all choice values, the resulting configuration
      could have wrong values.
      
      Consider following example:
      config M
              def_bool y
              option modules
      choice
              prompt "choice list"
      config A
              tristate "a"
      config B
      	tristate "b"
      endchoice
      
      With a defconfig like this:
      CONFIG_M=y
      CONFIG_A=y
      
      The resulting configuration would have
      
          CONFIG_A=m
      
      which was unexpected.
      
      The problem was not not all choice values were set and thus
      kconfig calculated a wrong value.
      
      The fix is to set all choice values when we
      read a defconfig files.
      
      conf_set_all_new_symbols() is refactored such that
      random choice values are now handled by a dedicated function.
      And new choice values are set by set_all_choice_values().
      
      This was not the minimal fix, but the fix that resulted
      in the most readable code.
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      Reported-by: NArve Hjønnevåg <arve@android.com>
      Tested-by: NArve Hjønnevåg <arve@android.com>
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      a64b44ea
    • S
      kconfig: fix savedefconfig for tristate choices · 801690ca
      Sam Ravnborg 提交于
      savedefconfig failed to save choice symbols equal to 'y'
      for tristate choices.
      This resulted in this value being lost.
      
      In particular is fixes an issue where
      
      	make ARCH=avr32 atngw100_defconfig
      	make ARCH=avr32 savedefconfig
      	cp defconfig arch/avr32/configs/atngw100_defconfig
      	make ARCH=avr32 atngw100_defconfig
      	diff -u .config .config.old
      
      failed to produce an identical .config.
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      801690ca
  26. 03 8月, 2010 2 次提交
    • S
      kconfig: add savedefconfig · 7cf3d73b
      Sam Ravnborg 提交于
      savedefconfig will save a minimal config to a file
      named "defconfig".
      
      The config symbols are saved in the same order as
      they appear in the menu structure so it should
      be possible to map them to the relevant menus
      if desired.
      
      The implementation was tested against several minimal
      configs for arm which was created using brute-force.
      
      There was one regression related to default numbers
      which had their valid range further limited by another symbol.
      
      Sample:
      
      config FOO
      	int "foo"
      	default 4
      
      config BAR
      	int "bar"
      	range 0 FOO
      
      If FOO is set to 3 then BAR cannot take a value higher than 3.
      But the current implementation will set BAR equal to 4.
      
      This is seldomly used and the final configuration is OK,
      and the fix was non-trivial.
      So it was documented in the code and left as is.
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      Acked-by: NUwe Kleine-König <u.kleine-koenig@pengutronix.de>
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      7cf3d73b
    • S
      kconfig: code refactoring in confdata.c · 49192f26
      Sam Ravnborg 提交于
      Add a a few local functions to avoid some code duplication
      No functional changes.
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      49192f26