linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* make kernelrelease ignoring LOCALVERSION_AUTO
@ 2005-11-20 18:39 James Cloos
  2005-11-20 22:31 ` Kasper Sandberg
  2005-11-21  0:30 ` James Cloos
  0 siblings, 2 replies; 7+ messages in thread
From: James Cloos @ 2005-11-20 18:39 UTC (permalink / raw)
  To: linux-kernel

I use $(make kernelrelease) in my kernel install script to get the
version string for the filenames in /boot and the grub menu items.

The partial hash string CONFIG_LOCALVERSION_AUTO=y adds is no longer
showing up in the version kernelrelease echos, although it does show
up in the version string used by $(make modules_install).

I even added an @echo $MODLIB to the kernelrelease rule and got only:

,----
| :; make kernelrelease
| 2.6.15-rc2-lug2
| /lib/modules/2.6.15-rc2-lug2
`----

whereas modules_install shows this:

,----
| :; make -n modules_install
| if [ -z "`/sbin/depmod -V 2>/dev/null | grep module-init-tools`" ]; then \
|         echo "Warning: you may need to install module-init-tools"; \
|         echo "See http://www.codemonkey.org.uk/docs/post-halloween-2.6.txt";\
|         sleep 1; \
| fi
| rm -rf /lib/modules/2.6.15-rc2-lug2-g3bedff1d/kernel
| rm -f /lib/modules/2.6.15-rc2-lug2-g3bedff1d/source
| mkdir -p /lib/modules/2.6.15-rc2-lug2-g3bedff1d/kernel
| ln -s /usr/src/linux-2.6-git /lib/modules/2.6.15-rc2-lug2-g3bedff1d/source
| if [ ! /usr/src/linux-2.6-git -ef  /lib/modules/2.6.15-rc2-lug2-g3bedff1d/build ]; then \
|         rm -f /lib/modules/2.6.15-rc2-lug2-g3bedff1d/build ; \
|         ln -s /usr/src/linux-2.6-git /lib/modules/2.6.15-rc2-lug2-g3bedff1d/build ; \
| fi
| : etc, usw, and so on
`----

So I added the lines:

	@echo kernelreleae is $(KERNELRELEASE)
	@echo modlib is $(MODLIB)

to _modinst_: and got this:

,----
| :; make -n modules_install 2>&1 |head
| echo kernelreleae is 2.6.15-rc2-lug2-g3bedff1d
| echo modlib is /lib/modules/2.6.15-rc2-lug2-g3bedff1d
| if [ -z "`/sbin/depmod -V 2>/dev/null | grep module-init-tools`" ]; then \
|         echo "Warning: you may need to install module-init-tools"; \
|         echo "See http://www.codemonkey.org.uk/docs/post-halloween-2.6.txt";\
|         sleep 1; \
| fi
| rm -rf /lib/modules/2.6.15-rc2-lug2-g3bedff1d/kernel
| rm -f /lib/modules/2.6.15-rc2-lug2-g3bedff1d/source
| mkdir -p /lib/modules/2.6.15-rc2-lug2-g3bedff1d/kernel
`----

So $KERNELRELEASE is /different/ depending on which target is being made.

My laptop is quite slow doing anything disk-intensive, such as git, so
it'll take some time before I can bisect down to a single commit --
especially if a full compile will be required to confirm whether it
works correctly -- but I do know that it is between g9f75e1ef... and
gee90f62b... if anyone with faster hardware cares to try.

-JimC
-- 
James H. Cloos, Jr. <cloos@jhcloos.com>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: make kernelrelease ignoring LOCALVERSION_AUTO
  2005-11-20 18:39 make kernelrelease ignoring LOCALVERSION_AUTO James Cloos
@ 2005-11-20 22:31 ` Kasper Sandberg
  2005-11-21  0:10   ` James Cloos
  2005-11-21  0:30 ` James Cloos
  1 sibling, 1 reply; 7+ messages in thread
From: Kasper Sandberg @ 2005-11-20 22:31 UTC (permalink / raw)
  To: James Cloos; +Cc: linux-kernel

On Sun, 2005-11-20 at 13:39 -0500, James Cloos wrote:
> I use $(make kernelrelease) in my kernel install script to get the
> version string for the filenames in /boot and the grub menu items.
> 
> The partial hash string CONFIG_LOCALVERSION_AUTO=y adds is no longer
> showing up in the version kernelrelease echos, although it does show
> up in the version string used by $(make modules_install).
> 
> I even added an @echo $MODLIB to the kernelrelease rule and got only:
> 
> ,----
> | :; make kernelrelease
> | 2.6.15-rc2-lug2
> | /lib/modules/2.6.15-rc2-lug2
> `----
<snip>
i dont know anything about this, but if it is a bug, it should be fixed,
however, in the meantime, this might help you: (its what i do in my
kernel install script)
eval $(head -n 4 Makefile | sed -e 's/ //g')

then in bash you can do this:
FULLVER=${VERSION}.${PATCHLEVEL}.${SUBLEVEL}${EXTRAVERSION}

hope it might help
> 
> -JimC


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: make kernelrelease ignoring LOCALVERSION_AUTO
  2005-11-20 22:31 ` Kasper Sandberg
@ 2005-11-21  0:10   ` James Cloos
  0 siblings, 0 replies; 7+ messages in thread
From: James Cloos @ 2005-11-21  0:10 UTC (permalink / raw)
  To: Kasper Sandberg; +Cc: linux-kernel

>>>>> "Kasper" == Kasper Sandberg <lkml@metanurb.dk> writes:

Kasper> (its what i do in my kernel install script)
Kasper> evan $(head -n 4 Makefile | sed -e 's/ //g')

Kasper> then in bash you can do this:
Kasper> FULLVER=${VERSION}.${PATCHLEVEL}.${SUBLEVEL}${EXTRAVERSION}

That is like what I used to do.  I switched to $(make kernelrelease)
to deal with LOCALVERSION (which I use via a file) and now the auto
localversion (which adds a ref to the most recent git commit in the
compiling tree).

I did do the bisect (I cannot exaggerate how much faster is was after
a $(git-repack -a -d && git-prune-packed).  Bigger than W.E.Coyote w/
a broken leg vs R.R in overdrive. :)

I'm posting the details separately.

-JimC
-- 
James H. Cloos, Jr. <cloos@jhcloos.com>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: make kernelrelease ignoring LOCALVERSION_AUTO
  2005-11-20 18:39 make kernelrelease ignoring LOCALVERSION_AUTO James Cloos
  2005-11-20 22:31 ` Kasper Sandberg
@ 2005-11-21  0:30 ` James Cloos
  2005-11-21 10:53   ` Uwe Zeisberger
  1 sibling, 1 reply; 7+ messages in thread
From: James Cloos @ 2005-11-21  0:30 UTC (permalink / raw)
  To: linux-kernel; +Cc: Linus Torvalds, Uwe Zeisberger, Sam Ravnborg

I did a $(git-repack -a -d && git-prune-packed) before trying the bisect.  

Wow.  Talk about a speed improvement.

I also found that $(make oldconfig; make kernelrelease) was enough to
bisect down to the commit in question.

The final git bisect bad reported:

,---- :; git bisect bad
| ac4d5f74a9b243d9f3f123fe5ce609478df208d8 is first bad commit
| diff-tree ac4d5f74a9b243d9f3f123fe5ce609478df208d8 (from ab919c06144cfb11c05b5b5cd291daa96ac2e423)
| Author: Uwe Zeisberger <zeisberg@informatik.uni-freiburg.de>
| Date:   Wed Nov 9 15:54:08 2005 +0100
| 
|     [PATCH] kbuild: make kernelrelease in unconfigured kernel prints an error
| 
|     Do not include .config for target kernelrelease
| 
|     Signed-off-by: Uwe Zeisberger <zeisberg@informatik.uni-freiburg.de>
|     Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
| 
| :100644 100644 2dac8010c14296bf71b20da92d7256d6a5b41f22 3152d6377eb20bb79a95850fabf7b6fee3a64ad2 M      Makefile
`----

The unidiff is:

,---- git diff ab919c06144cfb11c05b5b5cd291daa96ac2e423 ac4d5f74a9b243d9f3f123fe5ce609478df208d8
| diff --git a/Makefile b/Makefile
| index 2dac801..3152d63 100644
| --- a/Makefile
| +++ b/Makefile
| @@ -407,7 +407,7 @@ outputmakefile:
|  # of make so .config is not included in this case either (for *config).
| 
|  no-dot-config-targets := clean mrproper distclean \
| -                        cscope TAGS tags help %docs check%
| +                        cscope TAGS tags help %docs check% kernelrelease
| 
|  config-targets := 0
|  mixed-targets  := 0
`----

That means that $(make kernelrelease) sets dot_config := 0.

And since the block:

,---- linux-2.6/Makefile lines 571-574
| ifdef CONFIG_LOCALVERSION_AUTO
|         localversion-auto := $(shell $(PERL) $(srctree)/scripts/setlocalversion $(srctree))
|         LOCALVERSION := $(LOCALVERSION)$(localversion-auto)
| endif
`----

is in the ifeq ($(dot-config),1) section, localversion-auto does not
get set anymore when the target is kernelrelease.

Which really makes kernelrelease useless.


I understand why the patch was proposed and included.

But the kernelrelease is really .config dependant, given the
CONFIG_LOCALVERSION and CONFIG_LOCALVERSION_AUTO options.

Unless it is OK to force a defconfig when kernelrelease is called on
an unconfigured tree?

Whatever the solution, it is commit ac4d5f74a9b243d9f3f123fe5ce609478df208d8
that breaks $(make kernelrelease).

-JimC
-- 
James H. Cloos, Jr. <cloos@jhcloos.com>


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: make kernelrelease ignoring LOCALVERSION_AUTO
  2005-11-21  0:30 ` James Cloos
@ 2005-11-21 10:53   ` Uwe Zeisberger
  2005-11-21 13:54     ` [PATCH] " Uwe Zeisberger
  0 siblings, 1 reply; 7+ messages in thread
From: Uwe Zeisberger @ 2005-11-21 10:53 UTC (permalink / raw)
  To: James Cloos; +Cc: linux-kernel, Linus Torvalds, Sam Ravnborg

James Cloos wrote:
> I did a $(git-repack -a -d && git-prune-packed) before trying the bisect.  
> 
> I also found that $(make oldconfig; make kernelrelease) was enough to
> bisect down to the commit in question.
> 
> The final git bisect bad reported:
> 
> ,---- :; git bisect bad
> | ac4d5f74a9b243d9f3f123fe5ce609478df208d8 is first bad commit
> | diff-tree ac4d5f74a9b243d9f3f123fe5ce609478df208d8 (from ab919c06144cfb11c05b5b5cd291daa96ac2e423)
> | Author: Uwe Zeisberger <zeisberg@informatik.uni-freiburg.de>
> | Date:   Wed Nov 9 15:54:08 2005 +0100
> | 
> |     [PATCH] kbuild: make kernelrelease in unconfigured kernel prints an error
> | 
> |     Do not include .config for target kernelrelease
> | 
> |     Signed-off-by: Uwe Zeisberger <zeisberg@informatik.uni-freiburg.de>
> |     Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
> | 
> | :100644 100644 2dac8010c14296bf71b20da92d7256d6a5b41f22 3152d6377eb20bb79a95850fabf7b6fee3a64ad2 M      Makefile
> `----
>
> Whatever the solution, it is commit ac4d5f74a9b243d9f3f123fe5ce609478df208d8
> that breaks $(make kernelrelease).
That's true, I recently realized that, too, but didn't find the time to
react.

In my eyes the solution has to be that .config is included iff it
exists.

I'll work out a patch and send it to you.

Best regards
Uwe

-- 
Uwe Zeisberger

exit vi, lesson V:
o : q ! CTRL-V <CR> <Esc> " d d d @ d

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH] Re: make kernelrelease ignoring LOCALVERSION_AUTO
  2005-11-21 10:53   ` Uwe Zeisberger
@ 2005-11-21 13:54     ` Uwe Zeisberger
  2005-11-21 22:10       ` James Cloos
  0 siblings, 1 reply; 7+ messages in thread
From: Uwe Zeisberger @ 2005-11-21 13:54 UTC (permalink / raw)
  To: James Cloos; +Cc: linux-kernel, Linus Torvalds, Sam Ravnborg

Uwe Zeisberger wrote:
> James Cloos wrote:
> > Whatever the solution, it is commit ac4d5f74a9b243d9f3f123fe5ce609478df208d8
> > that breaks $(make kernelrelease).
> That's true, I recently realized that, too, but didn't find the time to
> react.
> 
> In my eyes the solution has to be that .config is included iff it
> exists.

Include .config for target kernelrelease if it exists

With this fix the value of CONFIG_LOCALVERSION is appended to the output
of `make kernelrelease`.  The git tag is *not* appended (yet) without a
.config.

Signed-off-by: Uwe Zeisberger <zeisberg@informatik.uni-freiburg.de>

---

 Makefile |   17 ++++++++++++++---
 1 files changed, 14 insertions(+), 3 deletions(-)

applies-to: bf816f7c7055127415fc3b718e260855df815d55
02a17e7669dcc6abd51fefc65af2278e95e4855f
diff --git a/Makefile b/Makefile
index e7a0443..77b51b8 100644
--- a/Makefile
+++ b/Makefile
@@ -407,16 +407,23 @@ outputmakefile:
 # Detect when mixed targets is specified, and make a second invocation
 # of make so .config is not included in this case either (for *config).
 
-no-dot-config-targets := clean mrproper distclean \
-			 cscope TAGS tags help %docs check% kernelrelease
+no-dot-config-targets  := clean mrproper distclean \
+			  cscope TAGS tags help %docs check%
+
+opt-dot-config-targets := kernelrelease
 
 config-targets := 0
 mixed-targets  := 0
 dot-config     := 1
+opt-dot-config := 0
 
-ifneq ($(filter $(no-dot-config-targets), $(MAKECMDGOALS)),)
+ifneq ($(filter $(no-dot-config-targets) $(opt-dot-config-targets), $(MAKECMDGOALS)),)
 	ifeq ($(filter-out $(no-dot-config-targets), $(MAKECMDGOALS)),)
 		dot-config := 0
+	else
+		ifeq ($(filter-out $(opt-dot-config-targets), $(MAKECMDGOALS)),)
+			opt-dot-config := 1
+		endif
 	endif
 endif
 
@@ -483,7 +490,11 @@ ifeq ($(dot-config),1)
 # oldconfig if changes are detected.
 -include .config.cmd
 
+ifeq ($(opt-dot-config),1)
+-include .config
+else
 include .config
+endif
 
 # If .config needs to be updated, it will be done via the dependency
 # that autoconf has on .config.
---
0.99.9g

-- 
Uwe Zeisberger

primes where sieve (p:xs) = [ x | x<-xs, x `rem` p /= 0 ]; \
primes = map head (iterate sieve [2..])

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] Re: make kernelrelease ignoring LOCALVERSION_AUTO
  2005-11-21 13:54     ` [PATCH] " Uwe Zeisberger
@ 2005-11-21 22:10       ` James Cloos
  0 siblings, 0 replies; 7+ messages in thread
From: James Cloos @ 2005-11-21 22:10 UTC (permalink / raw)
  To: Uwe Zeisberger; +Cc: linux-kernel, Linus Torvalds, Sam Ravnborg

>>>>> "Uwe" == Uwe Zeisberger <zeisberg@informatik.uni-freiburg.de> writes:

Uwe> With this fix the value of CONFIG_LOCALVERSION is appended to the
Uwe> output of `make kernelrelease`.  The git tag is *not* appended
Uwe> (yet) without a .config.

That works.

Thanks.

-JimC

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2005-11-21 22:10 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-11-20 18:39 make kernelrelease ignoring LOCALVERSION_AUTO James Cloos
2005-11-20 22:31 ` Kasper Sandberg
2005-11-21  0:10   ` James Cloos
2005-11-21  0:30 ` James Cloos
2005-11-21 10:53   ` Uwe Zeisberger
2005-11-21 13:54     ` [PATCH] " Uwe Zeisberger
2005-11-21 22:10       ` James Cloos

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 NNTP newsgroup(s).