only digest/fetch files when the operation warrants it
authorMike Frysinger <vapier@gentoo.org>
Fri, 9 Dec 2005 02:03:26 +0000 (02:03 -0000)
committerMike Frysinger <vapier@gentoo.org>
Fri, 9 Dec 2005 02:03:26 +0000 (02:03 -0000)
svn path=/main/trunk/; revision=2348

pym/portage.py

index 2a6867909301b569dfb82240c6edfcf29793de65..678a695e81e9ec4e6baad1fe21b59250cde6e4d6 100644 (file)
@@ -2288,7 +2288,7 @@ def digestCheckFiles(myfiles, mydigests, basedir, note="", strict=0):
        return 1
 
 
-def digestcheck(myfiles, mysettings, strict=0):
+def digestcheck(myfiles, mysettings, strict=0, justmanifest=0):
        """Checks md5sums.  Assumes all files have been downloaded."""
        # archive files
        basedir=mysettings["DISTDIR"]+"/"
@@ -2365,6 +2365,9 @@ def digestcheck(myfiles, mysettings, strict=0):
                                print "--- Manifest check failed. 'strict' not enabled; ignoring."
                                print
 
+       if justmanifest:
+               return 1
+
        # Just return the status, as it's the last check.
        return digestCheckFiles(myfiles, mydigests, basedir, note="src_uri", strict=strict)
 
@@ -2771,7 +2774,8 @@ def doebuild(myebuild,mydo,myroot,mysettings,debug=0,listonly=0,fetchonly=0,clea
        except:
                pass
 
-       if mydo!="manifest" and not fetch(fetchme, mysettings, listonly=listonly, fetchonly=fetchonly):
+       # Only try and fetch the files if we are going to need them
+       if mydo in ["digest","fetch","unpack"] and not fetch(fetchme, mysettings, listonly=listonly, fetchonly=fetchonly):
                return 1
 
        if mydo=="fetch" and listonly:
@@ -2789,7 +2793,8 @@ def doebuild(myebuild,mydo,myroot,mysettings,debug=0,listonly=0,fetchonly=0,clea
        if mydo=="manifest":
                return (not digestgen(aalist,mysettings,overwrite=1,manifestonly=1))
 
-       if not digestcheck(checkme, mysettings, ("strict" in features)):
+       # Don't digest the src_uri files if we don't actually need them
+       if not digestcheck(checkme, mysettings, ("strict" in features), (mydo not in ["digest","fetch","unpack"])):
                return 1
 
        if mydo=="fetch":