Index: pym/portage/__init__.py =================================================================== --- pym/portage/__init__.py (revision 12796) +++ pym/portage/__init__.py (revision 12799) @@ -5952,6 +5952,7 @@ mycpv = "/".join((mysettings["CATEGORY"], mysettings["PF"])) emerge_skip_distfiles = returnpid + emerge_skip_digest = returnpid # Only try and fetch the files if we are going to need them ... # otherwise, if user has FEATURES=noauto and they run `ebuild clean # unpack compile install`, we will try and fetch 4 times :/ @@ -6008,7 +6009,8 @@ elif mydo == "digest": return not digestgen(aalist, mysettings, overwrite=1, myportdb=mydbapi) - elif "digest" in mysettings.features: + elif not emerge_skip_digest and not parallel_fetchonly and \ + "digest" in mysettings.features: digestgen(aalist, mysettings, overwrite=0, myportdb=mydbapi) except portage.exception.PermissionDenied, e: writemsg("!!! Permission Denied: %s\n" % (e,), noiselevel=-1) Index: pym/_emerge/__init__.py =================================================================== --- pym/_emerge/__init__.py (revision 12796) +++ pym/_emerge/__init__.py (revision 12799) @@ -14572,7 +14572,14 @@ # Convert Atom instances to plain str. mtimedb["resume"]["favorites"] = [str(x) for x in favorites] - if ("--digest" in myopts) and not ("--fetchonly" in myopts or "--fetch-all-uri" in myopts): + digest = '--digest' in myopts + if not digest: + for pkgsettings in mydepgraph.pkgsettings.itervalues(): + if 'digest' in pkgsettings.features: + digest = True + break + + if digest and '--fetchonly' not in myopts: for pkgline in mydepgraph.altlist(): if pkgline[0]=="ebuild" and pkgline[3]=="merge": y = trees[pkgline[1]]["porttree"].dbapi.findname(pkgline[2])