summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pym/portage.py10
-rw-r--r--pym/portage_manifest.py13
2 files changed, 14 insertions, 9 deletions
diff --git a/pym/portage.py b/pym/portage.py
index dc8f2c0b7..5b2c278f4 100644
--- a/pym/portage.py
+++ b/pym/portage.py
@@ -2077,18 +2077,10 @@ def digestgen(myarchives,mysettings,db=None,overwrite=1,manifestonly=0):
for f in myarchives:
# the whole type evaluation is only for the case that myarchives isn't a
# DIST file as create() determines the type on its own
- mytype = mf.guessType(f)
- if mytype == "AUX":
- f = f[5:]
- elif mytype is None:
- continue
- myrealtype = mf.findFile(f)
- if myrealtype != None:
- mytype = myrealtype
writemsg(">>> Creating Manifest for %s\n" % mysettings["O"])
try:
writemsg(">>> Adding digests for file %s\n" % f)
- mf.updateFileHashes(mytype, f, checkExisting=False, reuseExisting=not os.path.exists(os.path.join(mysettings["DISTDIR"], f)))
+ mf.updateHashesGuessType(f, checkExisting=False, reuseExisting=not os.path.exists(os.path.join(mysettings["DISTDIR"], f)))
except portage_exception.FileNotFound, e:
writemsg("!!! File %s doesn't exist, can't update Manifest\n" % str(e))
return 0
diff --git a/pym/portage_manifest.py b/pym/portage_manifest.py
index 8cfb43a82..073f7de56 100644
--- a/pym/portage_manifest.py
+++ b/pym/portage_manifest.py
@@ -389,6 +389,19 @@ class Manifest(object):
for f in self._getCpvDistfiles(cpv):
self.updateFileHashes("DIST", f, ignoreMissingFiles=ignoreMissingFiles)
+ def updateHashesGuessType(self, fname, *args, **kwargs):
+ """ Regenerate hashes for the given file (guesses the type and then
+ calls updateFileHashes)."""
+ mytype = self.guessType(fname)
+ if mytype == "AUX":
+ fname = fname[len("files" + os.sep):]
+ elif mytype is None:
+ return
+ myrealtype = self.findFile(fname)
+ if myrealtype is not None:
+ mytype = myrealtype
+ return self.updateFileHashes(mytype, fname, *args, **kwargs)
+
def getFileData(self, ftype, fname, key):
""" Return the value of a specific (type,filename,key) triple, mainly useful
to get the size for distfiles."""