Re: on builds/randconfigs

Vegard Nossum
2011-01-15T12:24:59Z

On 13 January 2011 13:23, Michal Marek <mmarek@suse.cz> wrote:
> On 12.1.2011 22:58, Len Brown wrote:
>>>> These unusable config combinations should be prevented via Kconfig.
>>>> That prevents users from selecting them, which otherwise adds to
>>>> our workload and to theirs.  It also prevents false-positives
>>>> during our useful randconfig testing.
>>>
>>> But it is kind of difficult to achieve IMhO.  For example, there are options
>>> that are only SELECTed if something else is set, but randconfig doesn't seem
>>> to care.
>>
>> Kconfig select needs to be fixed so that it is not possible to
>> select something if that something's dependencies are not met.
>
> Right now, it issues a warning in such case. I think changing it to a
> fatal error would be too premature, not long ago there were a couple of
> annoying false positives.
>
> But from the rest of the thread, I conclude that you actually meant "not
> possible to select something if that something's dependencies CANNOT be
> met", i.e. automatically select dependencies if that is possible. That
> was actually one of the goals of Vegard Nossum's GSoC poject last year,
> but I haven't heard of any outcome yet. Vegard, is there something we
> could use, be it code or mistakes we could learn from?

Maybe I am wrong, but doesn't conf_write() actually take care of this
when it does that sym_calc_value() for all the symbols? Or maybe
that's the problem (i.e. that it doesn't).

Current satconfig code can be changed to produce random configs (that
nevertheless respect the user's choices) with a 1-line patch. But
there are some other issues to be worked out, mainly that conf_write()
doesn't respect all the choices that the SAT solver made. There could
be several reasons for that: 1. satconfig doesn't deal with
hex/int/string values and relies on conf_write() to fill in those
(this is a plain old bug), 2. the translation into boolean logic is
subtly wrong, perhaps a corner case or something like that, and/or 3.
conf_write() does something wrong.

I'll be happy to give a tour of the satconfig code if you or anybody
else would like to start hacking on it.

Vegard