[elbe-devel] [PATCH 1/5] rpcaptcache: Add get_corresponding_source_packages

Torben Hohn torben.hohn at linutronix.de
Mon May 25 14:53:15 CEST 2020


On Mon, May 25, 2020 at 08:46:09AM -0400, Olivier Dion wrote:
> On Mon, 25 May 2020, Torben Hohn <torben.hohn at linutronix.de> wrote:
> > On Tue, May 19, 2020 at 10:26:59PM -0400, Olivier Dion wrote:
> >> The method constructs a set of source packages from a list of binary
> >> packages.  This former includes the sources of the binaries, but also
> >> the built-using sources.
> >> 
> >> A list of unique tuples of the form (src_name, src_version) is
> >> returned
> >> 
> >> Signed-off-by: Olivier Dion <dion at linutronix.de>
> >> ---
> >>  elbepack/rpcaptcache.py | 32 +++++++++++++++++++++++++++++++-
> >>  1 file changed, 31 insertions(+), 1 deletion(-)
> >> 
> >> diff --git a/elbepack/rpcaptcache.py b/elbepack/rpcaptcache.py
> >> index 5a1bb01a..14c3f654 100644
> >> --- a/elbepack/rpcaptcache.py
> >> +++ b/elbepack/rpcaptcache.py
> >> @@ -16,7 +16,7 @@ import time
> >>  from multiprocessing.util import Finalize
> >>  from multiprocessing.managers import BaseManager
> >>  
> >> -from apt_pkg import config, version_compare
> >> +from apt_pkg import config, version_compare, TagFile
> >>  from apt import Cache
> >>  
> >>  from elbepack.aptprogress import (ElbeAcquireProgress, ElbeInstallProgress,
> >> @@ -289,6 +289,36 @@ class RPCAPTCache(InChRootObject):
> >>                  self.cache[p]) for p in sorted(
> >>                  self.cache.keys()) if pkgname in p.lower()]
> >>  
> >> +    def get_corresponding_source_packages(self, pkg_lst=None):
> >> +
> >> +        if pkg_lst is None:
> >> +            pkg_lst = {p.name for p in self.cache if p.is_installed}
> >
> > why {} ? this does not seem to be a dict.
> 
> This is a set.  This is useful because we do a 'in' operator later.
> Which is much faster on set than on list.

oh. sorry.
I thought it was a dict. Thsats good then.

Reviewed-by: Torben Hohn <torben.hohn at linutronix.de>

> 
> >
> > rest looks good... use [] and:
> >
> > Reviewed-by: Torben Hohn <torben.hohn at linutronix.de>
> >
> >> +
> >> +        src_set = set()
> >> +
> >> +        with TagFile('/var/lib/dpkg/status') as tagfile:
> >> +            for section in tagfile:
> >> +
> >> +                pkg = section['Package']
> >> +
> >> +                if pkg not in pkg_lst:
> >> +                    continue
> >> +
> >> +                tmp = self.cache[pkg].installed or self.cache[pkg].candidate
> >> +
> >> +                src_set.add((tmp.source_name, tmp.source_version))
> >> +
> >> +                if "Built-Using" not in section:
> >> +                    continue
> >> +
> >> +                built_using_lst = section["Built-Using"].split(', ')
> >> +                for built_using in built_using_lst:
> >> +                    name, version = built_using.split(' ', 1)
> >> +                    version = version.strip('(= )')
> >> +                    src_set.add((name, version))
> >> +
> >> +        return list(src_set)
> >> +
> >>      def compare_versions(self, ver1, ver2):
> >>          return version_compare(ver1, ver2)
> >>  
> >> -- 
> >> 2.26.2
> >> 
> >> 
> >> _______________________________________________
> >> elbe-devel mailing list
> >> elbe-devel at linutronix.de
> >> https://lists.linutronix.de/mailman/listinfo/elbe-devel
> >
> > -- 
> > Torben Hohn
> > Linutronix GmbH | Bahnhofstrasse 3 | D-88690 Uhldingen-Mühlhofen
> > Phone: +49 7556 25 999 18; Fax.: +49 7556 25 999 99
> >
> > Hinweise zum Datenschutz finden Sie hier (Informations on data privacy 
> > can be found here): https://linutronix.de/kontakt/Datenschutz.php
> >
> > Linutronix GmbH | Firmensitz (Registered Office): Uhldingen-Mühlhofen | 
> > Registergericht (Registration Court): Amtsgericht Freiburg i.Br., HRB700 
> > 806 | Geschäftsführer (Managing Directors): Heinz Egger, Thomas Gleixner
> -- 
> Olivier Dion
> Linutronix GmbH | Bahnhofstrasse 3 | D-88690 Uhldingen-Mühlhofen
> 
> _______________________________________________
> elbe-devel mailing list
> elbe-devel at linutronix.de
> https://lists.linutronix.de/mailman/listinfo/elbe-devel

-- 
Torben Hohn
Linutronix GmbH | Bahnhofstrasse 3 | D-88690 Uhldingen-Mühlhofen
Phone: +49 7556 25 999 18; Fax.: +49 7556 25 999 99

Hinweise zum Datenschutz finden Sie hier (Informations on data privacy 
can be found here): https://linutronix.de/kontakt/Datenschutz.php

Linutronix GmbH | Firmensitz (Registered Office): Uhldingen-Mühlhofen | 
Registergericht (Registration Court): Amtsgericht Freiburg i.Br., HRB700 
806 | Geschäftsführer (Managing Directors): Heinz Egger, Thomas Gleixner



More information about the elbe-devel mailing list