All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] kernel: add package version in dependencies for kernel packages
@ 2017-06-21 12:00 Heghedus Razvan
  2017-06-21 12:00 ` [PATCH 2/2] kernel: user defined KERNEL_VERSION_PKG_NAME Heghedus Razvan
  2017-06-26 15:50 ` [PATCH 1/2] kernel: add package version in dependencies for kernel packages Bruce Ashfield
  0 siblings, 2 replies; 15+ messages in thread
From: Heghedus Razvan @ 2017-06-21 12:00 UTC (permalink / raw)
  To: openembedded-core

Make all dependencies from kernel family packages which depend
on another kernel related package to depend on the same version.
This creates a consistent state where kernel, kernel images and
kernel modules have the same version, making a kernel upgrade
leading to upgrades of the image and modules.

The upgrade works only if the KERNEL_VERSION_PKG_NAME remains
the same for the newer versions.

Signed-off-by: Heghedus Razvan <razvan.heghedus@ni.com>
---
 meta/classes/kernel-module-split.bbclass  |  7 ++++---
 meta/classes/kernel.bbclass               | 15 +++++++++------
 meta/recipes-kernel/linux/linux-yocto.inc |  4 ++++
 3 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/meta/classes/kernel-module-split.bbclass b/meta/classes/kernel-module-split.bbclass
index 5e10dcf735..e247e66901 100644
--- a/meta/classes/kernel-module-split.bbclass
+++ b/meta/classes/kernel-module-split.bbclass
@@ -33,7 +33,7 @@ PACKAGESPLITFUNCS_prepend = "split_kernel_module_packages "
 KERNEL_MODULES_META_PACKAGE ?= "kernel-modules"
 
 KERNEL_MODULE_PACKAGE_PREFIX ?= ""
-KERNEL_MODULE_PACKAGE_SUFFIX ?= "-${KERNEL_VERSION}"
+KERNEL_MODULE_PACKAGE_SUFFIX ?= "-${KERNEL_VERSION_PKG_NAME}"
 KERNEL_MODULE_PROVIDE_VIRTUAL ?= "1"
 
 python split_kernel_module_packages () {
@@ -114,6 +114,7 @@ python split_kernel_module_packages () {
             for dep in vals["depends"].split(","):
                 on = legitimize_package_name(dep)
                 dependency_pkg = format % on
+                dependency_pkg += ' ${@get_full_package_version(d)}'
                 modinfo_deps.append(dependency_pkg)
         for dep in modinfo_deps:
             if not dep in rdepends:
@@ -138,10 +139,10 @@ python split_kernel_module_packages () {
     postinst = d.getVar('pkg_postinst_modules')
     postrm = d.getVar('pkg_postrm_modules')
 
-    modules = do_split_packages(d, root='${nonarch_base_libdir}/modules', file_regex=module_regex, output_pattern=module_pattern, description='%s kernel module', postinst=postinst, postrm=postrm, recursive=True, hook=frob_metadata, extra_depends='kernel-%s' % (d.getVar("KERNEL_VERSION")))
+    modules = do_split_packages(d, root='${nonarch_base_libdir}/modules', file_regex=module_regex, output_pattern=module_pattern, description='%s kernel module', postinst=postinst, postrm=postrm, recursive=True, hook=frob_metadata, extra_depends='kernel-%s %s' % (d.getVar("KERNEL_VERSION_PKG_NAME"), get_full_package_version(d)))
     if modules:
         metapkg = d.getVar('KERNEL_MODULES_META_PACKAGE')
-        d.appendVar('RDEPENDS_' + metapkg, ' '+' '.join(modules))
+        d.appendVar('RDEPENDS_' + metapkg, ' '+' '.join(['{0} {1}'.format(module, get_full_package_version(d)) for module in modules]))
 
     # If modules-load.d and modprobe.d are empty at this point, remove them to
     # avoid warnings. removedirs only raises an OSError if an empty
diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
index 7a134d5c29..605c101e62 100644
--- a/meta/classes/kernel.bbclass
+++ b/meta/classes/kernel.bbclass
@@ -55,7 +55,7 @@ python __anonymous () {
 
         d.setVar('FILES_kernel-image-' + typelower, '/' + imagedest + '/' + type + '-${KERNEL_VERSION_NAME}')
 
-        d.appendVar('RDEPENDS_kernel-image', ' ' + 'kernel-image-' + typelower)
+        d.appendVar('RDEPENDS_kernel-image', ' ' + 'kernel-image-' + typelower + ' ${@get_full_package_version(d)}')
 
         d.setVar('PKG_kernel-image-' + typelower, 'kernel-image-' + typelower + '-${KERNEL_VERSION_PKG_NAME}')
 
@@ -493,14 +493,17 @@ FILES_kernel-image = ""
 FILES_kernel-dev = "/boot/System.map* /boot/Module.symvers* /boot/config* ${KERNEL_SRC_PATH} ${nonarch_base_libdir}/modules/${KERNEL_VERSION}/build"
 FILES_kernel-vmlinux = "/boot/vmlinux-${KERNEL_VERSION_NAME}"
 FILES_kernel-modules = ""
-RDEPENDS_kernel = "kernel-base"
+RDEPENDS_kernel = "kernel-base ${@get_full_package_version(d)}"
 # Allow machines to override this dependency if kernel image files are
 # not wanted in images as standard
-RDEPENDS_kernel-base ?= "kernel-image"
-PKG_kernel-image = "kernel-image-${@legitimize_package_name('${KERNEL_VERSION}')}"
+RDEPENDS_kernel-base ?= "kernel-image ${@get_full_package_version(d)}"
+PKG_kernel-image = "kernel-image-${KERNEL_VERSION_PKG_NAME}"
 RDEPENDS_kernel-image += "${@base_conditional('KERNEL_IMAGETYPE', 'vmlinux', 'kernel-vmlinux', '', d)}"
-PKG_kernel-base = "kernel-${@legitimize_package_name('${KERNEL_VERSION}')}"
-RPROVIDES_kernel-base += "kernel-${KERNEL_VERSION}"
+PKG_kernel-base = "kernel-${KERNEL_VERSION_PKG_NAME}"
+RPROVIDES_kernel-base += "kernel-${KERNEL_VERSION_PKG_NAME}"
+PKG_kernel-vmlinux = "kernel-vmlinux-${KERNEL_VERSION_PKG_NAME}"
+PKG_kernel-modules = "kernel-modules-${KERNEL_VERSION_PKG_NAME}"
+PKG_kernel-dev = "kernel-dev-${KERNEL_VERSION_PKG_NAME}"
 ALLOW_EMPTY_kernel = "1"
 ALLOW_EMPTY_kernel-base = "1"
 ALLOW_EMPTY_kernel-image = "1"
diff --git a/meta/recipes-kernel/linux/linux-yocto.inc b/meta/recipes-kernel/linux/linux-yocto.inc
index 637506a2a8..c3d1284ad2 100644
--- a/meta/recipes-kernel/linux/linux-yocto.inc
+++ b/meta/recipes-kernel/linux/linux-yocto.inc
@@ -67,3 +67,7 @@ do_install_append(){
 addtask kernel_version_sanity_check after do_kernel_metadata do_kernel_checkout before do_compile
 addtask validate_branches before do_patch after do_kernel_checkout
 addtask kernel_configcheck after do_configure before do_compile
+
+def get_full_package_version(d):
+    return "(= " + d.getVar("PKGV") + "-" + d.getVar("PKGR") + ")"
+
-- 
2.13.1



^ permalink raw reply related	[flat|nested] 15+ messages in thread
[parent not found: <20170621104942.5601-1-razvan.heghedus@ni.com>]

end of thread, other threads:[~2017-07-10 12:51 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-21 12:00 [PATCH 1/2] kernel: add package version in dependencies for kernel packages Heghedus Razvan
2017-06-21 12:00 ` [PATCH 2/2] kernel: user defined KERNEL_VERSION_PKG_NAME Heghedus Razvan
2017-06-26 15:52   ` Bruce Ashfield
2017-06-27  9:15     ` Razvan Heghedus
2017-06-28  1:29       ` Bruce Ashfield
2017-06-29  9:10         ` Razvan Heghedus
2017-06-29 13:06           ` Bruce Ashfield
2017-07-03 14:36             ` Razvan Heghedus
2017-07-10 12:51               ` Bruce Ashfield
2017-06-26 15:50 ` [PATCH 1/2] kernel: add package version in dependencies for kernel packages Bruce Ashfield
2017-06-27  8:51   ` Razvan Heghedus
2017-06-28  1:10     ` Bruce Ashfield
2017-06-29  8:54       ` Razvan Heghedus
2017-06-29 13:07         ` Bruce Ashfield
     [not found] <20170621104942.5601-1-razvan.heghedus@ni.com>
2017-06-21 10:49 ` [PATCH 2/2] kernel: user defined KERNEL_VERSION_PKG_NAME Heghedus Razvan

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.