* [KCONFIG] Optional choice values always get reset
@ 2003-07-12 7:30 Herbert Xu
2003-07-14 20:04 ` Roman Zippel
0 siblings, 1 reply; 2+ messages in thread
From: Herbert Xu @ 2003-07-12 7:30 UTC (permalink / raw)
To: zippel; +Cc: Linux Kernel Mailing List
[-- Attachment #1: Type: text/plain, Size: 612 bytes --]
Hi:
As of 2.5.74, make oldconfig always disables existing optional choices
even if they were selected previously. For example, if all the EICON
ISDN drivers were selected as modules, then make oldconfig will turn
them off.
Part of the problem is that the choice value itself is computed before
the SYMBOL_NEW flag is turned off. This patch addresses that particular
problem.
Cheers,
--
Debian GNU/Linux 3.0 is out! ( http://www.debian.org/ )
Email: Herbert Xu ~{PmV>HI~} <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
[-- Attachment #2: p --]
[-- Type: text/plain, Size: 1889 bytes --]
Index: kernel-source-2.5/scripts/kconfig/confdata.c
===================================================================
RCS file: /home/gondolin/herbert/src/CVS/debian/kernel-source-2.5/scripts/kconfig/confdata.c,v
retrieving revision 1.1.1.3
diff -u -r1.1.1.3 confdata.c
--- kernel-source-2.5/scripts/kconfig/confdata.c 17 Jun 2003 04:20:26 -0000 1.1.1.3
+++ kernel-source-2.5/scripts/kconfig/confdata.c 12 Jul 2003 07:24:35 -0000
@@ -149,7 +149,7 @@
sym = sym_find(line + 7);
if (!sym) {
fprintf(stderr, "%s:%d: trying to assign nonexistent symbol %s\n", name, lineno, line + 7);
- break;
+ continue;
}
switch (sym->type) {
case S_TRISTATE:
@@ -197,29 +197,28 @@
default:
;
}
- if (sym_is_choice_value(sym)) {
- struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym));
- switch (sym->user.tri) {
- case mod:
- if (cs->user.tri == yes)
- /* warn? */;
- break;
- case yes:
- if (cs->user.tri != no)
- /* warn? */;
- cs->user.val = sym;
- break;
- case no:
- break;
- }
- cs->user.tri = sym->user.tri;
- }
- break;
- case '\n':
break;
default:
continue;
}
+ if (sym_is_choice_value(sym)) {
+ struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym));
+ switch (sym->user.tri) {
+ case mod:
+ if (cs->user.tri == yes)
+ /* warn? */;
+ break;
+ case yes:
+ if (cs->user.tri != no)
+ /* warn? */;
+ cs->user.val = sym;
+ break;
+ case no:
+ break;
+ }
+ cs->user.tri = E_OR(cs->user.tri, sym->user.tri);
+ cs->flags &= ~SYMBOL_NEW;
+ }
}
fclose(in);
@@ -241,7 +240,6 @@
if (!sym_is_choice(sym))
continue;
prop = sym_get_choice_prop(sym);
- sym->flags &= ~SYMBOL_NEW;
for (e = prop->expr; e; e = e->left.expr)
if (e->right.sym->visible != no)
sym->flags |= e->right.sym->flags & SYMBOL_NEW;
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [KCONFIG] Optional choice values always get reset
2003-07-12 7:30 [KCONFIG] Optional choice values always get reset Herbert Xu
@ 2003-07-14 20:04 ` Roman Zippel
0 siblings, 0 replies; 2+ messages in thread
From: Roman Zippel @ 2003-07-14 20:04 UTC (permalink / raw)
To: Herbert Xu; +Cc: Linux Kernel Mailing List
Hi,
On Sat, 12 Jul 2003, Herbert Xu wrote:
> As of 2.5.74, make oldconfig always disables existing optional choices
> even if they were selected previously. For example, if all the EICON
> ISDN drivers were selected as modules, then make oldconfig will turn
> them off.
>
> Part of the problem is that the choice value itself is computed before
> the SYMBOL_NEW flag is turned off. This patch addresses that particular
> problem.
Thanks for the patch, I applied it with some small modifications, as there
was a small problem left.
bye, Roman
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2003-07-14 19:52 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-07-12 7:30 [KCONFIG] Optional choice values always get reset Herbert Xu
2003-07-14 20:04 ` Roman Zippel
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).