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

Re: purpose of kernel-tree packages



On Thu, 2005-02-10 at 00:24 +0100, martin f krafft wrote:
> I am wondering what the purpose of the kernel-tree packages is.

Here's a snippet of a doc I wrote for work some time ago - hopefully
others will jump in if there are inaccuracies.

kernel-tree & kernel-patch-debian
---------------------------------
In the Debian archive, there are typically multiple kernel-image
packages that
build using a given kernel source package; e.g.,
kernel-image-2.4.25-i386 and
kernel-image-2.4.25-ia64 may both Build-Depend on kernel-source-2.4.25
so that
bug fixes and security updates to common source only need to occur in
one
place.

Since the unstable archive is always changing it is possible for a
version X
of a kernel-source package to exist, when the latest version of a given
kernel-image package was built against a version < X of the
kernel-source.

Here's an example of such a situation:
  1) kernel-source-2.4.25 (2.4.25-1) is added to the archive.
  2) kernel-image-2.4.25-i386 (2.4.25-1) is built against
     kernel-source-2.4.25 (2.4.25-1) and is added to the archive.
  3) kernel-source-2.4.25 (2.4.25-2) is uploaded.

At this point, the archive contains an inconsistency.  It is no longer
possible
to rebuild kernel-image-2.4.25-i386 and get matching binary packages,
since a
build at this point would use the 2.4.25-2 source instead of the
2.4.25-1
source.  If a release happens at this point, it can have harmful
after-effects.
It may be that the changes between the 2.4.25-1 and 2.4.25-2
kernel-source-2.4.25 releases makes kernel-image-2.4.25-i386
unbuildable.
Or, using the example above, it maybe that a security vulnerability
causes
what should be a minor rebuild of kernel-image to now also include some
additional features added in the kernel-source-2.4.25 (2.4.25-2).  This
induces instability.

To avoid the situation where an update to the core kernel-source package
breaks
one of the kernel-image packages that depend on it, the kernel-tree
system was
created.  The kernel-tree system provides a mechanism for rolling back a
source tree to an earlier version.

kernel-patch-debian provides the patches necessary for rolling back to
previous releases.  In each release, an additional reverse patch is
added to
this package which can be used to roll back to the previous version.
This is
non-intuitive since kernel-patch packages typically provide patches that
add
features or bug fixes, whereas kernel-patch-debian provides patches that
remove the features and bug fixes that have been added to the
kernel-source
package.

The kernel-tree packages are virtual packages used to specify the
versions of
the source tree that can be created by a given kernel-source package and
the
associated debian-patch package.  If a kernel-tree-2.4.25 package
"provides"
kernel-tree-2.4.25-2, and kernel-tree-2.4.25-3, then the build process
will
know that it can get back to the either one of those by applying patches
from
the associatied kernel-patch-debian package.




Reply to: