linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* changing local version requires full rebuild
@ 2005-01-16 15:22 Michael S. Tsirkin
  2005-01-16 16:16 ` Sam Ravnborg
  0 siblings, 1 reply; 10+ messages in thread
From: Michael S. Tsirkin @ 2005-01-16 15:22 UTC (permalink / raw)
  To: linux-kernel, kbuild-devel

Hi!
Is it just me, or does changing the local version always require
a full kernel rebuild?

If so, I'd like to fix it, since I like copying
my kernel source with --preserve and changing the
local version, then going back to the old version in case of
a crash.
Its important to change the local version to force 
make install and make modules_install to put things in a separate
directory.

Any ideas on why is that and whether its possible to fix it?

mst

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

* Re: changing local version requires full rebuild
  2005-01-16 15:22 changing local version requires full rebuild Michael S. Tsirkin
@ 2005-01-16 16:16 ` Sam Ravnborg
  2005-01-16 16:28   ` Michael S. Tsirkin
                     ` (3 more replies)
  0 siblings, 4 replies; 10+ messages in thread
From: Sam Ravnborg @ 2005-01-16 16:16 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: linux-kernel, kbuild-devel

On Sun, Jan 16, 2005 at 05:22:42PM +0200, Michael S. Tsirkin wrote:
> Hi!
> Is it just me, or does changing the local version always require
> a full kernel rebuild?
> 
> If so, I'd like to fix it, since I like copying
> my kernel source with --preserve and changing the
> local version, then going back to the old version in case of
> a crash.
> Its important to change the local version to force 
> make install and make modules_install to put things in a separate
> directory.

Just tried it out here.
After cp -Ra only a limited part of the kernel rebuilds.
o oiu.c in ieee directory - because it dependson the shell script
o A number of drivers that include version.h
	- This should be changed so local version does not affect
	  the reast of version.h.
o Other stuff that is always build if kernel has changed

Do you use "echo -mylocalver > localversion" to change the local version?

	Sam

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

* Re: changing local version requires full rebuild
  2005-01-16 16:16 ` Sam Ravnborg
@ 2005-01-16 16:28   ` Michael S. Tsirkin
  2005-01-16 17:26     ` Sam Ravnborg
  2005-01-16 17:24   ` Michael S. Tsirkin
                     ` (2 subsequent siblings)
  3 siblings, 1 reply; 10+ messages in thread
From: Michael S. Tsirkin @ 2005-01-16 16:28 UTC (permalink / raw)
  To: linux-kernel, kbuild-devel

Hello!
Quoting r. Sam Ravnborg (sam@ravnborg.org) "Re: changing local version requires full rebuild":
> On Sun, Jan 16, 2005 at 05:22:42PM +0200, Michael S. Tsirkin wrote:
> > Hi!
> > Is it just me, or does changing the local version always require
> > a full kernel rebuild?
> > 
> > If so, I'd like to fix it, since I like copying
> > my kernel source with --preserve and changing the
> > local version, then going back to the old version in case of
> > a crash.
> > Its important to change the local version to force 
> > make install and make modules_install to put things in a separate
> > directory.
> 
> Just tried it out here.
> After cp -Ra only a limited part of the kernel rebuilds.
> o oiu.c in ieee directory - because it dependson the shell script
> o A number of drivers that include version.h
> 	- This should be changed so local version does not affect
> 	  the reast of version.h.
> o Other stuff that is always build if kernel has changed
> 
> Do you use "echo -mylocalver > localversion" to change the local version?
> 
> 	Sam

No, I do makemenuconfig to edit the version. Is that right?

mst

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

* Re: changing local version requires full rebuild
  2005-01-16 16:16 ` Sam Ravnborg
  2005-01-16 16:28   ` Michael S. Tsirkin
@ 2005-01-16 17:24   ` Michael S. Tsirkin
  2005-01-16 18:11   ` Michael S. Tsirkin
  2005-01-16 20:00   ` [PATCH] split UTS_RELEASE to a separate header Michael S. Tsirkin
  3 siblings, 0 replies; 10+ messages in thread
From: Michael S. Tsirkin @ 2005-01-16 17:24 UTC (permalink / raw)
  To: linux-kernel, kbuild-devel

Hello!
Quoting r. Sam Ravnborg (sam@ravnborg.org) "Re: changing local version requires full rebuild":
> On Sun, Jan 16, 2005 at 05:22:42PM +0200, Michael S. Tsirkin wrote:
> > Hi!
> > Is it just me, or does changing the local version always require
> > a full kernel rebuild?
> > 
> > If so, I'd like to fix it, since I like copying
> > my kernel source with --preserve and changing the
> > local version, then going back to the old version in case of
> > a crash.
> > Its important to change the local version to force 
> > make install and make modules_install to put things in a separate
> > directory.
> 
> Just tried it out here.
> After cp -Ra only a limited part of the kernel rebuilds.
> o oiu.c in ieee directory - because it dependson the shell script
> o A number of drivers that include version.h
> 	- This should be changed so local version does not affect
> 	  the reast of version.h.
> o Other stuff that is always build if kernel has changed
> 
> Do you use "echo -mylocalver > localversion" to change the local version?
> 
> 	Sam

Just tried this with the same effect.

Could it be your version was already -mylocalver?

Please note that you have to actually *change* the local
version, otherwise almost nothing is recompiled.
Just a touch does nothing.

Actually, the directory kernel/ is not recompiled (so the subject is a
bit misleading) , but a huge number of files in drivers, filesystems, sound,
lib and net directory - are.

MST

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

* Re: changing local version requires full rebuild
  2005-01-16 16:28   ` Michael S. Tsirkin
@ 2005-01-16 17:26     ` Sam Ravnborg
  2005-01-16 17:55       ` Michael S. Tsirkin
  2005-01-16 19:42       ` Michael S. Tsirkin
  0 siblings, 2 replies; 10+ messages in thread
From: Sam Ravnborg @ 2005-01-16 17:26 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: linux-kernel, kbuild-devel

 > 
> > Do you use "echo -mylocalver > localversion" to change the local version?
> > 
> > 	Sam
> 
> No, I do makemenuconfig to edit the version. Is that right?

That is fine too.
When building - do you use separate output dir?

	Sam

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

* Re: changing local version requires full rebuild
  2005-01-16 17:26     ` Sam Ravnborg
@ 2005-01-16 17:55       ` Michael S. Tsirkin
  2005-01-16 19:42       ` Michael S. Tsirkin
  1 sibling, 0 replies; 10+ messages in thread
From: Michael S. Tsirkin @ 2005-01-16 17:55 UTC (permalink / raw)
  To: linux-kernel, kbuild-devel

Hello!
Quoting r. Sam Ravnborg (sam@ravnborg.org) "Re: changing local version requires full rebuild":
>  > 
> > > Do you use "echo -mylocalver > localversion" to change the local version?
> > > 
> > > 	Sam
> > 
> > No, I do makemenuconfig to edit the version. Is that right?
> 
> That is fine too.
> When building - do you use separate output dir?
> 
> 	Sam

nope, just make


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

* Re: changing local version requires full rebuild
  2005-01-16 16:16 ` Sam Ravnborg
  2005-01-16 16:28   ` Michael S. Tsirkin
  2005-01-16 17:24   ` Michael S. Tsirkin
@ 2005-01-16 18:11   ` Michael S. Tsirkin
  2005-01-16 20:00   ` [PATCH] split UTS_RELEASE to a separate header Michael S. Tsirkin
  3 siblings, 0 replies; 10+ messages in thread
From: Michael S. Tsirkin @ 2005-01-16 18:11 UTC (permalink / raw)
  To: linux-kernel, kbuild-devel

Hello!
Quoting r. Sam Ravnborg (sam@ravnborg.org) "Re: changing local version requires full rebuild":
> On Sun, Jan 16, 2005 at 05:22:42PM +0200, Michael S. Tsirkin wrote:
> > Hi!
> > Is it just me, or does changing the local version always require
> > a full kernel rebuild?
> > 
> > If so, I'd like to fix it, since I like copying
> > my kernel source with --preserve and changing the
> > local version, then going back to the old version in case of
> > a crash.
> > Its important to change the local version to force 
> > make install and make modules_install to put things in a separate
> > directory.
> 
> Just tried it out here.
> After cp -Ra only a limited part of the kernel rebuilds.
> o oiu.c in ieee directory - because it dependson the shell script
> o A number of drivers that include version.h
> 	- This should be changed so local version does not affect
> 	  the reast of version.h.


We now have:
swlab155:/usr/src/linux-2.6.10-gold # grep version.h -rI . | wc -l
2143
swlab155:/usr/src/linux-2.6.10-gold # grep UTS_RELEASE -rIi .| wc -l
47

So it appears that its much simpler to change all users of
UTS_RELEASE to use some other file, say local_version.h,
and have localversion not affect version.h

Opinions?

mst


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

* Re: changing local version requires full rebuild
  2005-01-16 17:26     ` Sam Ravnborg
  2005-01-16 17:55       ` Michael S. Tsirkin
@ 2005-01-16 19:42       ` Michael S. Tsirkin
  1 sibling, 0 replies; 10+ messages in thread
From: Michael S. Tsirkin @ 2005-01-16 19:42 UTC (permalink / raw)
  To: linux-kernel, kbuild-devel

Hello!
Quoting r. Sam Ravnborg (sam@ravnborg.org) "Re: changing local version requires full rebuild":
>  > 
> > > Do you use "echo -mylocalver > localversion" to change the local version?
> > > 
> > > 	Sam
> > 
> > No, I do makemenuconfig to edit the version. Is that right?
> 
> That is fine too.
> When building - do you use separate output dir?
> 
> 	Sam

First, by design any module includes the full
kernel release name as part of the VERMAGIC_STRING.
So at least one file will have to be rebuilt for each module,
and all modules have to be relinked, if localversion changes.


MST

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

* [PATCH] split UTS_RELEASE to a separate header.
  2005-01-16 16:16 ` Sam Ravnborg
                     ` (2 preceding siblings ...)
  2005-01-16 18:11   ` Michael S. Tsirkin
@ 2005-01-16 20:00   ` Michael S. Tsirkin
  2005-01-16 22:58     ` Brian Gerst
  3 siblings, 1 reply; 10+ messages in thread
From: Michael S. Tsirkin @ 2005-01-16 20:00 UTC (permalink / raw)
  To: linux-kernel, kbuild-devel, zippel

Hello!
Quoting r. Sam Ravnborg (sam@ravnborg.org) "Re: changing local version requires full rebuild":
> On Sun, Jan 16, 2005 at 05:22:42PM +0200, Michael S. Tsirkin wrote:
> > Hi!
> > Is it just me, or does changing the local version always require
> > a full kernel rebuild?
> > 
> > If so, I'd like to fix it, since I like copying
> > my kernel source with --preserve and changing the
> > local version, then going back to the old version in case of
> > a crash.
> > Its important to change the local version to force 
> > make install and make modules_install to put things in a separate
> > directory.
> 
> Just tried it out here.
> After cp -Ra only a limited part of the kernel rebuilds.
> o oiu.c in ieee directory - because it dependson the shell script
> o A number of drivers that include version.h
> 	- This should be changed so local version does not affect
> 	  the reast of version.h.
> o Other stuff that is always build if kernel has changed
> 
> Do you use "echo -mylocalver > localversion" to change the local version?
> 
> 	Sam

Well, we have
/usr/src/linux-2.6.10-gold # grep -l UTS_RELEASE -rI . | wc -l
29
grep -l version.h -rI . | fgrep -v .cmd | fgrep -v '.mod' | fgrep -e '.c' -e '.h' | wc -l
354

This means that about 300 files are compiled each time localversion changes,
which do not actually use the local version.

So, let us split UTS_RELEASE to a separate header: release.h
The following patch over 2.6.10 does that, and fixed the in-tree files that
really need to include it.
Works for me, and helps me cut down compilation time. Comments?

Signed-off-by: Michael S. Tsirkin <mst@mellanox.co.il>

diff -x '.*' -ru linux-2.6.10-orig/arch/alpha/boot/bootp.c linux-2.6.10-gold/arch/alpha/boot/bootp.c
--- linux-2.6.10-orig/arch/alpha/boot/bootp.c	2004-12-24 23:35:25.000000000 +0200
+++ linux-2.6.10-gold/arch/alpha/boot/bootp.c	2005-01-16 20:45:38.000000000 +0200
@@ -9,6 +9,7 @@
  */
 #include <linux/kernel.h>
 #include <linux/string.h>
+#include <linux/release.h>
 #include <linux/version.h>
 #include <linux/mm.h>
 
diff -x '.*' -ru linux-2.6.10-orig/arch/alpha/boot/bootpz.c linux-2.6.10-gold/arch/alpha/boot/bootpz.c
--- linux-2.6.10-orig/arch/alpha/boot/bootpz.c	2004-12-24 23:33:50.000000000 +0200
+++ linux-2.6.10-gold/arch/alpha/boot/bootpz.c	2005-01-16 20:45:25.000000000 +0200
@@ -11,6 +11,7 @@
  */
 #include <linux/kernel.h>
 #include <linux/string.h>
+#include <linux/release.h>
 #include <linux/version.h>
 #include <linux/mm.h>
 
diff -x '.*' -ru linux-2.6.10-orig/arch/alpha/boot/main.c linux-2.6.10-gold/arch/alpha/boot/main.c
--- linux-2.6.10-orig/arch/alpha/boot/main.c	2004-12-24 23:35:49.000000000 +0200
+++ linux-2.6.10-gold/arch/alpha/boot/main.c	2005-01-16 20:45:47.000000000 +0200
@@ -7,6 +7,7 @@
  */
 #include <linux/kernel.h>
 #include <linux/string.h>
+#include <linux/release.h>
 #include <linux/version.h>
 #include <linux/mm.h>
 
diff -x '.*' -ru linux-2.6.10-orig/arch/i386/boot/setup.S linux-2.6.10-gold/arch/i386/boot/setup.S
--- linux-2.6.10-orig/arch/i386/boot/setup.S	2004-12-24 23:34:58.000000000 +0200
+++ linux-2.6.10-gold/arch/i386/boot/setup.S	2005-01-16 20:44:01.000000000 +0200
@@ -48,6 +48,7 @@
 
 #include <linux/config.h>
 #include <asm/segment.h>
+#include <linux/release.h>
 #include <linux/version.h>
 #include <linux/compile.h>
 #include <asm/boot.h>
diff -x '.*' -ru linux-2.6.10-orig/arch/ppc/platforms/chrp_setup.c linux-2.6.10-gold/arch/ppc/platforms/chrp_setup.c
--- linux-2.6.10-orig/arch/ppc/platforms/chrp_setup.c	2004-12-24 23:35:24.000000000 +0200
+++ linux-2.6.10-gold/arch/ppc/platforms/chrp_setup.c	2005-01-16 20:45:20.000000000 +0200
@@ -27,6 +27,7 @@
 #include <linux/reboot.h>
 #include <linux/init.h>
 #include <linux/pci.h>
+#include <linux/release.h>
 #include <linux/version.h>
 #include <linux/adb.h>
 #include <linux/module.h>
diff -x '.*' -ru linux-2.6.10-orig/arch/ppc/syslib/btext.c linux-2.6.10-gold/arch/ppc/syslib/btext.c
--- linux-2.6.10-orig/arch/ppc/syslib/btext.c	2004-12-24 23:33:49.000000000 +0200
+++ linux-2.6.10-gold/arch/ppc/syslib/btext.c	2005-01-16 20:44:49.000000000 +0200
@@ -7,6 +7,7 @@
 #include <linux/kernel.h>
 #include <linux/string.h>
 #include <linux/init.h>
+#include <linux/release.h>
 #include <linux/version.h>
 
 #include <asm/sections.h>
diff -x '.*' -ru linux-2.6.10-orig/arch/ppc64/kernel/process.c linux-2.6.10-gold/arch/ppc64/kernel/process.c
--- linux-2.6.10-orig/arch/ppc64/kernel/process.c	2004-12-24 23:35:00.000000000 +0200
+++ linux-2.6.10-gold/arch/ppc64/kernel/process.c	2005-01-16 20:46:01.000000000 +0200
@@ -35,6 +35,7 @@
 #include <linux/ptrace.h>
 #include <linux/kallsyms.h>
 #include <linux/interrupt.h>
+#include <linux/release.h>
 #include <linux/version.h>
 
 #include <asm/pgtable.h>
diff -x '.*' -ru linux-2.6.10-orig/arch/ppc64/kernel/pSeries_setup.c linux-2.6.10-gold/arch/ppc64/kernel/pSeries_setup.c
--- linux-2.6.10-orig/arch/ppc64/kernel/pSeries_setup.c	2004-12-24 23:34:00.000000000 +0200
+++ linux-2.6.10-gold/arch/ppc64/kernel/pSeries_setup.c	2005-01-16 20:45:52.000000000 +0200
@@ -36,6 +36,7 @@
 #include <linux/ioport.h>
 #include <linux/console.h>
 #include <linux/pci.h>
+#include <linux/release.h>
 #include <linux/version.h>
 #include <linux/adb.h>
 #include <linux/module.h>
diff -x '.*' -ru linux-2.6.10-orig/arch/ppc64/kernel/setup.c linux-2.6.10-gold/arch/ppc64/kernel/setup.c
--- linux-2.6.10-orig/arch/ppc64/kernel/setup.c	2004-12-24 23:34:44.000000000 +0200
+++ linux-2.6.10-gold/arch/ppc64/kernel/setup.c	2005-01-16 20:45:57.000000000 +0200
@@ -24,6 +24,7 @@
 #include <linux/seq_file.h>
 #include <linux/ioport.h>
 #include <linux/console.h>
+#include <linux/release.h>
 #include <linux/version.h>
 #include <linux/tty.h>
 #include <linux/root_dev.h>
diff -x '.*' -ru linux-2.6.10-orig/arch/x86_64/boot/setup.S linux-2.6.10-gold/arch/x86_64/boot/setup.S
--- linux-2.6.10-orig/arch/x86_64/boot/setup.S	2004-12-24 23:35:39.000000000 +0200
+++ linux-2.6.10-gold/arch/x86_64/boot/setup.S	2005-01-16 20:46:11.000000000 +0200
@@ -47,6 +47,7 @@
 
 #include <linux/config.h>
 #include <asm/segment.h>
+#include <linux/release.h>
 #include <linux/version.h>
 #include <linux/compile.h>
 #include <asm/boot.h>
diff -x '.*' -ru linux-2.6.10-orig/arch/x86_64/kernel/process.c linux-2.6.10-gold/arch/x86_64/kernel/process.c
--- linux-2.6.10-orig/arch/x86_64/kernel/process.c	2004-12-24 23:34:58.000000000 +0200
+++ linux-2.6.10-gold/arch/x86_64/kernel/process.c	2005-01-16 20:46:06.000000000 +0200
@@ -32,6 +32,7 @@
 #include <linux/delay.h>
 #include <linux/irq.h>
 #include <linux/ptrace.h>
+#include <linux/release.h>
 #include <linux/version.h>
 
 #include <asm/uaccess.h>
diff -x '.*' -ru linux-2.6.10-orig/drivers/block/floppy.c linux-2.6.10-gold/drivers/block/floppy.c
--- linux-2.6.10-orig/drivers/block/floppy.c	2004-12-24 23:34:01.000000000 +0200
+++ linux-2.6.10-gold/drivers/block/floppy.c	2005-01-16 20:47:16.000000000 +0200
@@ -155,6 +155,7 @@
 #include <linux/kernel.h>
 #include <linux/timer.h>
 #include <linux/workqueue.h>
+#include <linux/release.h>
 #include <linux/version.h>
 #define FDPATCHES
 #include <linux/fdreg.h>
diff -x '.*' -ru linux-2.6.10-orig/drivers/cdrom/aztcd.c linux-2.6.10-gold/drivers/cdrom/aztcd.c
--- linux-2.6.10-orig/drivers/cdrom/aztcd.c	2004-12-24 23:35:28.000000000 +0200
+++ linux-2.6.10-gold/drivers/cdrom/aztcd.c	2005-01-16 20:47:25.000000000 +0200
@@ -165,6 +165,7 @@
 			 Torben Mathiasen <tmm@image.dk>
 */
 
+#include <linux/release.h>
 #include <linux/version.h>
 #include <linux/blkdev.h>
 #include "aztcd.h"
diff -x '.*' -ru linux-2.6.10-orig/drivers/cdrom/mcdx.c linux-2.6.10-gold/drivers/cdrom/mcdx.c
--- linux-2.6.10-orig/drivers/cdrom/mcdx.c	2004-12-24 23:34:44.000000000 +0200
+++ linux-2.6.10-gold/drivers/cdrom/mcdx.c	2005-01-16 20:47:20.000000000 +0200
@@ -56,6 +56,7 @@
     = "$Id: mcdx.c,v 1.21 1997/01/26 07:12:59 davem Exp $";
 #endif
 
+#include <linux/release.h>
 #include <linux/version.h>
 #include <linux/module.h>
 
diff -x '.*' -ru linux-2.6.10-orig/drivers/char/ftape/compressor/zftape-compress.c linux-2.6.10-gold/drivers/char/ftape/compressor/zftape-compress.c
--- linux-2.6.10-orig/drivers/char/ftape/compressor/zftape-compress.c	2004-12-24 23:35:25.000000000 +0200
+++ linux-2.6.10-gold/drivers/char/ftape/compressor/zftape-compress.c	2005-01-16 20:46:42.000000000 +0200
@@ -31,6 +31,7 @@
  char zftc_rev[] = "$Revision: 1.1.6.1 $";
  char zftc_dat[] = "$Date: 1997/11/16 15:15:56 $";
 
+#include <linux/release.h>
 #include <linux/version.h>
 #include <linux/errno.h>
 #include <linux/mm.h>
diff -x '.*' -ru linux-2.6.10-orig/drivers/char/ftape/lowlevel/ftape-init.c linux-2.6.10-gold/drivers/char/ftape/lowlevel/ftape-init.c
--- linux-2.6.10-orig/drivers/char/ftape/lowlevel/ftape-init.c	2004-12-24 23:35:25.000000000 +0200
+++ linux-2.6.10-gold/drivers/char/ftape/lowlevel/ftape-init.c	2005-01-16 20:46:32.000000000 +0200
@@ -23,6 +23,7 @@
 
 #include <linux/config.h>
 #include <linux/module.h>
+#include <linux/release.h>
 #include <linux/version.h>
 #include <linux/errno.h>
 #include <linux/fs.h>
diff -x '.*' -ru linux-2.6.10-orig/drivers/char/ftape/zftape/zftape-init.c linux-2.6.10-gold/drivers/char/ftape/zftape/zftape-init.c
--- linux-2.6.10-orig/drivers/char/ftape/zftape/zftape-init.c	2004-12-24 23:34:31.000000000 +0200
+++ linux-2.6.10-gold/drivers/char/ftape/zftape/zftape-init.c	2005-01-16 20:46:38.000000000 +0200
@@ -23,6 +23,7 @@
 #include <linux/config.h>
 #include <linux/module.h>
 #include <linux/errno.h>
+#include <linux/release.h>
 #include <linux/version.h>
 #include <linux/fs.h>
 #include <linux/kernel.h>
diff -x '.*' -ru linux-2.6.10-orig/drivers/parisc/led.c linux-2.6.10-gold/drivers/parisc/led.c
--- linux-2.6.10-orig/drivers/parisc/led.c	2004-12-24 23:34:30.000000000 +0200
+++ linux-2.6.10-gold/drivers/parisc/led.c	2005-01-16 20:47:29.000000000 +0200
@@ -26,6 +26,7 @@
 #include <linux/init.h>
 #include <linux/types.h>
 #include <linux/ioport.h>
+#include <linux/release.h>
 #include <linux/version.h>
 #include <linux/delay.h>
 #include <linux/netdevice.h>
diff -x '.*' -ru linux-2.6.10-orig/drivers/scsi/aic7xxx_old.c linux-2.6.10-gold/drivers/scsi/aic7xxx_old.c
--- linux-2.6.10-orig/drivers/scsi/aic7xxx_old.c	2004-12-24 23:35:50.000000000 +0200
+++ linux-2.6.10-gold/drivers/scsi/aic7xxx_old.c	2005-01-16 20:47:11.000000000 +0200
@@ -224,6 +224,7 @@
 #include <asm/io.h>
 #include <asm/irq.h>
 #include <asm/byteorder.h>
+#include <linux/release.h>
 #include <linux/version.h>
 #include <linux/string.h>
 #include <linux/errno.h>
diff -x '.*' -ru linux-2.6.10-orig/drivers/usb/core/hcd.c linux-2.6.10-gold/drivers/usb/core/hcd.c
--- linux-2.6.10-orig/drivers/usb/core/hcd.c	2004-12-24 23:34:58.000000000 +0200
+++ linux-2.6.10-gold/drivers/usb/core/hcd.c	2005-01-16 20:47:07.000000000 +0200
@@ -29,6 +29,7 @@
 #endif
 
 #include <linux/module.h>
+#include <linux/release.h>
 #include <linux/version.h>
 #include <linux/kernel.h>
 #include <linux/slab.h>
diff -x '.*' -ru linux-2.6.10-orig/drivers/usb/gadget/ether.c linux-2.6.10-gold/drivers/usb/gadget/ether.c
--- linux-2.6.10-orig/drivers/usb/gadget/ether.c	2004-12-24 23:35:39.000000000 +0200
+++ linux-2.6.10-gold/drivers/usb/gadget/ether.c	2005-01-16 20:46:57.000000000 +0200
@@ -37,6 +37,7 @@
 #include <linux/list.h>
 #include <linux/interrupt.h>
 #include <linux/uts.h>
+#include <linux/release.h>
 #include <linux/version.h>
 #include <linux/device.h>
 #include <linux/moduleparam.h>
diff -x '.*' -ru linux-2.6.10-orig/drivers/usb/gadget/file_storage.c linux-2.6.10-gold/drivers/usb/gadget/file_storage.c
--- linux-2.6.10-orig/drivers/usb/gadget/file_storage.c	2004-12-24 23:36:01.000000000 +0200
+++ linux-2.6.10-gold/drivers/usb/gadget/file_storage.c	2005-01-16 20:47:02.000000000 +0200
@@ -237,6 +237,7 @@
 #include <linux/string.h>
 #include <linux/suspend.h>
 #include <linux/uts.h>
+#include <linux/release.h>
 #include <linux/version.h>
 #include <linux/wait.h>
 
diff -x '.*' -ru linux-2.6.10-orig/drivers/usb/gadget/serial.c linux-2.6.10-gold/drivers/usb/gadget/serial.c
--- linux-2.6.10-orig/drivers/usb/gadget/serial.c	2004-12-24 23:35:24.000000000 +0200
+++ linux-2.6.10-gold/drivers/usb/gadget/serial.c	2005-01-16 20:46:53.000000000 +0200
@@ -31,6 +31,7 @@
 #include <linux/list.h>
 #include <linux/interrupt.h>
 #include <linux/uts.h>
+#include <linux/release.h>
 #include <linux/version.h>
 #include <linux/wait.h>
 #include <linux/proc_fs.h>
diff -x '.*' -ru linux-2.6.10-orig/drivers/usb/gadget/zero.c linux-2.6.10-gold/drivers/usb/gadget/zero.c
--- linux-2.6.10-orig/drivers/usb/gadget/zero.c	2004-12-24 23:34:32.000000000 +0200
+++ linux-2.6.10-gold/drivers/usb/gadget/zero.c	2005-01-16 20:46:49.000000000 +0200
@@ -76,6 +76,7 @@
 #include <linux/list.h>
 #include <linux/interrupt.h>
 #include <linux/uts.h>
+#include <linux/release.h>
 #include <linux/version.h>
 #include <linux/device.h>
 #include <linux/moduleparam.h>
diff -x '.*' -ru linux-2.6.10-orig/fs/cifs/connect.c linux-2.6.10-gold/fs/cifs/connect.c
--- linux-2.6.10-orig/fs/cifs/connect.c	2004-12-24 23:35:28.000000000 +0200
+++ linux-2.6.10-gold/fs/cifs/connect.c	2005-01-16 20:46:16.295338328 +0200
@@ -23,6 +23,7 @@
 #include <linux/string.h>
 #include <linux/list.h>
 #include <linux/wait.h>
+#include <linux/release.h>
 #include <linux/version.h>
 #include <linux/ipv6.h>
 #include <linux/pagemap.h>
diff -x '.*' -ru linux-2.6.10-orig/include/linux/vermagic.h linux-2.6.10-gold/include/linux/vermagic.h
--- linux-2.6.10-orig/include/linux/vermagic.h	2004-12-24 23:35:50.000000000 +0200
+++ linux-2.6.10-gold/include/linux/vermagic.h	2005-01-16 20:46:22.750357016 +0200
@@ -1,3 +1,4 @@
+#include <linux/release.h>
 #include <linux/version.h>
 #include <linux/module.h>
 
diff -x '.*' -ru linux-2.6.10-orig/include/linux/version.h linux-2.6.10-gold/include/linux/version.h
--- linux-2.6.10-orig/include/linux/version.h	2005-01-05 14:49:23.000000000 +0200
+++ linux-2.6.10-gold/include/linux/version.h	2005-01-16 20:48:20.000000000 +0200
@@ -1,3 +1,2 @@
-#define UTS_RELEASE "2.6.10-orig"
 #define LINUX_VERSION_CODE 132618
 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
diff -x '.*' -ru linux-2.6.10-orig/init/version.c linux-2.6.10-gold/init/version.c
--- linux-2.6.10-orig/init/version.c	2004-12-24 23:34:45.000000000 +0200
+++ linux-2.6.10-gold/init/version.c	2005-01-16 20:47:34.000000000 +0200
@@ -10,6 +10,7 @@
 #include <linux/module.h>
 #include <linux/uts.h>
 #include <linux/utsname.h>
+#include <linux/release.h>
 #include <linux/version.h>
 
 #define version(a) Version_ ## a
diff -x '.*' -ru linux-2.6.10-orig/Makefile linux-2.6.10-gold/Makefile
--- linux-2.6.10-orig/Makefile	2004-12-24 23:35:01.000000000 +0200
+++ linux-2.6.10-gold/Makefile	2005-01-16 20:36:30.000000000 +0200
@@ -763,7 +763,8 @@
 # prepare1 creates a makefile if using a separate output directory
 prepare1: prepare2 outputmakefile
 
-prepare0: prepare1 include/linux/version.h include/asm include/config/MARKER
+prepare0: prepare1 include/linux/version.h include/linux/release.h \
+	  include/asm include/config/MARKER
 ifneq ($(KBUILD_MODULES),)
 	$(Q)rm -rf $(MODVERDIR)
 	$(Q)mkdir -p $(MODVERDIR)
@@ -820,18 +821,23 @@
 uts_len := 64
 
 define filechk_version.h
+	( echo \#define LINUX_VERSION_CODE `expr $(VERSION) \\* 65536 + $(PATCHLEVEL) \\* 256 + $(SUBLEVEL)`; \
+	 echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))'; \
+	)
+endef
+
+define filechk_release.h
 	if [ `echo -n "$(KERNELRELEASE)" | wc -c ` -gt $(uts_len) ]; then \
 	  echo '"$(KERNELRELEASE)" exceeds $(uts_len) characters' >&2; \
 	  exit 1; \
 	fi; \
-	(echo \#define UTS_RELEASE \"$(KERNELRELEASE)\"; \
-	  echo \#define LINUX_VERSION_CODE `expr $(VERSION) \\* 65536 + $(PATCHLEVEL) \\* 256 + $(SUBLEVEL)`; \
-	 echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))'; \
-	)
+	( echo \#define UTS_RELEASE \"$(KERNELRELEASE)\" )
 endef
 
 include/linux/version.h: $(srctree)/Makefile FORCE
 	$(call filechk,version.h)
+include/linux/release.h: $(srctree)/Makefile FORCE
+	$(call filechk,release.h)
 
 # ---------------------------------------------------------------------------
 
@@ -946,6 +952,7 @@
 MRPROPER_DIRS  += include/config include2
 MRPROPER_FILES += .config .config.old include/asm .version \
                   include/linux/autoconf.h include/linux/version.h \
+                  include/linux/release.h \
                   Module.symvers tags TAGS cscope*
 
 # clean - Delete most, but leave enough to build external modules
diff -x '.*' -ru linux-2.6.10-orig/scripts/checkversion.pl linux-2.6.10-gold/scripts/checkversion.pl
--- linux-2.6.10-orig/scripts/checkversion.pl	2004-12-24 23:34:33.000000000 +0200
+++ linux-2.6.10-gold/scripts/checkversion.pl	2005-01-16 20:42:40.000000000 +0200
@@ -1,7 +1,7 @@
 #! /usr/bin/perl
 #
-# checkversion find uses of LINUX_VERSION_CODE, KERNEL_VERSION, or
-# UTS_RELEASE without including <linux/version.h>, or cases of
+# checkversion find uses of LINUX_VERSION_CODE or KERNEL_VERSION
+# without including <linux/version.h>, or cases of
 # including <linux/version.h> that don't need it.
 # Copyright (C) 2003, Randy Dunlap <rddunlap@osdl.org>
 
@@ -40,9 +40,8 @@
 	    $iLinuxVersion      = $. if m/^\s*#\s*include\s*<linux\/version\.h>/o;
 	}
 
-	# Look for uses: LINUX_VERSION_CODE, KERNEL_VERSION, UTS_RELEASE
-	if (($_ =~ /LINUX_VERSION_CODE/) || ($_ =~ /\WKERNEL_VERSION/) ||
-		($_ =~ /UTS_RELEASE/)) {
+	# Look for uses: LINUX_VERSION_CODE, KERNEL_VERSION
+	if ( ($_ =~ /LINUX_VERSION_CODE/) || ($_ =~ /\WKERNEL_VERSION/) ) {
 	    $fUseVersion = 1;
 	    last LINE if $iLinuxVersion;
 	}

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

* Re: [PATCH] split UTS_RELEASE to a separate header.
  2005-01-16 20:00   ` [PATCH] split UTS_RELEASE to a separate header Michael S. Tsirkin
@ 2005-01-16 22:58     ` Brian Gerst
  0 siblings, 0 replies; 10+ messages in thread
From: Brian Gerst @ 2005-01-16 22:58 UTC (permalink / raw)
  To: Michael S. Tsirkin; +Cc: linux-kernel, kbuild-devel, zippel

Michael S. Tsirkin wrote:
> Hello!
> Quoting r. Sam Ravnborg (sam@ravnborg.org) "Re: changing local version requires full rebuild":
> 
>>On Sun, Jan 16, 2005 at 05:22:42PM +0200, Michael S. Tsirkin wrote:
>>
>>>Hi!
>>>Is it just me, or does changing the local version always require
>>>a full kernel rebuild?
>>>
>>>If so, I'd like to fix it, since I like copying
>>>my kernel source with --preserve and changing the
>>>local version, then going back to the old version in case of
>>>a crash.
>>>Its important to change the local version to force 
>>>make install and make modules_install to put things in a separate
>>>directory.
>>
>>Just tried it out here.
>>After cp -Ra only a limited part of the kernel rebuilds.
>>o oiu.c in ieee directory - because it dependson the shell script
>>o A number of drivers that include version.h
>>	- This should be changed so local version does not affect
>>	  the reast of version.h.
>>o Other stuff that is always build if kernel has changed
>>
>>Do you use "echo -mylocalver > localversion" to change the local version?
>>
>>	Sam
> 
> 
> Well, we have
> /usr/src/linux-2.6.10-gold # grep -l UTS_RELEASE -rI . | wc -l
> 29
> grep -l version.h -rI . | fgrep -v .cmd | fgrep -v '.mod' | fgrep -e '.c' -e '.h' | wc -l
> 354
> 
> This means that about 300 files are compiled each time localversion changes,
> which do not actually use the local version.
> 
> So, let us split UTS_RELEASE to a separate header: release.h
> The following patch over 2.6.10 does that, and fixed the in-tree files that
> really need to include it.
> Works for me, and helps me cut down compilation time. Comments?
> 

Most of the stuff using UTS_RELEASE can use system_utsname.release 
instead (except boot code).  Most cases in drivers/ can simply be removed.

--
				Brian Gerst

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

end of thread, other threads:[~2005-01-16 22:58 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-01-16 15:22 changing local version requires full rebuild Michael S. Tsirkin
2005-01-16 16:16 ` Sam Ravnborg
2005-01-16 16:28   ` Michael S. Tsirkin
2005-01-16 17:26     ` Sam Ravnborg
2005-01-16 17:55       ` Michael S. Tsirkin
2005-01-16 19:42       ` Michael S. Tsirkin
2005-01-16 17:24   ` Michael S. Tsirkin
2005-01-16 18:11   ` Michael S. Tsirkin
2005-01-16 20:00   ` [PATCH] split UTS_RELEASE to a separate header Michael S. Tsirkin
2005-01-16 22:58     ` Brian Gerst

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).