[PATCH] Makefile: localversion fix (was: [2.6.16-rc6] CONFIG_LOCALVERSION_AUTO)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Mathis Ahrens wrote:
> 1.
> Semantics of LOCALVERSION are confusing and probably buggy.
> The Makefile states:
>
> # Take the contents of any files called localversion* and the config
> # variable CONFIG_LOCALVERSION and append them to KERNELRELEASE.
> # LOCALVERSION from the command line override all of this
>
> whereas my simplified view of current code is:
>
> version = major + minor + patch + extra
> release = version + localver-full
> localver-full = localver + localver-auto
> localver = <concat all localversions*> + $CONFIG_LOCALVERSION
> localver-auto = $LOCALVERSION + <some -gxxxxxx>
>
> LOCALVERSION does not seem to /override/ anything if specified on the
> command line, but rather (with CONFIG_LOCALVERSION_AUTO=y) gets
> /inserted/.
>
> Also, with CONFIG_LOCALVERSION_AUTO=n, specifying LOCALVERSION
> on the command line currently does nothing at all. This is a regression
> from 2.6.15, I suppose.
>   

Hmm, no comments on this?
I am not sure if different behaviour is desired, but here goes my proposal:

From: Mathis Ahrens <[email protected]>

Fix Makefile to honor LOCALVERSION if specified on the command line.
Make it then replace any other localversions from files, CONFIG_LOCALVERSION
or CONFIG_LOCALVERSION_AUTO.

Signed-off-by: Mathis Ahrens <[email protected]>

--- linux/Makefile.orig    2006-03-15 01:49:26.000000000 +0100
+++ linux/Makefile    2006-03-16 18:10:38.000000000 +0100
@@ -760,22 +760,27 @@ $(vmlinux-dirs): prepare scripts
 # The KERNELRELEASE is stored in a file named .kernelrelease
 # to be used when executing for example make install or make
modules_install
 #
-# Take the contents of any files called localversion* and the config
-# variable CONFIG_LOCALVERSION and append them to KERNELRELEASE.
-# LOCALVERSION from the command line override all of this
+# If LOCALVERSION from the command line is not empty, that is
+# appended to the KERNELRELEASE.
+#
+# Else we append in that order
+#     - the contents of any files called localversion*
+#     - the config variable CONFIG_LOCALVERSION
+#     - if CONFIG_LOCALVERSION_AUTO is set, another scm-specific string
 
 nullstring :=
 space      := $(nullstring) # end of line
 
-___localver = $(objtree)/localversion* $(srctree)/localversion*
-__localver  = $(sort $(wildcard $(___localver)))
+__localver-filelist = $(objtree)/localversion* $(srctree)/localversion*
+_localver-filelist  = $(sort $(wildcard $(__localver-filelist)))
 # skip backup files (containing '~')
-_localver = $(foreach f, $(__localver), $(if $(findstring ~, $(f)),,$(f)))
+localver-filelist = $(foreach f, $(_localver-filelist), \
+                    $(if $(findstring ~, $(f)),,$(f)))
+
+localver-files = $(subst $(space),, $(shell cat /dev/null
$(localver-filelist)))
+localver-conf = $(subst $(space),, $(patsubst
"%",%,$(CONFIG_LOCALVERSION)))
+
 
-localver = $(subst $(space),, \
-       $(shell cat /dev/null $(_localver)) \
-       $(patsubst "%",%,$(CONFIG_LOCALVERSION)))
-          
 # If CONFIG_LOCALVERSION_AUTO is set scripts/setlocalversion is called
 # and if the SCM is know a tag from the SCM is appended.
 # The appended tag is determinded by the SCM used.
@@ -784,12 +789,15 @@ localver = $(subst $(space),, \
 # Other SCMs can edit scripts/setlocalversion and add the appropriate
 # checks as needed.
 ifdef CONFIG_LOCALVERSION_AUTO
-    _localver-auto = $(shell $(CONFIG_SHELL) \
+    localver-auto = $(shell $(CONFIG_SHELL) \
                       $(srctree)/scripts/setlocalversion $(srctree))
-    localver-auto  = $(LOCALVERSION)$(_localver-auto)
 endif
 
-localver-full = $(localver)$(localver-auto)
+ifeq ($(LOCALVERSION),)
+    localver-full = $(localver-files)$(localver-conf)$(localver-auto)
+else
+    localver-full = $(subst $(space),, $(LOCALVERSION))
+endif
 
 # Store (new) KERNELRELASE string in .kernelrelease
 kernelrelease = $(KERNELVERSION)$(localver-full)


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux