summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2010-12-21 08:29:39 -0800
committerZac Medico <zmedico@gentoo.org>2010-12-21 08:29:39 -0800
commit49f2974e15f7e37dde4cfbcef84abf14e6dd4e4a (patch)
treeea2c4230c32f2bccaf23682db10d332f4d3ca570
parentdcfcb30a031cb2684b10ec80427a4c83adb18c83 (diff)
downloadportage-49f2974e15f7e37dde4cfbcef84abf14e6dd4e4a.tar.gz
portage-49f2974e15f7e37dde4cfbcef84abf14e6dd4e4a.tar.bz2
portage-49f2974e15f7e37dde4cfbcef84abf14e6dd4e4a.zip
doebuild: fix bug #349273
Since commit 75d3130fc8293fff68389b8fed44b8d47a0abe80, doebuild() for the 'setup' phase triggers the actionmap_deps code path in order to call the 'pretend' phase as a dependency. This path previously assumed a portdbapi instance, which may not hold for some api consumers such as entropy. Therefore, fix the code path to work with other dbapi types.
-rwxr-xr-xbin/ebuild2
-rw-r--r--pym/portage/package/ebuild/doebuild.py13
2 files changed, 11 insertions, 4 deletions
diff --git a/bin/ebuild b/bin/ebuild
index f7008b1b5..b57215fa7 100755
--- a/bin/ebuild
+++ b/bin/ebuild
@@ -241,7 +241,7 @@ build_dir_phases = set(["setup", "unpack", "prepare", "configure", "compile",
# If the current metadata is invalid then force the ebuild to be
# sourced again even if $T/environment already exists.
ebuild_changed = False
-if build_dir_phases.intersection(pargs):
+if mytree == "porttree" and build_dir_phases.intersection(pargs):
metadata, st, emtime = \
portage.portdb._pull_valid_cache(cpv, ebuild, ebuild_portdir)
if metadata is None:
diff --git a/pym/portage/package/ebuild/doebuild.py b/pym/portage/package/ebuild/doebuild.py
index 3071cf8d4..4761d3e60 100644
--- a/pym/portage/package/ebuild/doebuild.py
+++ b/pym/portage/package/ebuild/doebuild.py
@@ -686,7 +686,12 @@ def doebuild(myebuild, mydo, myroot, mysettings, debug=0, listonly=0,
mydo not in ("digest", "manifest") and "noauto" not in features)
alist = mysettings.configdict["pkg"].get("A")
aalist = mysettings.configdict["pkg"].get("AA")
- if alist is None or aalist is None or \
+ if not hasattr(mydbapi, 'getFetchMap'):
+ if alist is None:
+ alist = set()
+ if aalist is None:
+ aalist = set()
+ elif alist is None or aalist is None or \
(not emerge_skip_distfiles and need_distfiles):
# Make sure we get the correct tree in case there are overlays.
mytree = os.path.realpath(
@@ -746,7 +751,7 @@ def doebuild(myebuild, mydo, myroot, mysettings, debug=0, listonly=0,
return 1
# See above comment about fetching only when needed
- if not emerge_skip_distfiles and \
+ if tree == 'porttree' and \
not digestcheck(checkme, mysettings, "strict" in features):
return 1
@@ -754,7 +759,9 @@ def doebuild(myebuild, mydo, myroot, mysettings, debug=0, listonly=0,
return 0
# remove PORTAGE_ACTUAL_DISTDIR once cvs/svn is supported via SRC_URI
- if (mydo != "setup" and "noauto" not in features) or mydo == "unpack":
+ if tree == 'porttree' and \
+ ((mydo != "setup" and "noauto" not in features) \
+ or mydo == "unpack"):
_prepare_fake_distdir(mysettings, alist)
#initial dep checks complete; time to process main commands