public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Li Zefan <lizf@cn.fujitsu.com>
To: Michal Marek <mmarek@suse.cz>
Cc: Randy Dunlap <randy.dunlap@oracle.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	linux-kbuild@vger.kernel.org, LKML <linux-kernel@vger.kernel.org>
Subject: [PATCH v2 3/8] kconfig: fix to tag NEW symbols correctly
Date: Fri, 07 May 2010 13:57:07 +0800	[thread overview]
Message-ID: <4BE3ABB3.7040406@cn.fujitsu.com> (raw)
In-Reply-To: <4BE3AB91.80606@cn.fujitsu.com>

Those configs are not new:

  $ cat .config
  ...
  CONFIG_NAMESPACES=y
  ...
  CONFIG_BLOCK=y
  ...

But are tagged as NEW:

  $ yes "" | make config > myconf
  $ cat myconf | grep '(NEW)'
  Namespaces support (NAMESPACES) [Y/?] (NEW) y
  ...
  Enable the block layer (BLOCK) [Y/?] (NEW) y
  ...

You can also notice this bug when using gconfig/xconfig.

It's because the SYMBOL_DEF_USER bit of an invisible symbol is cleared
when the config file is read:

int conf_read(const char *name)
{
	...
	for_all_symbols(i, sym) {
		if (sym_has_value(sym) && !sym_is_choice_value(sym)) {
			/* Reset values of generates values, so they'll appear
			 * as new, if they should become visible, but that
			 * doesn't quite work if the Kconfig and the saved
			 * configuration disagree.
			 */
			if (sym->visible == no && !conf_unsaved)
				sym->flags &= ~SYMBOL_DEF_USER;
	...
}

But a menu item which represents an invisible symbol is still
visible, if it's sub-menu is visible, so its SYMBOL_DEF_USER
bit should be set to indicate it's not NEW.

Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
---
 scripts/kconfig/menu.c |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c
index c547692..85ccd02 100644
--- a/scripts/kconfig/menu.c
+++ b/scripts/kconfig/menu.c
@@ -419,9 +419,13 @@ bool menu_is_visible(struct menu *menu)
 	if (!sym || sym_get_tristate_value(menu->sym) == no)
 		return false;
 
-	for (child = menu->list; child; child = child->next)
-		if (menu_is_visible(child))
+	for (child = menu->list; child; child = child->next) {
+		if (menu_is_visible(child)) {
+			if (sym)
+				sym->flags |= SYMBOL_DEF_USER;
 			return true;
+		}
+	}
 
 	return false;
 }
-- 
1.6.3


  parent reply	other threads:[~2010-05-07  5:55 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-05-07  5:56 [PATCH v2 1/8] kconfig: print symbol type in help text Li Zefan
2010-05-07  5:56 ` [PATCH v2 2/8] kconfig: print the range of integer/hex symbol " Li Zefan
2010-05-07  5:57 ` Li Zefan [this message]
2010-05-07  5:57 ` [PATCH v2 4/8] menuconfig: improive help text a bit Li Zefan
2010-05-07  5:57 ` [PATCH v2 5/8] gconfig: fix to tag NEW symbols correctly Li Zefan
2010-05-07  5:57 ` [PATCH v2 6/8] gconfig: fix null pointer warning Li Zefan
2010-05-07  5:58 ` [PATCH v2 7/8] xconfig: clean up Li Zefan
2010-05-07  5:58 ` [PATCH v2 8/8] xconfig: remove unused function Li Zefan
2010-05-10  8:33 ` [PATCH v2 9/8] xconfig: add support to show hidden options which have prompts Li Zefan
2010-05-14  6:57 ` [PATCH v2 1/8] kconfig: print symbol type in help text Li Zefan
2010-05-14 20:43   ` Michal Marek
2010-05-17  2:18     ` Li Zefan
2010-06-02 13:41     ` Michal Marek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4BE3ABB3.7040406@cn.fujitsu.com \
    --to=lizf@cn.fujitsu.com \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mmarek@suse.cz \
    --cc=randy.dunlap@oracle.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox