diff mbox

make rpm-pkg and version mismatch

Message ID 20110504204451.GA28259@dev1756.snc6.facebook.com (mailing list archive)
State New, archived
Headers show

Commit Message

Arun Sharma May 4, 2011, 8:44 p.m. UTC
On Wed, May 04, 2011 at 10:23:43PM +0200, Michal Marek wrote:
> Dne 3.5.2011 23:27, Arun Sharma napsal(a):
> >
> >make rpm-pkg produces files that look like: kernel-2.6.39rc5-2.x86_64.rpm
> >However, uname -r produces 2.6.39rc5 (-2 is missing).
> >
> >This differs from how some of the distributors are packaging the kernel.
> >Their setup includes %{release} in uname -r.
> 
> Distributors have control over the kernel uname -r string. make rpm,
> on the other hand, needs to work with both the vanilla version
> strings, as well as any crazy suffixes the user comes up with. Hence
> it uses the uname -v version number as the rpm release, which is
> always defined.

Distributors have been doing this traditionally by hacking on the
EXTRAVERSION. But with the stable kernel series also using it,
EXTRAVERSION seems a bit busy.

> 
> Please don't do that. make rpm has to work with the version string
> set by the kernel, not the other way around.

Right.  Here's an alternative approach:

Could we modify the version string provided by the kernel to include
the version string (which is derived from scripts/mkversion)


 -Arun
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Michal Marek May 4, 2011, 9:07 p.m. UTC | #1
Dne 4.5.2011 22:44, Arun Sharma napsal(a):
> On Wed, May 04, 2011 at 10:23:43PM +0200, Michal Marek wrote:
>> Please don't do that. make rpm has to work with the version string
>> set by the kernel, not the other way around.
> 
> Right.  Here's an alternative approach:
> 
> Could we modify the version string provided by the kernel to include
> the version string (which is derived from scripts/mkversion)
> 
> --- a/Makefile
> +++ b/Makefile
> @@ -363,11 +363,14 @@ KBUILD_AFLAGS_MODULE  := -DMODULE
>  KBUILD_CFLAGS_MODULE  := -DMODULE
>  KBUILD_LDFLAGS_MODULE := -T $(srctree)/scripts/module-common.lds
>  
> -# Read KERNELRELEASE from include/config/kernel.release (if it exists)
> -KERNELRELEASE = $(shell cat include/config/kernel.release 2> /dev/null)
> +# Read ___KERNELRELEASE from include/config/kernel.release (if it exists)
> +___KERNELRELEASE = $(shell cat include/config/kernel.release 2> /dev/null)
> +# Append the release version only once. 
> +# Note: .version could change during the build.
> +KERNELRELEASE ?= $(___KERNELRELEASE)-$(shell /bin/sh scripts/mkversion)
>  KERNELVERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)

Again, please don't do that. Most users don't give a damn about make
rpm. If I build a pristine 2.6.39-rc6, I want uname -r report
2.6.39-rc6, not 2.6.39-rc6-1. not 2.6.39-rc6-2 or anything like that. If
I wanted to decorate the release string, I would set
CONFIG_LOCALVERSION, but please do not make that choice for me. make rpm
is a simple tool to allow developers easily copy kernels from their
build machine to another machine where they can test stuff. If you want
something more advanced, use the spec file from your distro.

Michal
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

--- a/Makefile
+++ b/Makefile
@@ -363,11 +363,14 @@  KBUILD_AFLAGS_MODULE  := -DMODULE
 KBUILD_CFLAGS_MODULE  := -DMODULE
 KBUILD_LDFLAGS_MODULE := -T $(srctree)/scripts/module-common.lds
 
-# Read KERNELRELEASE from include/config/kernel.release (if it exists)
-KERNELRELEASE = $(shell cat include/config/kernel.release 2> /dev/null)
+# Read ___KERNELRELEASE from include/config/kernel.release (if it exists)
+___KERNELRELEASE = $(shell cat include/config/kernel.release 2> /dev/null)
+# Append the release version only once. 
+# Note: .version could change during the build.
+KERNELRELEASE ?= $(___KERNELRELEASE)-$(shell /bin/sh scripts/mkversion)
 KERNELVERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
 
-export VERSION PATCHLEVEL SUBLEVEL KERNELRELEASE KERNELVERSION
+export VERSION PATCHLEVEL SUBLEVEL KERNELRELEASE KERNELVERSION ___KERNELRELEASE

Since mkspec uses the same string for %{release} we get the same
consistency as a distributor built rpm.