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

Bastian Germann bage at linutronix.de
Tue Nov 26 11:58:29 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.

For the next version, please do not include this remark. You should send
a cover letter with such additional information.

> 
> 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')]

There should be means to get the source name via python-apt from the
package meta data.

> +                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')]

Same here.

> +                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:
> 



More information about the elbe-devel mailing list