diff options
author | André Erdmann <dywi@mailerd.de> | 2013-06-19 20:51:35 +0200 |
---|---|---|
committer | André Erdmann <dywi@mailerd.de> | 2013-06-19 20:51:35 +0200 |
commit | daf73b9acc9191382332ef2e4582e906db9ad435 (patch) | |
tree | f4d7829500424854b3b379257143dfd95a0dd7de /roverlay/packageinfo.py | |
parent | roverlay/ebuild: useflagmap (diff) | |
download | R_overlay-daf73b9acc9191382332ef2e4582e906db9ad435.tar.gz R_overlay-daf73b9acc9191382332ef2e4582e906db9ad435.tar.bz2 R_overlay-daf73b9acc9191382332ef2e4582e906db9ad435.zip |
packageinfo: create distmap data, make hashes
Diffstat (limited to 'roverlay/packageinfo.py')
-rw-r--r-- | roverlay/packageinfo.py | 43 |
1 files changed, 39 insertions, 4 deletions
diff --git a/roverlay/packageinfo.py b/roverlay/packageinfo.py index 90b4250..e8004d0 100644 --- a/roverlay/packageinfo.py +++ b/roverlay/packageinfo.py @@ -18,6 +18,8 @@ import os.path import logging import threading +import roverlay.digest + from roverlay import config, strutil from roverlay.rpackage import descriptionreader @@ -123,7 +125,7 @@ class PackageInfo ( object ): self._info = dict() self.readonly = False self._update_lock = threading.RLock() - self.overlay_package_ref = None + #self.overlay_package_ref = None self.logger = LOGGER #self._evars = dict() #self._lazy_actions = list() @@ -373,9 +375,7 @@ class PackageInfo ( object ): elif key_low == 'package_src_destpath': # src file path relative to distroot (mirror root dir) destpath = self._info.get ('src_uri_dest', None ) - return ( - destpath or os.path.basename ( self._info ['package_filename'] ) - ) + return ( destpath or self._info ['package_filename'] ) # end if <key matches ...> @@ -450,6 +450,41 @@ class PackageInfo ( object ): return self._info ['desc_data'] # --- end of get_desc_data (...) --- + def get_distmap_item ( self ): + return ( self.get_distmap_key(), self.get_distmap_value() ) + # --- end of get_distmap_item (...) --- + + def get_distmap_key ( self ): + return self.get ( "package_src_destpath" ) + # --- end of get_distmap_key (...) --- + + def get_distmap_value ( self ): + assert 'sha256' in self.hashdict + + repo = self.get ( "origin" ) + return ( + repo.name, + os.path.relpath ( self.get ( "package_file" ), repo.distdir ), + self.hashdict ['sha256'] + ) + # --- end of get_distmap_value (...) --- + + def make_hashes ( self, hashlist ): + pkgfile = self.get ( "package_file" ) + + if hasattr ( self, 'hashdict' ) and self.hashdict: + new_hashes = ( + frozenset ( hashlist ) - frozenset ( self.hashdict.keys() ) + ) + + if new_hashes: + self.hashdict.update ( + roverlay.digest.multihash_file ( pkgfile, new_hashes ) + ) + else: + self.hashdict = roverlay.digest.multihash_file ( pkgfile, hashlist ) + # --- end of make_hashes (...) --- + def __getitem__ ( self, key ): """Returns an item.""" return self.get ( key, do_fallback=False ) |