1. 24 7月, 2013 3 次提交
  2. 23 7月, 2013 3 次提交
  3. 10 7月, 2013 2 次提交
  4. 04 7月, 2013 23 次提交
  5. 03 7月, 2013 3 次提交
  6. 29 6月, 2013 1 次提交
  7. 28 6月, 2013 2 次提交
  8. 27 6月, 2013 1 次提交
  9. 26 6月, 2013 1 次提交
  10. 25 6月, 2013 1 次提交
    • Y
      kconfig: fix randomising choice entries in presence of KCONFIG_ALLCONFIG · 8357b485
      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.
      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: Sedat Dilek <sedat.dilek@gmail.com>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Stephen Rothwell <sfr@canb.auug.org.au>
      
      ---
      Changes v3 -> v4
        - fix previous issue where some choices would not be set, which would
          cause silentoldconfig to ask for them and was then breaking this
          workflow (as reported by Arnd and Sedat):
              KCONFIG_ALLCONFIG=foo.defconfig make randconfig
              make silentoldconfig </dev/nullo
          which I have tested (3h28min!) with:
              touch defconfig
              for(( i=0; i<10000; i++ )); do
                  KCONFIG_ALLCONFIG=$(pwd)/defconfig make randconfig >/dev/null 2>&1
                  make silentoldconfig </dev/null >/dev/null 2>&1 || break
              done
          which did not break at all.
        - change done in v3 (below) is already fixed by a previous patch
      
      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
      8357b485