• Yann E. MORIN's avatar
    kconfig/conf: fix randconfig setting multiple symbols in a choice · e6abf12a
    Yann E. MORIN authored
    Currently, randconfig may set more than one symbol in a given choice.
    Given this config file:
        config A
            bool "A"
        if A
        choice
            bool "B/C/D"
        config B
            bool "B"
        config C
            bool "C"
        config D
            bool "D"
        endchoice
        endif # A
    
    Then randconfig generates such .config files (case where A is not set is not
    shown below for brevity), and where only the right-most .config is valid:
      CONFIG_A=y                  CONFIG_A=y                  CONFIG_A=y
      CONFIG_B=y                  CONFIG_B=y                  CONFIG_B=y
      CONFIG_C=y                  # CONFIG_C is not set       # CONFIG_C is not set
      # CONFIG_D is not set       CONFIG_D=y                  # CONFIG_D is not set
    
    That is, in a randomised choice, the first symbol is always selected,
    and at most one other symbol may be selected.
    
    This is due to symbol randomised in a choice not being properly flagged
    as having a value.
    
    Fix that by flagging those symbols adequately: have a user-defined value,
    and be not valid (to force recalculation of the symbol).
    
    Note: if the choice is not conditional, then the randomisation is properly
    done.
    Reported-by: default avatarMatthieu CASTET <matthieu.castet@parrot.com>
    Signed-off-by: default avatarMatthieu CASTET <matthieu.castet@parrot.com>
    [yann.morin.1998@free.fr: independently re-done the same patch as Matthieu,
                              as pointed out by Sedat]
    Cc: Arnaud Lacombe <lacombar@gmail.com>
    Cc: Sedat Dilek <sedat.dilek@gmail.com>
    Signed-off-by: default avatar"Yann E. MORIN" <yann.morin.1998@free.fr>
    e6abf12a
confdata.c 25.1 KB