<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jun 21, 2017 at 8:00 AM, Heghedus Razvan <span dir="ltr">&lt;<a href="mailto:razvan.heghedus@ni.com" target="_blank">razvan.heghedus@ni.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Make all dependencies from kernel family packages which depend<br>
on another kernel related package to depend on the same version.<br>
This creates a consistent state where kernel, kernel images and<br>
kernel modules have the same version, making a kernel upgrade<br>
leading to upgrades of the image and modules.<br>
<br>
The upgrade works only if the KERNEL_VERSION_PKG_NAME remains<br>
the same for the newer versions.<br>
<br>
Signed-off-by: Heghedus Razvan &lt;<a href="mailto:razvan.heghedus@ni.com">razvan.heghedus@ni.com</a>&gt;<br>
---<br>
 meta/classes/kernel-module-<wbr>split.bbclass  |  7 ++++---<br>
 meta/classes/kernel.bbclass               | 15 +++++++++------<br>
 meta/recipes-kernel/linux/<wbr>linux-yocto.inc |  4 ++++<br>
 3 files changed, 17 insertions(+), 9 deletions(-)<br>
<br>
diff --git a/meta/classes/kernel-module-<wbr>split.bbclass b/meta/classes/kernel-module-<wbr>split.bbclass<br>
index 5e10dcf735..e247e66901 100644<br>
--- a/meta/classes/kernel-module-<wbr>split.bbclass<br>
+++ b/meta/classes/kernel-module-<wbr>split.bbclass<br>
@@ -33,7 +33,7 @@ PACKAGESPLITFUNCS_prepend = &quot;split_kernel_module_packages &quot;<br>
 KERNEL_MODULES_META_PACKAGE ?= &quot;kernel-modules&quot;<br>
<br>
 KERNEL_MODULE_PACKAGE_PREFIX ?= &quot;&quot;<br>
-KERNEL_MODULE_PACKAGE_SUFFIX ?= &quot;-${KERNEL_VERSION}&quot;<br>
+KERNEL_MODULE_PACKAGE_SUFFIX ?= &quot;-${KERNEL_VERSION_PKG_NAME}&quot;<br>
 KERNEL_MODULE_PROVIDE_VIRTUAL ?= &quot;1&quot;<br>
<br>
 python split_kernel_module_packages () {<br>
@@ -114,6 +114,7 @@ python split_kernel_module_packages () {<br>
             for dep in vals[&quot;depends&quot;].split(&quot;,&quot;):<br>
                 on = legitimize_package_name(dep)<br>
                 dependency_pkg = format % on<br>
+                dependency_pkg += &#39; ${@get_full_package_version(d)<wbr>}&#39;<br>
                 modinfo_deps.append(<wbr>dependency_pkg)<br>
         for dep in modinfo_deps:<br>
             if not dep in rdepends:<br>
@@ -138,10 +139,10 @@ python split_kernel_module_packages () {<br>
     postinst = d.getVar(&#39;pkg_postinst_<wbr>modules&#39;)<br>
     postrm = d.getVar(&#39;pkg_postrm_modules&#39;)<br>
<br>
-    modules = do_split_packages(d, root=&#39;${nonarch_base_libdir}/<wbr>modules&#39;, file_regex=module_regex, output_pattern=module_pattern, description=&#39;%s kernel module&#39;, postinst=postinst, postrm=postrm, recursive=True, hook=frob_metadata, extra_depends=&#39;kernel-%s&#39; % (d.getVar(&quot;KERNEL_VERSION&quot;)))<br>
+    modules = do_split_packages(d, root=&#39;${nonarch_base_libdir}/<wbr>modules&#39;, file_regex=module_regex, output_pattern=module_pattern, description=&#39;%s kernel module&#39;, postinst=postinst, postrm=postrm, recursive=True, hook=frob_metadata, extra_depends=&#39;kernel-%s %s&#39; % (d.getVar(&quot;KERNEL_VERSION_PKG_<wbr>NAME&quot;), get_full_package_version(d)))<br>
     if modules:<br>
         metapkg = d.getVar(&#39;KERNEL_MODULES_META_<wbr>PACKAGE&#39;)<br>
-        d.appendVar(&#39;RDEPENDS_&#39; + metapkg, &#39; &#39;+&#39; &#39;.join(modules))<br>
+        d.appendVar(&#39;RDEPENDS_&#39; + metapkg, &#39; &#39;+&#39; &#39;.join([&#39;{0} {1}&#39;.format(module, get_full_package_version(d)) for module in modules]))<br>
<br>
     # If modules-load.d and modprobe.d are empty at this point, remove them to<br>
     # avoid warnings. removedirs only raises an OSError if an empty<br>
diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass<br>
index 7a134d5c29..605c101e62 100644<br>
--- a/meta/classes/kernel.bbclass<br>
+++ b/meta/classes/kernel.bbclass<br>
@@ -55,7 +55,7 @@ python __anonymous () {<br>
<br>
         d.setVar(&#39;FILES_kernel-image-&#39; + typelower, &#39;/&#39; + imagedest + &#39;/&#39; + type + &#39;-${KERNEL_VERSION_NAME}&#39;)<br>
<br>
-        d.appendVar(&#39;RDEPENDS_kernel-<wbr>image&#39;, &#39; &#39; + &#39;kernel-image-&#39; + typelower)<br>
+        d.appendVar(&#39;RDEPENDS_kernel-<wbr>image&#39;, &#39; &#39; + &#39;kernel-image-&#39; + typelower + &#39; ${@get_full_package_version(d)<wbr>}&#39;)<br>
<br>
         d.setVar(&#39;PKG_kernel-image-&#39; + typelower, &#39;kernel-image-&#39; + typelower + &#39;-${KERNEL_VERSION_PKG_NAME}&#39;)<br>
<br>
@@ -493,14 +493,17 @@ FILES_kernel-image = &quot;&quot;<br>
 FILES_kernel-dev = &quot;/boot/System.map* /boot/Module.symvers* /boot/config* ${KERNEL_SRC_PATH} ${nonarch_base_libdir}/<wbr>modules/${KERNEL_VERSION}/<wbr>build&quot;<br>
 FILES_kernel-vmlinux = &quot;/boot/vmlinux-${KERNEL_<wbr>VERSION_NAME}&quot;<br>
 FILES_kernel-modules = &quot;&quot;<br>
-RDEPENDS_kernel = &quot;kernel-base&quot;<br>
+RDEPENDS_kernel = &quot;kernel-base ${@get_full_package_version(d)<wbr>}&quot;<br></blockquote><div><br></div><div>Is that really supposed to be a space, between kernel-base and the package version<br></div><div>call ? I guess so, since I see the same thing below in the RDEPENDS_kernel-base</div><div>line below .. but it just reads strange to me.  i.e. if that&#39;s a RDEPENDS, where is the</div><div>package get_full_package_version(d) created ?</div><div><br></div><div>Are you trying to set a generic versionless RDEPENDS and a versioned one that doesn&#39;t</div><div>contain &#39;kernel-&#39; in the name ?</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
 # Allow machines to override this dependency if kernel image files are<br>
 # not wanted in images as standard<br>
-RDEPENDS_kernel-base ?= &quot;kernel-image&quot;<br>
-PKG_kernel-image = &quot;kernel-image-${@legitimize_<wbr>package_name(&#39;${KERNEL_<wbr>VERSION}&#39;)}&quot;<br>
+RDEPENDS_kernel-base ?= &quot;kernel-image ${@get_full_package_version(d)<wbr>}&quot;<br>
+PKG_kernel-image = &quot;kernel-image-${KERNEL_<wbr>VERSION_PKG_NAME}&quot;<br>
 RDEPENDS_kernel-image += &quot;${@base_conditional(&#39;KERNEL_<wbr>IMAGETYPE&#39;, &#39;vmlinux&#39;, &#39;kernel-vmlinux&#39;, &#39;&#39;, d)}&quot;<br>
-PKG_kernel-base = &quot;kernel-${@legitimize_package_<wbr>name(&#39;${KERNEL_VERSION}&#39;)}&quot;<br>
-RPROVIDES_kernel-base += &quot;kernel-${KERNEL_VERSION}&quot;<br>
+PKG_kernel-base = &quot;kernel-${KERNEL_VERSION_PKG_<wbr>NAME}&quot;<br>
+RPROVIDES_kernel-base += &quot;kernel-${KERNEL_VERSION_PKG_<wbr>NAME}&quot;<br>
+PKG_kernel-vmlinux = &quot;kernel-vmlinux-${KERNEL_<wbr>VERSION_PKG_NAME}&quot;<br></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">+PKG_kernel-modules = &quot;kernel-modules-${KERNEL_<wbr>VERSION_PKG_NAME}&quot;<br>
+PKG_kernel-dev = &quot;kernel-dev-${KERNEL_VERSION_<wbr>PKG_NAME}&quot;<br>
 ALLOW_EMPTY_kernel = &quot;1&quot;<br>
 ALLOW_EMPTY_kernel-base = &quot;1&quot;<br>
 ALLOW_EMPTY_kernel-image = &quot;1&quot;<br>
diff --git a/meta/recipes-kernel/linux/<wbr>linux-yocto.inc b/meta/recipes-kernel/linux/<wbr>linux-yocto.inc<br>
index 637506a2a8..c3d1284ad2 100644<br>
--- a/meta/recipes-kernel/linux/<wbr>linux-yocto.inc<br>
+++ b/meta/recipes-kernel/linux/<wbr>linux-yocto.inc<br>
@@ -67,3 +67,7 @@ do_install_append(){<br>
 addtask kernel_version_sanity_check after do_kernel_metadata do_kernel_checkout before do_compile<br>
 addtask validate_branches before do_patch after do_kernel_checkout<br>
 addtask kernel_configcheck after do_configure before do_compile<br>
+<br>
+def get_full_package_version(d):<br>
+    return &quot;(= &quot; + d.getVar(&quot;PKGV&quot;) + &quot;-&quot; + d.getVar(&quot;PKGR&quot;) + &quot;)&quot;<br></blockquote><div><br></div><div>This doesn&#39;t belong in linux-yocto.inc, since it is called in kernel.bbclass. It needs to be in the base</div><div>class and have a namespace that indicates it is specific to the kernel.</div><div><br></div><div>Bruce</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
+<br>
<span class="gmail-HOEnZb"><font color="#888888">--<br>
2.13.1<br>
<br>
--<br>
______________________________<wbr>_________________<br>
Openembedded-core mailing list<br>
<a href="mailto:Openembedded-core@lists.openembedded.org">Openembedded-core@lists.<wbr>openembedded.org</a><br>
<a href="http://lists.openembedded.org/mailman/listinfo/openembedded-core" rel="noreferrer" target="_blank">http://lists.openembedded.org/<wbr>mailman/listinfo/openembedded-<wbr>core</a><br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">&quot;Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end&quot;</div>
</div></div>