Hi,

I've been fiddling around with the same problem for a while, here are my
findings (and a suggestion for the real fix).

The version that kernel-package finds for me is 
2.6.22-rc4-g4d33a504-dirty-g4d33a504-dirty-dirty.

This version is created at debian/ruleset/misc/version_vars.mk:155
        version = 
$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)$(iatv)$(LOCALVERSION)$(GIT_VERSION)

Here, $LOCALVERSION = -g4d33a504-dirty and $GIT_VERSION = -g4d33a504-dirty-dirty

I'm not really sure what these variables actually mean and are supposed to
hold, but I find the initalization of GIT_VERSION a bit weird at
debian/ruleset/misc/version_vars.mk:98

  ifneq ($(strip $(CONFIG_LOCALVERSION_AUTO)),)
    GIT_VERSION=$(shell /bin/sh scripts/setlocalversion)
    ifneq ($(strip $(GIT_VERSION)),)
      GIT_VERSION:=$(GIT_VERSION)-dirty
    endif
  endif

It would appear to me that 'setlocaversion' is supposed to set LOCALVERSION,
not GIT_VERSION ? Seemingly it does, since GIT_VERSION contains LOCALVERSION
with -dirty appended, as you would expect from this code.

The main problem here is that the kernel itself (in utsrelease.h IIRC) thinks
it's just 2.6.22-rc4-g4d33a504-dirty, without that GIT_VERSION crap. Halfway
into the build process, this generates a version mismatch error.

unsetting CONFIG_LOCALVERSION_AUTO fixes compile for me too, the version is now
simply 2.6.22-rc4.

In the main kernel Makefile:798, I find
        # 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 determined by the SCM used.
        #
        # Currently, only git is supported.
        # Other SCMs can edit scripts/setlocalversion and add the appropriate
        # checks as needed.
        ifdef CONFIG_LOCALVERSION_AUTO
                        _localver-auto = $(shell $(CONFIG_SHELL) \
                                                                                
                $(srctree)/scripts/setlocalversion $(srctree))
                        localver-auto  = $(LOCALVERSION)$(_localver-auto)
        endif

        localver-full = $(localver)$(localver-auto)

This means that the CONFIG_LOCALVERSION_AUTO stuff is already done by the
kernel Makefile itself and there is no need for version_vars.mk to fiddle
around with GIT_VERSION anymore. AFAICS, the proper fix would be to throw out
GIT_VERSION alltogether? Perhaps it was needed for older kernels, so it should
get a version guard?

Anyway, just my EUR 0,02.

Gr.

Matthijs


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to