All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sam Ravnborg <sam@ravnborg.org>
To: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	"H. Peter Anvin" <hpa@zytor.com>, Ingo Molnar <mingo@kernel.org>,
	Kyungsik Lee <kyungsik.lee@lge.com>,
	Michal Marek <mmarek@suse.cz>,
	linux-kernel@vger.kernel.org, linux-kbuild@vger.kernel.org,
	x86@kernel.org, celinux-dev@lists.celinuxforum.org,
	linux-arm-kernel@lists.infradead.org, hyojun.im@lge.com,
	chan.jeong@lge.com, raphael.andy.lee@gmail.com,
	Ingo Molnar <mingo@elte.hu>, Thomas Gleixner <tglx@linutronix.de>,
	Russell King <rmk@arm.linux.org.uk>,
	Borislav Petkov <bp@alien8.de>,
	Florian Fainelli <florian@openwrt.org>,
	Yann Collet <yann.collet.73@gmail.com>,
	Chanho Min <chanho.min@lge.com>
Subject: Re: [PATCH -next 2/2] kbuild: fix for updated LZ4 tool with the new streaming format
Date: Thu, 18 Jul 2013 22:47:55 +0200	[thread overview]
Message-ID: <20130718204755.GA7900@merkur.ravnborg.org> (raw)
In-Reply-To: <20130717223033.GF3385@free.fr>

On Thu, Jul 18, 2013 at 12:30:33AM +0200, Yann E. MORIN wrote:
> Sam, All,
> 
> Well, while I was fighting on this on my side... ;-)
> 
> On 2013-07-17 23:16 +0200, Sam Ravnborg spake thusly:
> > > We could extend the symbol option part to retreive values from a binary.
> > > Something like this:
> > > 
> > > config FOOBAR
> > >         bool
> > >         option exec="true"
> > > 
> > > FOOBAR would assume the value "y" if the command true has exit code == 0, otherwise "n".
> > > And similar conversions for other types.
> > > 
> > > This only extendt Kconfig slightly - using an already present method to import
> > > external values.
> > > 
> > > The drawback I see with this approach is that we may execute a lot of small programs
> > > where the value is never used.
> > 
> > Following is a quick patch implmenting this idea.
> > You need to run gperf manually to enable this.
> > 
> > "gperf -C scripts/kconfig/zconf.gperf > scripts/kconfig/zconf.hash.c"
> > 
> > I did not figure out how to use the built-in rules to generate this file :-(
> 
> make REGENERATE_PARSERS=y menuconfig
Thanks!

> 
> > I have tested this lightly - as we should discuss if this is a viable way forward.
> 
> Instead of extending the Kconfig language, I was thinking (as initially
> suggested by Andrew) of generating a Kconfig file before all config
> targets, and source that Kconfig file from $(TOPDIR)/Kconfig.
> 
> I'm not a fan od extending the Kconfig language in this way. It feels
> weird to me. Especially when we have a way to solve this specific issue
> with a script that generates the needed Kconfig symbols before any
> config target is called.

The problem we want to solve is that we want some external state to influence
the Kconfig symbols.
In this case if we support lz4.
In other cases if we support a specific gcc feature or whatever.

The relevant external state may not be relevant in all cases.
We may have something that is arm specific - and we do not want to waste
time on this when we are building for sparc.

We can consider two general cases.
- Where the external state is static and independent on any other config symbols.
  lz4 is such a case.
- Where the external state depends on a config symbol.
  As we specify CROSS_COMPILE as a config symbol this may influence if gcc
  support a specific feature or not.

Both approaches suggested (generate Kconfig and exec option) supports that
we only execute relevant stuff. When we generate Kconfig we can call arch specific
scripts and for exec option we include the arch specific stuff in the arch specific
Kconfig files.

None of the approaches presented so far can handle the fact that a config symbol
may influence the external state.
But I think the exec option can be updated to support this which is why
that is my preference.

This extends the Kconfig language - but at least it is a very minor extension.

	Sam

WARNING: multiple messages have this Message-ID (diff)
From: sam@ravnborg.org (Sam Ravnborg)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH -next 2/2] kbuild: fix for updated LZ4 tool with the new streaming format
Date: Thu, 18 Jul 2013 22:47:55 +0200	[thread overview]
Message-ID: <20130718204755.GA7900@merkur.ravnborg.org> (raw)
In-Reply-To: <20130717223033.GF3385@free.fr>

On Thu, Jul 18, 2013 at 12:30:33AM +0200, Yann E. MORIN wrote:
> Sam, All,
> 
> Well, while I was fighting on this on my side... ;-)
> 
> On 2013-07-17 23:16 +0200, Sam Ravnborg spake thusly:
> > > We could extend the symbol option part to retreive values from a binary.
> > > Something like this:
> > > 
> > > config FOOBAR
> > >         bool
> > >         option exec="true"
> > > 
> > > FOOBAR would assume the value "y" if the command true has exit code == 0, otherwise "n".
> > > And similar conversions for other types.
> > > 
> > > This only extendt Kconfig slightly - using an already present method to import
> > > external values.
> > > 
> > > The drawback I see with this approach is that we may execute a lot of small programs
> > > where the value is never used.
> > 
> > Following is a quick patch implmenting this idea.
> > You need to run gperf manually to enable this.
> > 
> > "gperf -C scripts/kconfig/zconf.gperf > scripts/kconfig/zconf.hash.c"
> > 
> > I did not figure out how to use the built-in rules to generate this file :-(
> 
> make REGENERATE_PARSERS=y menuconfig
Thanks!

> 
> > I have tested this lightly - as we should discuss if this is a viable way forward.
> 
> Instead of extending the Kconfig language, I was thinking (as initially
> suggested by Andrew) of generating a Kconfig file before all config
> targets, and source that Kconfig file from $(TOPDIR)/Kconfig.
> 
> I'm not a fan od extending the Kconfig language in this way. It feels
> weird to me. Especially when we have a way to solve this specific issue
> with a script that generates the needed Kconfig symbols before any
> config target is called.

The problem we want to solve is that we want some external state to influence
the Kconfig symbols.
In this case if we support lz4.
In other cases if we support a specific gcc feature or whatever.

The relevant external state may not be relevant in all cases.
We may have something that is arm specific - and we do not want to waste
time on this when we are building for sparc.

We can consider two general cases.
- Where the external state is static and independent on any other config symbols.
  lz4 is such a case.
- Where the external state depends on a config symbol.
  As we specify CROSS_COMPILE as a config symbol this may influence if gcc
  support a specific feature or not.

Both approaches suggested (generate Kconfig and exec option) supports that
we only execute relevant stuff. When we generate Kconfig we can call arch specific
scripts and for exec option we include the arch specific stuff in the arch specific
Kconfig files.

None of the approaches presented so far can handle the fact that a config symbol
may influence the external state.
But I think the exec option can be updated to support this which is why
that is my preference.

This extends the Kconfig language - but at least it is a very minor extension.

	Sam

  parent reply	other threads:[~2013-07-18 20:48 UTC|newest]

Thread overview: 110+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-06  8:42 [PATCH -next 1/2] arm: Remove enforced Os flag for LZ4 decompressor Kyungsik Lee
2013-05-06  8:42 ` Kyungsik Lee
2013-05-06  8:42 ` [PATCH -next 2/2] kbuild: fix for updated LZ4 tool with the new streaming format Kyungsik Lee
2013-05-06  8:42   ` Kyungsik Lee
2013-05-06  9:51   ` Borislav Petkov
2013-05-06  9:51     ` Borislav Petkov
2013-07-10  8:12     ` Geert Uytterhoeven
2013-07-10  8:12       ` Geert Uytterhoeven
2013-07-10  8:12       ` Geert Uytterhoeven
2013-07-10  9:36       ` Borislav Petkov
2013-07-10  9:36         ` Borislav Petkov
2013-07-10  9:36         ` Borislav Petkov
2013-07-10 18:28         ` Markus Trippelsdorf
2013-07-10 18:28           ` Markus Trippelsdorf
2013-07-10 18:28           ` Markus Trippelsdorf
2013-07-10 18:28           ` Markus Trippelsdorf
2013-07-10 20:01           ` Borislav Petkov
2013-07-10 20:01             ` Borislav Petkov
2013-07-10 20:01             ` Borislav Petkov
2013-07-10 20:01             ` Borislav Petkov
2013-07-11  4:34           ` Kyungsik Lee
2013-07-11  4:34             ` Kyungsik Lee
2013-07-11  4:34             ` Kyungsik Lee
2013-07-11  4:34             ` Kyungsik Lee
2013-07-11  9:46             ` [PATCH] .gitignore: ignore *.lz4 files Markus Trippelsdorf
2013-07-11  9:46               ` Markus Trippelsdorf
2013-07-11  9:46               ` Markus Trippelsdorf
2013-07-11  9:46               ` Markus Trippelsdorf
2013-07-12  7:56   ` [PATCH -next 2/2] kbuild: fix for updated LZ4 tool with the new streaming format Ingo Molnar
2013-07-12  7:56     ` Ingo Molnar
2013-07-12  8:01     ` Borislav Petkov
2013-07-12  8:01       ` Borislav Petkov
2013-07-12 10:13       ` Ingo Molnar
2013-07-12 10:13         ` Ingo Molnar
2013-07-12 10:23         ` Borislav Petkov
2013-07-12 10:23           ` Borislav Petkov
2013-07-12 11:18           ` Andrew Morton
2013-07-12 11:18             ` Andrew Morton
2013-07-12 12:06             ` Ingo Molnar
2013-07-12 12:06               ` Ingo Molnar
2013-07-12 12:13             ` Borislav Petkov
2013-07-12 12:13               ` Borislav Petkov
2013-07-12 12:34               ` Florian Fainelli
2013-07-12 12:34                 ` Florian Fainelli
2013-07-12 12:34                 ` Florian Fainelli
2013-07-12 12:46                 ` Borislav Petkov
2013-07-12 12:46                   ` Borislav Petkov
2013-07-12 12:46                   ` Borislav Petkov
2013-07-15 22:03     ` Andrew Morton
2013-07-15 22:03       ` Andrew Morton
2013-07-15 22:08       ` H. Peter Anvin
2013-07-15 22:08         ` H. Peter Anvin
2013-07-16  7:47         ` Andrew Morton
2013-07-16  7:47           ` Andrew Morton
2013-07-16  7:56           ` Andrew Morton
2013-07-16  7:56             ` Andrew Morton
2013-07-16  8:08             ` Yann E. MORIN
2013-07-16  8:08               ` Yann E. MORIN
2013-07-16  8:27               ` Andrew Morton
2013-07-16  8:27                 ` Andrew Morton
2013-07-16  9:05                 ` Borislav Petkov
2013-07-16  9:05                   ` Borislav Petkov
2013-07-16  9:12                   ` Yann E. MORIN
2013-07-16  9:12                     ` Yann E. MORIN
2013-07-16  9:22                     ` Borislav Petkov
2013-07-16  9:22                       ` Borislav Petkov
2013-07-16  9:32                       ` Yann E. MORIN
2013-07-16  9:32                         ` Yann E. MORIN
2013-07-16  9:38                         ` Borislav Petkov
2013-07-16  9:38                           ` Borislav Petkov
2013-07-16  9:45                           ` Yann E. MORIN
2013-07-16  9:45                             ` Yann E. MORIN
2013-07-16  9:59                             ` Borislav Petkov
2013-07-16  9:59                               ` Borislav Petkov
2013-07-16 10:04                               ` Florian Fainelli
2013-07-16 10:04                                 ` Florian Fainelli
2013-07-16 10:04                                 ` Florian Fainelli
2013-07-16 18:04               ` Sam Ravnborg
2013-07-16 18:04                 ` Sam Ravnborg
2013-07-17 21:16                 ` Sam Ravnborg
2013-07-17 21:16                   ` Sam Ravnborg
2013-07-17 21:44                   ` Borislav Petkov
2013-07-17 21:44                     ` Borislav Petkov
2013-07-17 22:30                   ` Yann E. MORIN
2013-07-17 22:30                     ` Yann E. MORIN
2013-07-17 23:22                     ` H. Peter Anvin
2013-07-17 23:22                       ` H. Peter Anvin
2013-07-18  8:02                       ` Geert Uytterhoeven
2013-07-18  8:02                         ` Geert Uytterhoeven
2013-07-18  8:02                         ` Geert Uytterhoeven
2013-07-18  7:22                     ` Geert Uytterhoeven
2013-07-18  7:22                       ` Geert Uytterhoeven
2013-07-18  7:22                       ` Geert Uytterhoeven
2013-07-18  7:34                       ` Andrew Morton
2013-07-18  7:34                         ` Andrew Morton
2013-07-18  7:34                         ` Andrew Morton
2013-07-18  7:47                         ` Yann E. MORIN
2013-07-18  7:47                           ` Yann E. MORIN
2013-07-18  7:47                           ` Yann E. MORIN
2013-07-18  7:52                           ` Andrew Morton
2013-07-18  7:52                             ` Andrew Morton
2013-07-18  7:52                             ` Andrew Morton
2013-07-18 20:47                     ` Sam Ravnborg [this message]
2013-07-18 20:47                       ` Sam Ravnborg
2013-07-16  9:13             ` Florian Fainelli
2013-07-16  9:13               ` Florian Fainelli
2013-07-16  9:13               ` Florian Fainelli
2013-07-16  9:25               ` Yann E. MORIN
2013-07-16  9:25                 ` Yann E. MORIN
2013-07-16  9:25                 ` Yann E. MORIN

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=20130718204755.GA7900@merkur.ravnborg.org \
    --to=sam@ravnborg.org \
    --cc=akpm@linux-foundation.org \
    --cc=bp@alien8.de \
    --cc=celinux-dev@lists.celinuxforum.org \
    --cc=chan.jeong@lge.com \
    --cc=chanho.min@lge.com \
    --cc=florian@openwrt.org \
    --cc=hpa@zytor.com \
    --cc=hyojun.im@lge.com \
    --cc=kyungsik.lee@lge.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=mingo@kernel.org \
    --cc=mmarek@suse.cz \
    --cc=raphael.andy.lee@gmail.com \
    --cc=rmk@arm.linux.org.uk \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    --cc=yann.collet.73@gmail.com \
    --cc=yann.morin.1998@free.fr \
    /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.