Linux-KBuild Archive mirror
 help / color / mirror / Atom feed
From: Masahiro Yamada <masahiroy@kernel.org>
To: Brian Masney <bmasney@redhat.com>
Cc: linux-kernel@vger.kernel.org, linux-kbuild@vger.kernel.org
Subject: Re: [PATCH 2/2] scripts: add kconfig lookup script
Date: Thu, 3 Aug 2023 15:23:16 +0900	[thread overview]
Message-ID: <CAK7LNAQ-nhy1_xFYiwuvOKvfUVSjvnEb4ZnJ8EMWo7uJun89Zg@mail.gmail.com> (raw)
In-Reply-To: <20230801174922.333700-3-bmasney@redhat.com>

On Wed, Aug 2, 2023 at 2:49 AM Brian Masney <bmasney@redhat.com> wrote:
>
> Add a script that allows looking up the full Kconfig entry based on
> the symbol name. Documentation and example usage is found at the top
> of the script itself.
>
> Signed-off-by: Brian Masney <bmasney@redhat.com>
> ---
>  scripts/kconfig/lookup.sh | 77 +++++++++++++++++++++++++++++++++++++++
>  1 file changed, 77 insertions(+)
>  create mode 100755 scripts/kconfig/lookup.sh



Everyone tends to have their own utility scripts
on their machines.

I think this patch set falls into that category
as "create a wrapper script of grep" is what everyone
does to reduce typing.




FWIW, I have the following scripts in my ~/bin directory.



$ cat ~/bin/kgrep
#!/bin/sh

exec find . -name .repo -prune -o -name .git -prune -o -type f \
\( -name 'Kconfig*' -o -name 'Config.in' \) \
-print0 | xargs -0 grep --color -n "$@"


$ cat ~/bin/mgrep
#!/bin/sh

exec find . -name .repo -prune -o -name .git -prune -o -type f \
\( -name 'Makefile*' -o -name 'Kbuild*' -o -name "*.mk" \) \
-print0 | xargs -0 grep --color -n "$@"




masahiro@zoe:~/ref/linux(master)$ kgrep -A5 TSL2772
./drivers/iio/light/Kconfig:564:config TSL2772
./drivers/iio/light/Kconfig-565- tristate "TAOS TSL/TMD2x71 and
TSL/TMD2x72 Family of light and proximity sensors"
./drivers/iio/light/Kconfig-566- depends on I2C
./drivers/iio/light/Kconfig-567- help
./drivers/iio/light/Kconfig-568-   Support for: tsl2571, tsl2671,
tmd2671, tsl2771, tmd2771, tsl2572, tsl2672,
./drivers/iio/light/Kconfig-569-   tmd2672, tsl2772, tmd2772 devices.

masahiro@zoe:~/ref/linux(master)$ mgrep efivarfs.o
./fs/efivarfs/Makefile:6:obj-$(CONFIG_EFIVAR_FS) += efivarfs.o
./fs/efivarfs/Makefile:8:efivarfs-objs := inode.o file.o super.o vars.o



That's my local way to satisfy my demand.
I do not intend to force my way or merge it in the upstream.










>
> diff --git a/scripts/kconfig/lookup.sh b/scripts/kconfig/lookup.sh
> new file mode 100755
> index 000000000000..d1ff52b23835
> --- /dev/null
> +++ b/scripts/kconfig/lookup.sh
> @@ -0,0 +1,77 @@
> +#!/usr/bin/env bash
> +# SPDX-License-Identifier: GPL-2.0-only
> +#
> +# Copyright (C) 2023 Red Hat, Inc. All Rights Reserved.
> +# Written by Brian Masney <bmasney@redhat.com>
> +#
> +# This script takes as input one or more Kconfig symbols and outputs the full
> +# entry from the Kconfig file. It can be invoked by reading a list of symbol
> +# names from either stdin or as command line arguments. Example output:
> +#
> +#   x1:~/src/linux$ ./scripts/kconfig/lookup.sh TSL2772 SOUND
> +#   # drivers/iio/light/Kconfig
> +#   config TSL2772
> +#     tristate "TAOS TSL/TMD2x71 and TSL/TMD2x72 Family of light and proximity sensors"
> +#     depends on I2C
> +#     help
> +#       Support for: tsl2571, tsl2671, tmd2671, tsl2771, tmd2771, tsl2572, tsl2672,
> +#       tmd2672, tsl2772, tmd2772 devices.
> +#       Provides iio_events and direct access via sysfs.
> +#
> +#   # arch/um/drivers/Kconfig
> +#   config SOUND
> +#     tristate
> +#     default UML_SOUND
> +#
> +#   # sound/Kconfig
> +#   menuconfig SOUND
> +#     tristate "Sound card support"
> +#     depends on HAS_IOMEM
> +#     help
> +#       If you have a sound card in your computer, i.e. if it can say more
> +#       than an occasional beep, say Y.
> +
> +
> +process_kconfig()
> +{
> +       KCONFIG="${1/CONFIG_/}"
> +
> +       FOUND=0
> +       for KCONFIG_FILE in $(git grep -E "^(config|menuconfig) ${KCONFIG}$" | \
> +                             awk -F: '{print $1}') ; do
> +               echo "# ${KCONFIG_FILE}"
> +               awk "/^(config|menuconfig) ${KCONFIG}$/{ m=1; print; next; } \
> +                    /^(choice|comment|config|end|if|menuconfig|source)/ { m=0; } m" \
> +                   "${KCONFIG_FILE}"
> +               FOUND=1
> +       done
> +
> +       if [[ "${FOUND}" = "0" ]] ; then
> +               echo "Skipping ${KCONFIG} since Kconfig symbol is not found" >&2
> +               return 1
> +       fi
> +
> +}
> +
> +# Run this script from the toplevel kernel source directory.
> +SCRIPT_PATH=$(readlink -f "$0")
> +cd "$(dirname "${SCRIPT_PATH}")/../.." || exit 1
> +
> +RET=0
> +if [[ $# == 0 ]] ; then
> +       # Read Kconfig names from stdin
> +       while read -r KCONFIG ; do
> +               if ! process_kconfig "${KCONFIG}" ; then
> +                       RET=1
> +               fi
> +       done
> +else
> +       # Read Kconfig names from the command line arguments
> +       for NUM in $(seq 1 "$#") ; do
> +               if ! process_kconfig "${!NUM}" ; then
> +                       RET=1
> +               fi
> +       done
> +fi
> +
> +exit "${RET}"
> --
> 2.41.0
>


--
Best Regards

Masahiro Yamada

  reply	other threads:[~2023-08-03  6:24 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-01 17:49 [PATCH 0/2] scripts: add two new scripts to look up Kconfigs Brian Masney
2023-08-01 17:49 ` [PATCH 1/2] scripts: add mod-to-kconfig.sh Brian Masney
2023-08-01 17:49 ` [PATCH 2/2] scripts: add kconfig lookup script Brian Masney
2023-08-03  6:23   ` Masahiro Yamada [this message]
2023-08-03 10:14     ` Brian Masney
2023-08-06 12:45       ` Masahiro Yamada
2025-07-27 18:38     ` Randy Dunlap
2025-07-29 14:03       ` 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=CAK7LNAQ-nhy1_xFYiwuvOKvfUVSjvnEb4ZnJ8EMWo7uJun89Zg@mail.gmail.com \
    --to=masahiroy@kernel.org \
    --cc=bmasney@redhat.com \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).