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):
