[elbe-devel] [PATCH] Check for matching version before installing dev packges for sdk

Soest Laurent Laurent.Soest at bernina.com
Mon Nov 25 10:45:32 CET 2019


Hello this is my first attempt to post to a mailing list.
If I did not follow the correct process  / missed something please tell me.

When building the sdk, "-dev" package versions were more recent than the ones we had "pinned" for the image.
This patch tries to find the matching version for "-dev" packages installed to the sdk.

sdk -dev packages should use the same version as installed packages in
the rootfs
---
 elbepack/rpcaptcache.py | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/elbepack/rpcaptcache.py b/elbepack/rpcaptcache.py
index afb29ed6f..eb953e4fc 100644
--- a/elbepack/rpcaptcache.py
+++ b/elbepack/rpcaptcache.py
@@ -145,6 +145,9 @@ class RPCAPTCache(InChRootObject):
         src_list = [
             p.candidate.source_name for p in self.cache if (
                 p.is_installed and p.name not in ignore_pkgs)]
+        version_dict = {
+            p.name: p.candidate.version for p in self.cache if (
+                p.is_installed and p.name not in ignore_pkgs)}
         # go through all packages, remember package if its source package
         # matches one of the installed packages and the binary package is a
         # '-dev' package
@@ -154,6 +157,12 @@ class RPCAPTCache(InChRootObject):
                     s.name.endswith('-dev')))]
         for p in dev_list:
             if p.name not in ignore_dev_pkgs:
+                srcname = p.name[:-len('-dev')]
+                if srcname in version_dict:
+                    version = version_dict[srcname]
+                    candidate = p.versions.get(version)
+                    if candidate:
+                        p.candidate = candidate
                 p.mark_install()
         # ensure that the symlinks package will be installed (it's needed for
         # fixing links inside the sysroot
@@ -168,7 +177,14 @@ class RPCAPTCache(InChRootObject):
 
         for p in dbgsym_list:
             if p in self.cache:
-                self.cache[p].mark_install()
+                pkg = self.cache[p]
+                srcname = pkg.name[:-len('-dbgsym')]
+                if srcname in version_dict:
+                    version = version_dict[srcname]
+                    candidate = pkg.versions.get(version)
+                    if candidate:
+                        pkg.candidate = candidate
+                pkg.mark_install()
 
     def cleanup(self, exclude_pkgs):
         for p in self.cache:
-- 
2.17.1



More information about the elbe-devel mailing list