diff mbox

xconfig: Display dependency values in debug_info

Message ID 1343256982-11421-1-git-send-email-salaarali@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Salar Ali Mumtaz July 25, 2012, 10:56 p.m. UTC
Displays the current value of each of the dependencies of a menu item.
Before, you needed to do tedious searching to find out the current values
of the dependences. Now they all are included in the debug_info, making
the task easier

Signed-off-by: Salar Ali Mumtaz <salaarali@gmail.com>
---
 scripts/kconfig/qconf.cc |   10 +++++++++-
 1 files changed, 9 insertions(+), 1 deletions(-)

Comments

Randy Dunlap July 25, 2012, 11:18 p.m. UTC | #1
On 07/25/2012 03:56 PM, Salar Ali Mumtaz wrote:

> Displays the current value of each of the dependencies of a menu item.
> Before, you needed to do tedious searching to find out the current values
> of the dependences. Now they all are included in the debug_info, making
> the task easier

Hi,
Would you please provide before and after examples?

I use xconfig quite a lot and it already shows me, e.g., for
CONFIG_DRM:


Symbol: DRM [=y]
Type : tristate
Prompt: Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
Defined at drivers/gpu/drm/Kconfig:7
Depends on: HAS_IOMEM [=y] && (AGP [=y] || AGP [=y]=n) && !EMULATED_CMPXCHG && MMU [=y]
Location:
-> Device Drivers
-> Graphics support
Selects: I2C [=y] && I2C_ALGOBIT [=y] && DMA_SHARED_BUFFER [=y]




so what and where does this patch add debug info?

Thanks.


> Signed-off-by: Salar Ali Mumtaz <salaarali@gmail.com>
> ---
>  scripts/kconfig/qconf.cc |   10 +++++++++-
>  1 files changed, 9 insertions(+), 1 deletions(-)
> 
> diff --git a/scripts/kconfig/qconf.cc b/scripts/kconfig/qconf.cc
> index df274fe..abd500f 100644
> --- a/scripts/kconfig/qconf.cc
> +++ b/scripts/kconfig/qconf.cc
> @@ -1073,8 +1073,10 @@ QString ConfigInfoView::debug_info(struct symbol *sym)
>  		debug += " (choice)";
>  	debug += "<br>";
>  	if (sym->rev_dep.expr) {
> -		debug += "reverse dep: ";
> +		debug += "reverse dep: (";
>  		expr_print(sym->rev_dep.expr, expr_print_help, &debug, E_NONE);
> +		debug += " )  =";
> +		debug += print_filter(sym_get_string_value(sym));
>  		debug += "<br>";
>  	}
>  	for (struct property *prop = sym->prop; prop; prop = prop->next) {
> @@ -1108,7 +1110,10 @@ QString ConfigInfoView::debug_info(struct symbol *sym)
>  		}
>  		if (prop->visible.expr) {
>  			debug += "&nbsp;&nbsp;&nbsp;&nbsp;dep: ";
> +			debug += " ( ";
>  			expr_print(prop->visible.expr, expr_print_help, &debug, E_NONE);
> +			debug += " )  =";
> +			debug += print_filter(sym_get_string_value(sym));
>  			debug += "<br>";
>  		}
>  	}
> @@ -1157,6 +1162,9 @@ void ConfigInfoView::expr_print_help(void *data, struct symbol *sym, const char
>  		*text += QString().sprintf("<a href=\"s%p\">", sym);
>  		*text += str2;
>  		*text += "</a>";
> +		*text += "<b>   ";
> +		*text += print_filter(sym_get_string_value(sym));
> +		*text += "</b>";
>  	} else
>  		*text += str2;
>  }
Randy Dunlap July 26, 2012, 5:02 p.m. UTC | #2
On 07/26/2012 09:19 AM, Salar Ali Mumtaz wrote:

> Hi.
> 
> Thanks for the quick reply.
> 
> This adds the current values to the dependencies in the debug_info, which you get when you select "Show debug info" 
> from the popup you get after you right click. For some values, there is no help available. For those, there is usually 
> information in the debug_info that is not displayed normally.
> 
> COMPAT_BINFMT_ELF
> 
> //This is added by debug_info
> type: boolean
> reverse dep: (IA32_EMULATION n && X86_64 n ) =n
> unknown property: symbol
>     dep: ( COMPAT n && BINFMT_ELF y ) =n
> //This is added by debug_info
> 
> defined at fs/Kconfig.binfmt:26
> 
> There is no help available for this option.
> Symbol: COMPAT_BINFMT_ELF [=n]
> Type : boolean
> Selected by: IA32_EMULATION [=n] && X86_64 [=n]
> 
> Hope this helps.
> 


Yes, it does help.  Thanks.


For BINFMT_ELF (not your example of COMPAT_BINFMT_ELF)
in Linux 3.5, I see this:


BEFORE PATCH:

type: boolean
unknown property: symbol
    dep: MMU && (BROKEN || !FRV)
prompt: Kernel support for ELF binaries
    dep: MMU && (BROKEN || !FRV)
default: y
    dep: MMU && (BROKEN || !FRV)

defined at fs/Kconfig.binfmt:1



AFTER PATCH:

type: boolean
unknown property: symbol
    dep: ( MMU y && (BROKEN n || !FRV FRV) ) =y
prompt: Kernel support for ELF binaries
    dep: ( MMU y && (BROKEN n || !FRV FRV) ) =y
default: y
    dep: ( MMU y && (BROKEN n || !FRV FRV) ) =y

defined at fs/Kconfig.binfmt:1




The added y/n/m are clear, but the "!FRV FRV" is confusing,
isn't it?
Salar Ali Mumtaz July 31, 2012, 4:51 p.m. UTC | #3
On 12-07-26 01:02 PM, Randy Dunlap wrote:

> 
> The added y/n/m are clear, but the "!FRV FRV" is confusing,
> isn't it?
> 
> 

Yes. But that is easily fixable.
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Salar Ali Mumtaz Aug. 7, 2012, 4:08 p.m. UTC | #4
On 12-07-26 01:02 PM, Randy Dunlap wrote:

> The added y/n/m are clear, but the "!FRV FRV" is confusing,
> isn't it?
> 
> 

Is this notation clear ?

Kernel support for ELF binaries (BINFMT_ELF)

type: boolean
unknown property: symbol
    dep: ( MMU [=y] && (BROKEN [n] || !FRV [= ""]) ) [=y]
prompt: Kernel support for ELF binaries
    dep: ( MMU [=y] && (BROKEN [n] || !FRV [= ""]) ) [=y]
default: y
    dep: ( MMU [=y] && (BROKEN [n] || !FRV [= ""]) ) [=y]


If not, could you suggest a better way to represent this information?

Thanks.
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Randy Dunlap Aug. 7, 2012, 4:55 p.m. UTC | #5
On 08/07/2012 09:08 AM, Salar Ali Mumtaz wrote:

> On 12-07-26 01:02 PM, Randy Dunlap wrote:
> 
>> The added y/n/m are clear, but the "!FRV FRV" is confusing,
>> isn't it?
>>
>>
> 
> Is this notation clear ?
> 
> Kernel support for ELF binaries (BINFMT_ELF)
> 
> type: boolean
> unknown property: symbol
>     dep: ( MMU [=y] && (BROKEN [n] || !FRV [= ""]) ) [=y]
> prompt: Kernel support for ELF binaries
>     dep: ( MMU [=y] && (BROKEN [n] || !FRV [= ""]) ) [=y]
> default: y
>     dep: ( MMU [=y] && (BROKEN [n] || !FRV [= ""]) ) [=y]



In Kconfig language, is "" the same as 'n' ?
If so, I'm OK with your proposal above.


> If not, could you suggest a better way to represent this information?
> 
> Thanks.



thanks,
Salar Ali Mumtaz Aug. 9, 2012, 6:54 p.m. UTC | #6
On 12-08-07 12:55 PM, Randy Dunlap wrote:

> In Kconfig language, is "" the same as 'n' ?
> If so, I'm OK with your proposal above.
> 


So a colleague of mine tested this and came up with a conclusion that expressions in Kconfig can only deal with boolean or tristate operands and no casting is made with strings. Using any string operand as part of a boolean expression is simply a type error and Kconfig probably marks such operand as 'n', regardless of its value.

--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Randy Dunlap Aug. 11, 2012, 12:39 a.m. UTC | #7
On 08/09/2012 11:54 AM, Salar Ali Mumtaz wrote:

> On 12-08-07 12:55 PM, Randy Dunlap wrote:
> 
>> In Kconfig language, is "" the same as 'n' ?
>> If so, I'm OK with your proposal above.
>>
> 
> 
> So a colleague of mine tested this and came up with a conclusion that expressions in Kconfig can only deal with boolean or tristate operands and no casting is made with strings. Using any string operand as part of a boolean expression is simply a type error and Kconfig probably marks such operand as 'n', regardless of its value.
> 


My question was about FRV, which is a boolean,
but still did not display as 'n' in your example.
Salar Ali Mumtaz Aug. 15, 2012, 4:32 p.m. UTC | #8
On 12-08-10 08:39 PM, Randy Dunlap wrote:
> On 08/09/2012 11:54 AM, Salar Ali Mumtaz wrote:
> 
>> On 12-08-07 12:55 PM, Randy Dunlap wrote:
>>
>>> In Kconfig language, is "" the same as 'n' ?
>>> If so, I'm OK with your proposal above.
>>>
>>
>>
>> So a colleague of mine tested this and came up with a conclusion that expressions in Kconfig can only deal with boolean or tristate operands and no casting is made with strings. Using any string operand as part of a boolean expression is simply a type error and Kconfig probably marks such operand as 'n', regardless of its value.
>>
> 
> 
> My question was about FRV, which is a boolean,
> but still did not display as 'n' in your example.
> 
> 

FRV is not a boolean.
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Randy Dunlap Aug. 15, 2012, 5:29 p.m. UTC | #9
On 08/15/2012 09:32 AM, Salar Ali Mumtaz wrote:

> On 12-08-10 08:39 PM, Randy Dunlap wrote:
>> On 08/09/2012 11:54 AM, Salar Ali Mumtaz wrote:
>>
>>> On 12-08-07 12:55 PM, Randy Dunlap wrote:
>>>
>>>> In Kconfig language, is "" the same as 'n' ?
>>>> If so, I'm OK with your proposal above.
>>>>
>>>
>>>
>>> So a colleague of mine tested this and came up with a conclusion that expressions in Kconfig can only deal with boolean or tristate operands and no casting is made with strings. Using any string operand as part of a boolean expression is simply a type error and Kconfig probably marks such operand as 'n', regardless of its value.
>>>
>>
>>
>> My question was about FRV, which is a boolean,
>> but still did not display as 'n' in your example.
>>
>>
> 
> FRV is not a boolean.



Hm, why do you say that?  Please explain.


from arch/frv/Kconfig:

config FRV
	bool
	default y
diff mbox

Patch

diff --git a/scripts/kconfig/qconf.cc b/scripts/kconfig/qconf.cc
index df274fe..abd500f 100644
--- a/scripts/kconfig/qconf.cc
+++ b/scripts/kconfig/qconf.cc
@@ -1073,8 +1073,10 @@  QString ConfigInfoView::debug_info(struct symbol *sym)
 		debug += " (choice)";
 	debug += "<br>";
 	if (sym->rev_dep.expr) {
-		debug += "reverse dep: ";
+		debug += "reverse dep: (";
 		expr_print(sym->rev_dep.expr, expr_print_help, &debug, E_NONE);
+		debug += " )  =";
+		debug += print_filter(sym_get_string_value(sym));
 		debug += "<br>";
 	}
 	for (struct property *prop = sym->prop; prop; prop = prop->next) {
@@ -1108,7 +1110,10 @@  QString ConfigInfoView::debug_info(struct symbol *sym)
 		}
 		if (prop->visible.expr) {
 			debug += "&nbsp;&nbsp;&nbsp;&nbsp;dep: ";
+			debug += " ( ";
 			expr_print(prop->visible.expr, expr_print_help, &debug, E_NONE);
+			debug += " )  =";
+			debug += print_filter(sym_get_string_value(sym));
 			debug += "<br>";
 		}
 	}
@@ -1157,6 +1162,9 @@  void ConfigInfoView::expr_print_help(void *data, struct symbol *sym, const char
 		*text += QString().sprintf("<a href=\"s%p\">", sym);
 		*text += str2;
 		*text += "</a>";
+		*text += "<b>   ";
+		*text += print_filter(sym_get_string_value(sym));
+		*text += "</b>";
 	} else
 		*text += str2;
 }