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

Re: override kernel version with make-kpkg



On Mon, Dec 9, 2013 at 8:39 PM, Michael Gulick <mgulick@gmail.com> wrote:
>
> I'm looking for a way to override the default kernel package versions
> generated by make-kpkg. With 3.0+ kernels, the kernel sublevel (as in
> VERSION.PATCHLEVEL.SUBLEVEL), which is incremented when there are stable
> updates for a kernel release, is used to generate the package name. This
> produces packages with names like
> 'linux-image-3.10.22-mycustomversion_amd64.deb'. Unfortunately this means
> you can't upgrade these packages automatically with apt-get because apt-get
> thinks this is a new version of the package (instead of just an updated
> revision of the existing package version).
>
> I would like to be able to make packages called
> 'linux-image-3.10-myversion_amd64.deb', or
> 'linux-image-3.10.0-myversion_amd64.deb', so that these packages can be
> automatically upgraded via apt-get and a self-hosted repository.
>
> I'm building against the upstream vanilla kernel.
>
> I've tried editing the toplevel Makefile and setting SUBLEVEL = 0. While
> this does produce packages with version 3.10.0-something, the generated file
> include/generated/uapi/linux/version.h now indicates that the kernel is
> actually version 3.10.0 instead of 3.10.22. The stock kernel on wheezy
> (3.2.0) seems to have a correct value in version.h regardless of the package
> version.

The kernel, unlike other packages, has a version included in its name.
For example, util-linux's deb is "util-linux_2.20.1-5.5_amd64.deb"
whereas the kernel's deb is
"linux-image-3.11-2-amd64_3.11.8-1_amd64.deb".

AIUI Debian gets around this by having a "linux-image-amd64"
metapackage that depends on
"linux-image-3.11-2-amd64_3.11.8-1_amd64.deb". When there's a new
version of "linux-image-<version>-amd64" , the version of
"linux-image-amd64" is bumped up and depends on it.

# aptitude search --disable-columns -F "%c%a%M %p %v %V" linux-image
i A linux-image-3.11-2-amd64 3.11.10-1 3.11.10-1
p  linux-image-3.11-2-amd64-dbg <none> 3.11.10-1
i  linux-image-amd64 3.11+54 3.11+54
p  linux-image-amd64-dbg <none> 3.11+54
#
# apt-cache show linux-image-amd64 | grep pool
Filename: pool/main/l/linux-latest/linux-image-amd64_3.11+54_amd64.deb
#
# apt-cache show linux-image-3.11-2-amd64 | grep pool
Filename: pool/main/l/linux/linux-image-3.11-2-amd64_3.11.10-1_amd64.deb
Filename: pool/main/l/linux/linux-image-3.11-2-amd64_3.11.8-1_amd64.deb
#
# aptitude search --disable-columns -F "%c%a%M %p %v %V"
'?reverse-depends(linux-image-amd64)'
i A linux-image-3.11-2-amd64 3.11.10-1 3.11.10-1
p  linux-image-3.11-2-amd64-dbg <none> 3.11.10-1
#

So you could create a "mykernel" package (for example) that plays the
same role for your "linux-image-<ver>-myversion".


OT:

There's one thing that I don't understand.

Your kernel package name is "linux-image-<ver>-myversion_amd64.deb"
but if you look at a distro kernel deb you'll notice that it has two
"_" as above.

In that distro kernel deb, "3.11.8-1" is the version of the deb and
it's set via "--revision" when using make-kpkg.

The make-kpkg revision default is "10.00.Custom". How are you
overriding this value and making it nil? Does '--revision ""' do it?


More or less OT:

kernel-package, and therefore make-kpkg, is considered unmaintained by
the kernel maintainers.


Reply to: