mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: David Woodhouse <dwmw2@infradead.org>
To: Arnaud Lacombe <lacombar@gmail.com>
Cc: Michal Marek <mmarek@suse.cz>, "Ted Ts'o" <tytso@mit.edu>,
	Ingo Molnar <mingo@elte.hu>,
	x86@kernel.org, linux-kernel@vger.kernel.org,
	linux-kbuild@vger.kernel.org, hpa@zytor.com
Subject: Re: [PATCH v2] Enable 'make CONFIG_FOO=y oldconfig'
Date: Sat, 30 Jul 2011 10:04:23 +0100	[thread overview]
Message-ID: <1312016665.20983.75.camel@i7.infradead.org> (raw)
In-Reply-To: <CACqU3MWhc6cGqyR8g73ZxMu3kYjufzHoEEWku6of+-1W1FO21Q@mail.gmail.com>

On Fri, 2011-07-29 at 21:15 -0400, Arnaud Lacombe wrote:
> Technically, kconfig already provides you all the interfaces to set
> symbol to a given value, for `randconfig' via "rand.config", for
> `all{yes,mod,no}config', via all.{yes,mod,no}config, for oldconfig via
> .config. Why another interface ?

It's useful for some people to be able to do this as simply as possible
from the command line, and they get very upset if you suggest that they
might use those other methods instead.

In particular, some people currently use the legacy 'ARCH=i386' and
'ARCH=x86_64' settings on the command line in order to switch the value
of CONFIG_64BIT on and off for various *config targets¹. In fact, I
think that's the *only* thing that those legacy ARCH settings still do;
they could (technically, at least) be killed off if we have an
alternative way of doing it. This provides an alternative, more generic
way of doing it for *all* config options; not just CONFIG_64BIT and not
just for x86.

(¹ Note: in fact, *many* people use 'ARCH=i386' and 'ARCH=x86_64', but
not really for this purpose. Most people use it just to work around the
bug I fixed in my other patch — that the value of CONFIG_64BIT is
*always* overridden to match the build host, unless you do *something*
on the command line to work around it. Just ARCH=x86 would suffice,
since that makes CONFIG_64BIT work sanely again.)

> > +void conf_set_symbol_from_env(char *str)
> > +{
> > +       char *p = strchr(str, '=');
> > +       struct symbol *sym;
> > +       int def = S_DEF_USER;
> > +       int def_flags = SYMBOL_DEF << def;
> > +
> > +       if (!p)
> > +               return;
> the environment should already gives you the guarantee that `p' won't
> be NULL. If that's not the case, the environment is likely to be
> broken.

Yes, that's true. Nevertheless, I've seen broken environments — there's
no harm in being robust. We can't be robust in the face of *all* the
ways the environment could screw up, of course, but this check doesn't
really hurt. Especially given that the getenv() isn't even *in* this
function, so this function is even more justified in checking its
inputs.

> > +
> > +       *p = 0;
> > +       sym = sym_find(str + strlen(CONFIG_));
> > +       *p++ = '=';
> > +
> > +       if (!sym)
> > +               return;
> > +
> > +       sym_calc_value(sym);
> > +       if (!sym_set_string_value(sym, p))
> > +               return;
> > +       conf_message("CONFIG_%s set to %s from environment", sym->name, p);
> please do not hardcode the prefix.

OK.

> > +       if (sym && sym_is_choice_value(sym)) {
> you do not need to test for the validity of a pointer you
> unconditionally dereference right before :)

That's a copy-and-paste from identical code in conf_read_simple(), which
I suppose should be factored out into a separate function. if I really
understood what it was doing I'd be able to suggest a sane name...
sym_validate_choice_state() perhaps?

I'll do that.

> > +               struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym));
> > +               switch (sym->def[def].tri) {
> > +               case no:
> > +                       break;
> > +               case mod:
> > +                       if (cs->def[def].tri == yes) {
> > +                               conf_warning("%s creates inconsistent choice state", sym->name);
> > +                               cs->flags &= ~def_flags;
> > +                       }
> > +                       break;
> > +               case yes:
> > +                       if (cs->def[def].tri != no)
> > +                               conf_warning("override: %s changes choice state", sym->name);
> > +                       cs->def[def].val = sym;
> > +                       break;
> > +               }
> > +               cs->def[def].tri = EXPR_OR(cs->def[def].tri, sym->def[def].tri);
> > +       }
> > +}
> > +
-- 
dwmw2


  reply	other threads:[~2011-07-30  9:04 UTC|newest]

Thread overview: 88+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-29 22:14 [PATCH] Fix corruption of CONFIG_X86_32 in 'make oldconfig' David Woodhouse
2011-05-30  7:23 ` Ingo Molnar
2011-05-30  8:57   ` David Woodhouse
2011-05-30  9:15     ` Ingo Molnar
2011-05-30  9:27       ` David Woodhouse
2011-05-30  9:53         ` Ingo Molnar
2011-05-30 10:06           ` David Woodhouse
2011-05-30 10:25             ` Ingo Molnar
2011-05-30 11:01               ` David Woodhouse
2011-05-30 11:04                 ` Ingo Molnar
2011-05-30 11:12                   ` David Woodhouse
2011-05-30 11:42                     ` Ingo Molnar
2011-05-30 11:55                       ` David Woodhouse
2011-05-30 12:11                         ` Ingo Molnar
2011-05-31  8:53               ` Geert Uytterhoeven
2011-05-31 10:48                 ` Ingo Molnar
2011-05-30 10:40         ` Alexey Dobriyan
2011-05-30 10:09       ` [PATCH v2] x86, kconfig: Pick up the .config arch version " David Woodhouse
2011-06-24 13:37         ` Michal Marek
2011-06-24 14:45           ` David Woodhouse
2011-05-30 10:42     ` [PATCH] Fix corruption of CONFIG_X86_32 " Ingo Molnar
2011-05-30 10:46       ` Ingo Molnar
2011-05-30 10:53         ` Theodore Tso
2011-05-30 10:58           ` Ingo Molnar
2011-05-30 11:04             ` Theodore Tso
2011-05-30 11:30               ` Ingo Molnar
2011-05-30 17:29                 ` Randy Dunlap
2011-05-30 11:57               ` David Woodhouse
2011-05-30 12:14                 ` Ingo Molnar
2011-05-30 19:03               ` David Woodhouse
2011-05-30 19:55                 ` Ted Ts'o
2011-05-30 20:12                   ` David Woodhouse
2011-05-30 22:39                     ` [PATCH] Enable 'make CONFIG_FOO=y oldconfig' David Woodhouse
2011-05-31  0:24                       ` Arnaud Lacombe
2011-05-31 15:48                         ` David Woodhouse
2011-05-31 16:12                           ` Arnaud Lacombe
2011-06-24 13:49                             ` Michal Marek
2011-07-29 23:32                               ` [PATCH v2] " David Woodhouse
2011-07-30  1:15                                 ` Arnaud Lacombe
2011-07-30  9:04                                   ` David Woodhouse [this message]
2011-07-30  0:49                               ` [PATCH v3] x86, kconfig: Default to ARCH=x86 to avoid overriding CONFIG_64BIT David Woodhouse
2011-07-30  1:26                                 ` Arnaud Lacombe
2011-07-30  8:37                                   ` David Woodhouse
2011-07-30 15:21                                     ` Arnaud Lacombe
2011-07-30 15:52                                 ` Arnaud Lacombe
2011-07-30 16:19                                   ` David Woodhouse
2011-07-30 16:33                                     ` Arnaud Lacombe
2011-07-30 18:59                                       ` H. Peter Anvin
2011-07-30 20:58                                         ` David Woodhouse
2011-07-30 22:03                                           ` H. Peter Anvin
2011-07-30 22:17                                             ` David Woodhouse
2011-07-30 22:21                                               ` H. Peter Anvin
2011-07-30 22:24                                               ` Arnaud Lacombe
2011-07-30 22:34                                                 ` David Woodhouse
2011-07-30 22:39                                                   ` H. Peter Anvin
2011-07-30 22:21                                           ` Arnaud Lacombe
2011-07-30 22:57                                             ` David Woodhouse
2011-07-31 19:40                                   ` Arnaud Lacombe
2011-07-31 20:00                                     ` David Woodhouse
2011-07-31 20:24                                       ` Arnaud Lacombe
2011-07-31 20:51                                         ` David Woodhouse
2011-07-31  5:18                                 ` Arnaud Lacombe
2011-07-31  8:13                                   ` David Woodhouse
2011-07-31 21:47                                 ` Arnaud Lacombe
2011-07-31 21:51                                   ` Arnaud Lacombe
2011-05-31  1:44                     ` [PATCH] Fix corruption of CONFIG_X86_32 in 'make oldconfig' Ted Ts'o
2011-05-31  8:37                       ` David Woodhouse
2011-05-31  7:53                     ` Ingo Molnar
2011-05-31  8:55                       ` David Woodhouse
2011-05-31 10:41                         ` Ingo Molnar
2011-05-31 11:43                           ` David Woodhouse
2011-05-31 12:45                             ` Ingo Molnar
2011-05-31 13:44                               ` David Woodhouse
2011-05-31 13:56                                 ` Ingo Molnar
2011-05-31 14:31                                   ` David Woodhouse
2011-05-31 14:14                             ` Geert Uytterhoeven
2011-05-31 12:12                         ` Ted Ts'o
2011-05-31 12:32                           ` David Woodhouse
2011-05-31 12:50                           ` Ingo Molnar
2011-05-30 11:06             ` David Woodhouse
2011-05-30 11:34               ` Ingo Molnar
2011-05-30 11:05     ` Arnd Bergmann
2011-05-30 17:27       ` Randy Dunlap
2011-05-30 18:40         ` Arnd Bergmann
2011-05-30 20:01           ` Randy Dunlap
2011-05-30 20:30           ` Arnaud Lacombe
2011-05-30 21:04             ` Arnd Bergmann
2011-05-30 21:16             ` Randy Dunlap

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=1312016665.20983.75.camel@i7.infradead.org \
    --to=dwmw2@infradead.org \
    --cc=hpa@zytor.com \
    --cc=lacombar@gmail.com \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=mmarek@suse.cz \
    --cc=tytso@mit.edu \
    --cc=x86@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

all inboxes | Powered by JetHome®