commit:     28d3c9ed46b16757626b292dd6d7a6cae054b669
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Thu May 24 19:40:10 2018 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Thu May 24 19:42:13 2018 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=28d3c9ed

doebuild: eliminate redundant aux_get calls (bug 656394)

These redundant aux_get calls triggered event loop recursion
when called via EbuildFetchonly as reported in bug 656394.

Bug: https://bugs.gentoo.org/656394

 pym/portage/package/ebuild/doebuild.py | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/pym/portage/package/ebuild/doebuild.py 
b/pym/portage/package/ebuild/doebuild.py
index c3b89ade2..dc443df00 100644
--- a/pym/portage/package/ebuild/doebuild.py
+++ b/pym/portage/package/ebuild/doebuild.py
@@ -1048,9 +1048,11 @@ def doebuild(myebuild, mydo, _unused=DeprecationWarning, 
settings=None, debug=0,
                        mydo not in ("digest", "manifest") and "noauto" not in 
features)
                if need_distfiles:
 
-                       src_uri, = mydbapi.aux_get(mysettings.mycpv,
-                               ["SRC_URI"], 
mytree=os.path.dirname(os.path.dirname(
-                               os.path.dirname(myebuild))))
+                       src_uri = mysettings.configdict["pkg"].get("SRC_URI")
+                       if src_uri is None:
+                               src_uri, = mydbapi.aux_get(mysettings.mycpv,
+                                       ["SRC_URI"], 
mytree=os.path.dirname(os.path.dirname(
+                                       os.path.dirname(myebuild))))
                        metadata = {
                                "EAPI"    : mysettings["EAPI"],
                                "SRC_URI" : src_uri,
@@ -1410,9 +1412,14 @@ def _validate_deps(mysettings, myroot, mydo, mydbapi):
        all_keys = set(Package.metadata_keys)
        all_keys.add("SRC_URI")
        all_keys = tuple(all_keys)
-       metadata = dict(zip(all_keys,
-               mydbapi.aux_get(mysettings.mycpv, all_keys,
-               myrepo=mysettings.get("PORTAGE_REPO_NAME"))))
+       metadata = mysettings.configdict['pkg']
+       if all(k in metadata for k in ("PORTAGE_REPO_NAME", "SRC_URI")):
+               metadata = dict(((k, metadata[k]) for k in all_keys if k in 
metadata),
+                       repository=metadata["PORTAGE_REPO_NAME"])
+       else:
+               metadata = dict(zip(all_keys,
+                       mydbapi.aux_get(mysettings.mycpv, all_keys,
+                       myrepo=mysettings.get("PORTAGE_REPO_NAME"))))
 
        class FakeTree(object):
                def __init__(self, mydb):

Reply via email to