aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndré Erdmann <dywi@mailerd.de>2013-06-21 01:34:54 +0200
committerAndré Erdmann <dywi@mailerd.de>2013-06-21 01:34:54 +0200
commit6a34fb49dd27014154427e95de9f1f7917cd90b9 (patch)
tree0326cf007b2e3f1cd94f146d245afdf080b935d3 /roverlay/packageinfo.py
parentroverlay/digest: fixup (diff)
downloadR_overlay-6a34fb49dd27014154427e95de9f1f7917cd90b9.tar.gz
R_overlay-6a34fb49dd27014154427e95de9f1f7917cd90b9.tar.bz2
R_overlay-6a34fb49dd27014154427e95de9f1f7917cd90b9.zip
roverlay: use distmap
Add distmap support to distroot/overlay. revbump functionality in PackageInfo is missing and some debug output has to be removed.
Diffstat (limited to 'roverlay/packageinfo.py')
-rw-r--r--roverlay/packageinfo.py48
1 files changed, 45 insertions, 3 deletions
diff --git a/roverlay/packageinfo.py b/roverlay/packageinfo.py
index e8004d0..83a05ed 100644
--- a/roverlay/packageinfo.py
+++ b/roverlay/packageinfo.py
@@ -19,6 +19,7 @@ import logging
import threading
import roverlay.digest
+import roverlay.db.distmap
from roverlay import config, strutil
from roverlay.rpackage import descriptionreader
@@ -116,6 +117,9 @@ class PackageInfo ( object ):
'ebuild'
))
+ # bind DIGEST_TYPE to this class
+ DISTMAP_DIGEST_TYPE = roverlay.db.distmap.DistMapInfo.DIGEST_TYPE
+
def __init__ ( self, **initial_info ):
"""Initializes a PackageInfo.
@@ -451,25 +455,45 @@ class PackageInfo ( object ):
# --- end of get_desc_data (...) ---
def get_distmap_item ( self ):
+ """Returns a 2-tuple ( key, info ) for the distmap."""
return ( self.get_distmap_key(), self.get_distmap_value() )
# --- end of get_distmap_item (...) ---
def get_distmap_key ( self ):
+ """Returns a key for the distmap."""
return self.get ( "package_src_destpath" )
# --- end of get_distmap_key (...) ---
- def get_distmap_value ( self ):
- assert 'sha256' in self.hashdict
+ def get_distmap_value ( self, allow_digest_create=False ):
+ """Returns a data tuple for creating DistMapInfo instances.
+ arguments:
+ * allow_digest_create --
+ """
repo = self.get ( "origin" )
return (
repo.name,
os.path.relpath ( self.get ( "package_file" ), repo.distdir ),
- self.hashdict ['sha256']
+ (
+ self.make_distmap_hash() if allow_digest_create
+ else self.hashdict [self.DISTMAP_DIGEST_TYPE]
+ )
)
# --- end of get_distmap_value (...) ---
+ def make_distmap_hash ( self ):
+ """Creates (and returns) the distmap package file hash."""
+ return self.make_hashes ( { self.DISTMAP_DIGEST_TYPE, } ) [self.DISTMAP_DIGEST_TYPE]
+ # --- end of make_distmap_hash (...) ---
+
def make_hashes ( self, hashlist ):
+ """Creates zero or more hashes and returns the hashdict.
+
+ Note: the hashdict can also be accessed directly via <this>.hashdict.
+
+ arguments:
+ * hashlist -- list of hash names, e.g. "sha256", "md5"
+ """
pkgfile = self.get ( "package_file" )
if hasattr ( self, 'hashdict' ) and self.hashdict:
@@ -483,8 +507,26 @@ class PackageInfo ( object ):
)
else:
self.hashdict = roverlay.digest.multihash_file ( pkgfile, hashlist )
+
+ return self.hashdict
# --- end of make_hashes (...) ---
+ def revbump ( self, newrev=None ):
+ """Do whatever necessary to revbump this pakages, that is set/update
+ all data like src_uri_destfile.
+
+ arguments:
+ * newrev -- new revision, (current rev + 1) is used if this is None
+ """
+ raise NotImplementedError ( "revbump code" )
+ if newrev is None:
+ # get old rev and increment it
+ pass
+ else:
+ pass
+ return self
+ # --- end of revbump (...) ---
+
def __getitem__ ( self, key ):
"""Returns an item."""
return self.get ( key, do_fallback=False )