All of lore.kernel.org
 help / color / mirror / Atom feed
From: Masahiro Yamada <yamada.masahiro@socionext.com>
To: Petr Vorel <pvorel@suse.cz>
Cc: Linux Kbuild mailing list <linux-kbuild@vger.kernel.org>,
	Paul Bolle <pebolle@tiscali.nl>, Michal Marek <mmarek@suse.cz>
Subject: Re: [PATCH v3 1/1] kconfig: menuconfig make "selected by:" readable
Date: Tue, 11 Apr 2017 01:01:36 +0900	[thread overview]
Message-ID: <CAK7LNAQ0Az05tnvxSnMdKZh0U4r-1k7U+PKhmtZ5BGwxCFng5w@mail.gmail.com> (raw)
In-Reply-To: <20170403093545.ebn5lawttpfwbpbl@x230>

Hi Petr,

2017-04-03 18:35 GMT+09:00 Petr Vorel <pvorel@suse.cz>:
> Hi,
>
>> rev_dep expressions can get rather unwieldy, especially if a symbol is
>> selected by more than a handful of other symbols. Ie, it's possible to
>> have near endless expressions like:
>>    A && B && !C || D || F && (G || H) || [...]
>
>> Chop these expressions into actually readable chunks:
>>    - A && B && !C
>>    - D
>>    - F && (G || H)
>>    - [...]
>
>> Ie, transform the top level "||" tokens into newlines and prepend each
>> line with a minus. This makes the "Selected by:" blurb much easier to
>> read.
>
>> This also prevents trimming too long lines.
>
>> Based on patch from Paul Bolle.
>
>> Reported-by: Paul Bolle <pebolle@tiscali.nl>
>> Cc: Paul Bolle <pebolle@tiscali.nl>
>> Signed-off-by: Petr Vorel <pvorel@suse.cz>
>> ---
>>  scripts/kconfig/expr.c | 16 +++++++++++++---
>>  scripts/kconfig/menu.c |  2 +-
>>  2 files changed, 14 insertions(+), 4 deletions(-)
>
>> diff --git a/scripts/kconfig/expr.c b/scripts/kconfig/expr.c
>> index cbf4996dd9c1..4b4309b59349 100644
>> --- a/scripts/kconfig/expr.c
>> +++ b/scripts/kconfig/expr.c
>> @@ -1070,6 +1070,8 @@ struct expr *expr_simplify_unmet_dep(struct expr *e1, struct expr *e2)
>>       return expr_get_leftmost_symbol(ret);
>>  }
>
>> +static int print_level = 0;
>> +
>>  void expr_print(struct expr *e, void (*fn)(void *, struct symbol *, const char *), void *data, int prevtoken)
>>  {
>>       if (!e) {
>> @@ -1077,8 +1079,11 @@ void expr_print(struct expr *e, void (*fn)(void *, struct symbol *, const char *
>>               return;
>>       }
>
>> -     if (expr_compare_type(prevtoken, e->type) > 0)
>> +     if (expr_compare_type(prevtoken, e->type) > 0) {
>> +             print_level++;
>>               fn(data, NULL, "(");
>> +     }
>> +
>>       switch (e->type) {
>>       case E_SYMBOL:
>>               if (e->left.sym->name)
>> @@ -1126,7 +1131,10 @@ void expr_print(struct expr *e, void (*fn)(void *, struct symbol *, const char *
>>               break;
>>       case E_OR:
>>               expr_print(e->left.expr, fn, data, E_OR);
>> -             fn(data, NULL, " || ");
>> +             if (print_level == 0)
>> +                     fn(data, NULL, "\n  - ");
>> +             else
>> +                     fn(data, NULL, " || ");
>>               expr_print(e->right.expr, fn, data, E_OR);
>>               break;
>>       case E_AND:
>> @@ -1156,8 +1164,10 @@ void expr_print(struct expr *e, void (*fn)(void *, struct symbol *, const char *
>>               break;
>>         }
>>       }
>> -     if (expr_compare_type(prevtoken, e->type) > 0)
>> +     if (expr_compare_type(prevtoken, e->type) > 0) {
>> +             print_level--;
>>               fn(data, NULL, ")");
>> +     }
>>  }
>
>>  static void expr_print_file_helper(void *data, struct symbol *sym, const char *str)
>> diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c
>> index e9357931b47d..3daf7b81637f 100644
>> --- a/scripts/kconfig/menu.c
>> +++ b/scripts/kconfig/menu.c
>> @@ -675,7 +675,7 @@ static void get_symbol_str(struct gstr *r, struct symbol *sym,
>
>>       get_symbol_props_str(r, sym, P_SELECT, _("  Selects: "));
>>       if (sym->rev_dep.expr) {
>> -             str_append(r, _("  Selected by: "));
>> +             str_append(r, _("  Selected by: \n  - "));
>>               expr_gstr_print(sym->rev_dep.expr, r);
>>               str_append(r, "\n");
>>       }
>
> Any comment on this patch, please?


I noticed you added me in the To: list.

Basically I think this patch is a nice idea,
but I am not a Kconfig maintainer.  Sorry.
(I could pick up a really trivial one via kbuild tree somehow,
but I want this one to be handled by a person with expertise in the area.)

Yann E. MORIN is the Kconfig maintainer, but he has been
silent for a few years. I guess Kconfig needs a new maintainer.


Please take my comment just as a Kconfig user's point of view.

The git-log only mentions "select", but I notice this patch
also changes "depends on" format in a bit different way.

For example,

General setup  --->
     Kernel compression mode (Gzip)  --->


shows its help like this:

  Depends on: HAVE_KERNEL_GZIP  [=y]
  - HAVE_KERNEL_BZIP2 [=n]
  - HAVE_KERNEL_LZMA [=y]
  - HAVE_KERNEL_XZ [=y]
  - HAVE_KERNEL_LZO [=y]
  - HAVE_KERNEL_LZ4 [=y]

(the first dependency in the same line in the "Depends on")



-- 
Best Regards
Masahiro Yamada

  reply	other threads:[~2017-04-10 16:01 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-23 13:10 [PATCH v3 1/1] kconfig: menuconfig make "selected by:" readable Petr Vorel
2017-04-03  9:35 ` Petr Vorel
2017-04-10 16:01   ` Masahiro Yamada [this message]
2017-09-20 14:26     ` Petr Vorel
2017-09-20 16:38       ` Yann E. MORIN
2017-10-04  9:19         ` Masahiro Yamada
2017-10-04  9:18       ` Masahiro Yamada

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=CAK7LNAQ0Az05tnvxSnMdKZh0U4r-1k7U+PKhmtZ5BGwxCFng5w@mail.gmail.com \
    --to=yamada.masahiro@socionext.com \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=mmarek@suse.cz \
    --cc=pebolle@tiscali.nl \
    --cc=pvorel@suse.cz \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.