public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Greg Banks <gnb@alphalink.com.au>
To: Peter Samuelson <peter@cadcamlab.org>
Cc: Kai Germaschewski <kai@tp1.ruhr-uni-bochum.de>,
	linux-kernel@vger.kernel.org, kbuild-devel@lists.sourceforge.net
Subject: Re: [kbuild-devel] [patch] config language dep_* enhancements
Date: Sat, 10 Aug 2002 00:43:25 +1000	[thread overview]
Message-ID: <3D53D50D.7FA48644@alphalink.com.au> (raw)
In-Reply-To: 20020809041543.GA4818@cadcamlab.org

G'day,

I like the basic idea here, and I'm pleased that someone has the courage to
tackle some of the brokenness of the kconfig language (if only because it
will provide me with a precedent when I try to submit some of my patches ;-).

I was a bit worried when I first saw the patch (after all, kconfig is held
together with spit and string) but on careful reading it's mostly doing the
right thing.  Mostly.

Peter Samuelson wrote:
> 
>   [Kai Germaschewski]
> > > As you're hacking Configure anyway, what about "fixing"
> > >
> > >     dep_tristate ' ..' CONFIG_FOO $CONFIG_BAR,
> 
> [I wrote]
> > I've thought about that many times.  I think the cleanest solution is
> > to deprecate the '$' entirely:
> >
> >       dep_tristate ' ..' CONFIG_FOO CONFIG_BAR
> 
> This applies to 2.4.20pre and (except changelog bits) to 2.5.30 with
> offsets.  

You're willing to potentially perturb 2.4?

> I still haven't touched xconfig, because frankly it scares
> me.  The tkparse.c vs Peter match is well underway, stay tuned..

Good luck, it scares me too.

> --- 2.4.20pre1/Documentation/kbuild/config-language.txt 2002-02-25 13:37:51.000000000 -0600
> +++ 2.4.20pre1p/Documentation/kbuild/config-language.txt        2002-08-08 23:10:44.000000000 -0500
> @@ -84,8 +84,17 @@
>      to generate dependencies on individual CONFIG_* symbols instead of
>      making one massive dependency on include/linux/autoconf.h.
> 
> -    A /dep/ is a dependency.  Syntactically, it is a /word/.  At run
> -    time, a /dep/ must evaluate to "y", "m", "n", or "".
> +    A /tristate/ is a single character in the set {"y","m","n"}.
> +
> +    A /dep/ is a dependency.  Syntactically, it is a /word/.  It is
> +    either a /tristate/ or a /symbol/ (with an optional, but
> +    deprecated, prefix "$").  At run time, the /symbol/, if present,
> +    is expanded to produce a /tristate/.  If the /symbol/ has not been
> +    defined, the /tristate/ will be "n".

The last statement is inconsistent with the shell code and the explanations of 
the dep_* statements, which sensibly preserve the current semantics where
an undefined symbol has a distinct fourth value which is not y, m or n.

I'm pleased to see that you have preserved those semantics.  There are many
places in the corpus where a dep_* lists as a dependency a variable which is
not defined until later, or is only defined in some architectures, or is never
defined.  Earlier today I tweaked up gcml2 to detect them and found 260 in
2.5.29.


> +    In addition, the /dep/ may have a prefix "!", which negates the
> +    sense of the /tristate/: "!y" and "!m" reduce to "n", and "!n"
> +    reduces to "y".

Perhaps "negates" isn't quite the right word in four-state logic.

> --- 2.4.20pre1/scripts/Configure        2001-07-02 15:56:40.000000000 -0500
> +++ 2.4.20pre1p/scripts/Configure       2002-08-08 22:31:49.000000000 -0500
> @@ -232,6 +241,28 @@
>  }
> 
>  #
> +# dep_calc reduces a dependency line down to a single char [ymn]
> +#
> +function dep_calc () {
> +       local neg arg
> +       cur_dep=y       # return value
> +       for arg; do
> +         neg=;
> +         case "$arg" in
> +           !*) neg=N; arg=${arg#?} ;;
> +         esac
> +         case "$arg" in
> +           y|m|n) ;;
> +           *) arg=$(eval echo \$$arg) ;;

Don't you want to check at this point that arg starts with CONFIG_?
Also, how about quoting \$$arg  ?

> +         esac
> +         case "$neg$arg" in
> +           m) cur_dep=m ;;
> +           n|Ny|Nm) cur_dep=n; return ;;
> +         esac

When CONFIG_FOO is undefined, !CONFIG_FOO and CONFIG_FOO are both ignored,
which is not consistent with the mention of "!" in the explanations for the
dep_* statements.  Perhaps you need to more carefully define the semantics
of the ! prefix.

Greg.
-- 
the price of civilisation today is a courageous willingness to prevail,
with force, if necessary, against whatever vicious and uncomprehending
enemies try to strike it down.     - Roger Sandall, The Age, 28Sep2001.

  reply	other threads:[~2002-08-09 14:39 UTC|newest]

Thread overview: 110+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <200208062329.g76NTqP30962@devserv.devel.redhat.com.suse.lists.linux.kernel>
2002-08-07 10:01 ` Linux 2.4.20-pre1 Andi Kleen
2002-08-07 11:50   ` Alan Cox
2002-08-07 10:41     ` 64bit clean drivers was " Andi Kleen
2002-08-07 12:16       ` Alan Cox
2002-08-07 11:04         ` Andi Kleen
2002-08-07 11:10           ` Alan Cox
2002-08-07 11:18             ` Andi Kleen
2002-08-07 11:51               ` Alan Cox
2002-08-07 11:56                 ` Andi Kleen
2002-08-07 13:26                   ` Alan Cox
2002-08-07 16:28                     ` Jeff Garzik
2002-08-08 15:14         ` Peter Samuelson
2002-08-08 16:49           ` Kai Germaschewski
2002-08-08 16:47             ` Peter Samuelson
2002-08-09  4:15               ` [patch] config language dep_* enhancements Peter Samuelson
2002-08-09 14:43                 ` Greg Banks [this message]
2002-08-09 15:38                   ` [kbuild-devel] " Andreas Schwab
2002-08-12 10:38                     ` Greg Banks
2002-08-09 16:10                   ` Peter Samuelson
2002-08-12 11:04                     ` Greg Banks
2002-08-12 14:46                       ` Kai Germaschewski
2002-08-12 19:45                         ` Roman Zippel
2002-08-12 21:40                           ` [kbuild-devel] " Tom Rini
2002-08-12 22:13                             ` Roman Zippel
2002-08-12 22:15                               ` Tom Rini
2002-08-12 22:32                                 ` Roman Zippel
2002-08-12 22:47                                   ` Tom Rini
2002-08-12 23:17                                     ` Roman Zippel
2002-08-12 23:32                                       ` Tom Rini
2002-08-13  3:35                                       ` Greg Banks
2002-08-13  0:03                           ` Peter Samuelson
2002-08-13  7:54                             ` Roman Zippel
2002-08-13  3:33                           ` Greg Banks
2002-08-13  9:32                             ` Roman Zippel
2002-08-13 10:32                               ` [kbuild-devel] " Greg Banks
     [not found]                         ` <3D587483.1C459694@alphalink.com.au>
2002-08-13  3:39                           ` Peter Samuelson
2002-08-13  4:31                             ` Greg Banks
2002-08-13 14:00                             ` [kbuild-devel] " Greg Banks
2002-08-13 15:53                               ` Peter Samuelson
2002-08-13 18:48                                 ` Kai Germaschewski
2002-08-14  1:13                                 ` Greg Banks
2002-08-14  3:28                                   ` Peter Samuelson
2002-08-14  4:35                                     ` [patch] kernel config 3/N - move sound into drivers/media Peter Samuelson
2002-08-14  5:08                                       ` Kai Germaschewski
2002-08-14  5:49                                         ` Peter Samuelson
2002-08-14 10:56                                           ` [kbuild-devel] " Arnd Bergmann
2002-08-14 12:20                                             ` S390 vs S390x, was " Christoph Hellwig
2002-08-14 17:21                                               ` Arnd Bergmann
2002-08-14 18:16                                                 ` Christoph Hellwig
2002-08-14 21:18                                                   ` Arnd Bergmann
2002-08-14 19:22                                                     ` Christoph Hellwig
2002-08-14 22:52                                                       ` Arnd Bergmann
2002-08-14  6:14                                         ` Greg Banks
2002-08-14  6:31                                       ` Greg Banks
2002-08-14  8:16                                       ` Russell King
2002-08-14  6:01                                     ` [kbuild-devel] Re: [patch] config language dep_* enhancements Greg Banks
2002-08-14  8:18                                       ` Russell King
2002-08-14 14:22                                       ` Peter Samuelson
2002-08-15  1:28                                         ` Greg Banks
2002-08-15  2:33                                           ` Peter Samuelson
2002-08-15  3:27                                             ` Greg Banks
2002-08-13 18:43                           ` Kai Germaschewski
2002-08-13 20:48                             ` Peter Samuelson
2002-08-14  1:27                               ` Greg Banks
2002-08-14  1:42                                 ` Peter Samuelson
2002-08-14  2:27                                   ` Greg Banks
2002-08-14  2:57                                     ` Peter Samuelson
2002-08-14  4:39                                     ` Kai Germaschewski
2002-08-14  5:35                                       ` Greg Banks
2002-08-14 11:40                               ` Roman Zippel
2002-08-15  1:52                                 ` [kbuild-devel] " Greg Banks
2002-08-15  3:30                                   ` John Alvord
2002-08-16  2:24                                     ` Peter Samuelson
2002-08-15  9:46                                   ` Roman Zippel
2002-08-15 14:43                                     ` Kai Germaschewski
2002-08-15 20:12                                       ` Roman Zippel
2002-08-16  2:08                                     ` Greg Banks
2002-08-16 10:54                                       ` Roman Zippel
2002-08-19  9:27                                         ` Greg Banks
2002-08-19 10:20                                           ` Roman Zippel
2002-08-20 14:10                                             ` Greg Banks
2002-08-20 17:51                                               ` Roman Zippel
2002-08-19 20:30                                           ` Sam Ravnborg
2002-08-20 14:28                                             ` David Woodhouse
2002-08-23 15:18                                           ` Kai Germaschewski
2002-08-23 23:03                                             ` Roman Zippel
2002-08-24 12:43                                               ` Greg Banks
2002-08-14  1:19                             ` Greg Banks
2002-08-12 15:47                       ` Peter Samuelson
2002-08-13  3:23                         ` [kbuild-devel] " Greg Banks
2002-08-13 16:04                           ` Sam Ravnborg
2002-08-13 16:20                             ` [kbuild-devel] " Peter Samuelson
2002-08-14  0:22                             ` Greg Banks
2002-08-14 20:14                               ` Get rid of shell based Config.in parsers? Sam Ravnborg
2002-08-14 22:21                                 ` [kbuild-devel] " Peter Samuelson
2002-08-15 17:51                                 ` Linus Torvalds
2002-08-08 23:57             ` 64bit clean drivers was Re: Linux 2.4.20-pre1 Thunder from the hill
2002-08-08 19:23           ` Roman Zippel
2002-08-08 20:03             ` Andi Kleen
2002-08-08 20:19               ` Roman Zippel
2002-08-08 17:42                 ` Peter Samuelson
2002-08-09 10:21                   ` Roman Zippel
2002-08-09 11:47                     ` Peter Samuelson
2002-08-09 12:07                       ` Russell King
2002-08-09 12:49                         ` Peter Samuelson
2002-08-09 14:53                           ` [kbuild-devel] " Greg Banks
2002-08-09 22:37                             ` Thunder from the hill
2002-08-08 20:37                 ` Andi Kleen
2002-08-08 20:51                   ` Roman Zippel
2002-08-07 17:31       ` Thunder from the hill

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=3D53D50D.7FA48644@alphalink.com.au \
    --to=gnb@alphalink.com.au \
    --cc=kai@tp1.ruhr-uni-bochum.de \
    --cc=kbuild-devel@lists.sourceforge.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=peter@cadcamlab.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