Re: on builds/randconfigs
From: Vegard Nossum <hidden>
Date: 2011-01-15 12:25:01
Also in:
linux-acpi, lkml
On 13 January 2011 13:23, Michal Marek [off-list ref] wrote:
On 12.1.2011 22:58, Len Brown wrote:quoted
quoted
quoted
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