Re: kconfig - a suggestion how to fix the select issue

From: Jan Engelhardt
Date: Tue May 06 2008 - 04:19:32 EST


On Sunday 2008-05-04 09:10, Sam Ravnborg wrote:

>Today we have two ways to express/solve dependencies.
>
>Top-down we have "depends on"
>and bottom up we have "select".
>
>The "depends on" dependencies at the same time impact the visibility of
>a symbol. A symbol with "depends on" not satisfied are not visible and
>thus not shown in menuconfig.
>
>The "select" method is a way to forcefully set the selected symbol to
>the same value as the one where the select are stated.
>
>But this has shortcoming in relation to the interface we like to
>present to the user.
[...]

Suggestion:

Make kconfig work like an interactive package manager. All objects are
visible and the user can select any of them.

depends and selects are resolved upon request only, i.e. when the user
hits Exit or manually initiates a resolve request. Kconfig then checks
to see if all dependencies are satisfied, and if it cannot automatically
solve itÂâ because it encounters an alternation expression (a || foo)Ââ
it asks the user to select one.

If user input is not available, exit with error (much like `make
oldconfig </dev/null` already does on new options.)

Drawback:

Most likely a lot of work.


Consider/Suggested syntax:

menuconfig V4L2
tristate "video and all that"

if V4L2

config MY_CAMERA
tristate "nice cam"
requires USB || FIREWIRE

endif

leading to a new screen on dependency resolution (when USB=n &&
FIREWIRE=n), showing a modified "choice" prompt where you can
either
1) change the state of CONFIG_MY_CAMERA to y/m/n.
2) select one of the required dependencies.

CONFIG_MY_CAMERA has unsatisfied dependencies.

<M> nice cam
( ) USB
( ) FireWire

Of course a bit of thinking on how to display things is needed for more
complex requires.
--
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/