Re: [PATCH] kbuild: Clean up and speed up the localversion logic

From: Michal Marek
Date: Fri Jul 02 2010 - 07:54:48 EST


On Tue, Jun 29, 2010 at 02:54:21PM -0700, Dmitry Torokhov wrote:
> On Thu, Jun 17, 2010 at 10:55:12PM -0700, Dmitry Torokhov wrote:
> > On Thu, Jun 17, 2010 at 03:40:38PM +0200, Michal Marek wrote:
> > > Now that we run scripts/setlocalversion during every build, it makes
> > > sense to move all the localversion logic there. This cleans up the
> > > toplevel Makefile and also makes sure that the script is called only
> > > once in 'make prepare' (previously, it would be called every time due to
> > > a variable expansion in an ifneq statement). No user-visible change is
> > > intended, unless one runs the setlocalversion script directly.
> > >
> > > Reported-by: Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx>
> > > Cc: David Rientjes <rientjes@xxxxxxxxxx>
> > > Cc: Greg Thelen <gthelen@xxxxxxxxxx>
> > > Cc: Nico Schottelius <nico-linuxsetlocalversion@xxxxxxxxxxxxxxx>
> > > Signed-off-by: Michal Marek <mmarek@xxxxxxx>
> > > ---
> > >
> > > I tried to test this in various scenarios, but if anyone of you could give
> > > it a try, that would be great. The patch is against 2.6.35-rc3.
> > >
> >
> > Seems to be working for me, I do not need to go and fetch coffee while
> > installig newly compiled kernel anymore.
> >
>
> Michal,
>
> Any chance this could be merged in 2.6.35? Without the patch installing
> over the network is not really an option anymore.

I now found that my patch breaks 'make LOCALVERSION=... '. The following
patch should fix it.

Michal


commit 0a564b2645c8766a669c55bde1f1ef5b0518caec
Author: Michal Marek <mmarek@xxxxxxx>
Date: Wed Jun 30 16:41:23 2010 +0200

kbuild: Propagate LOCALVERSION= down to scripts/setlocalversion

Variables given on the make commandline are not exported to $(shell
...) commands, so run the setlocalversion script in the make rule
directly.

Signed-off-by: Michal Marek <mmarek@xxxxxxx>

diff --git a/Makefile b/Makefile
index a86ac8c..12ab175 100644
--- a/Makefile
+++ b/Makefile
@@ -884,11 +884,9 @@ $(vmlinux-dirs): prepare scripts
$(Q)$(MAKE) $(build)=$@

# Store (new) KERNELRELASE string in include/config/kernel.release
-localversion = $(shell $(CONFIG_SHELL) \
- $(srctree)/scripts/setlocalversion $(srctree))
include/config/kernel.release: include/config/auto.conf FORCE
$(Q)rm -f $@
- $(Q)echo $(KERNELVERSION)$(localversion) > $@
+ $(Q)echo "$(KERNELVERSION)$$($(CONFIG_SHELL) scripts/setlocalversion $(srctree))" > $@


# Things we need to do before we recursively start building the kernel
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/