doebuild: fix bug #349273
authorZac Medico <zmedico@gentoo.org>
Tue, 21 Dec 2010 16:29:39 +0000 (08:29 -0800)
committerZac Medico <zmedico@gentoo.org>
Tue, 21 Dec 2010 16:29:39 +0000 (08:29 -0800)
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.

bin/ebuild
pym/portage/package/ebuild/doebuild.py

index f7008b1b5c9efd25841a157a0869e3fa20771add..b57215fa78da9ae1597ebf8b90a8a224d33a075c 100755 (executable)
@@ -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:
index 3071cf8d46f81636d0354310bc494fce15e8968f..4761d3e60ea96e975b6419a5e8187758e9cf19e9 100644 (file)
@@ -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