summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-03-11 06:12:24 +0000
committerZac Medico <zmedico@gentoo.org>2009-03-11 06:12:24 +0000
commitf5437b41e68385b66a867c0d509710ea32915bc3 (patch)
treed712450ba3a8075e3026df2a80c73ed585504f3e
parente08e83dd78ac1b006c3121bd2dc4afcd058148ed (diff)
downloadportage-f5437b41e68385b66a867c0d509710ea32915bc3.tar.gz
portage-f5437b41e68385b66a867c0d509710ea32915bc3.tar.bz2
portage-f5437b41e68385b66a867c0d509710ea32915bc3.zip
In EbuildFetchonly.execute(), skip builddir creation when the ebuild does
not set RESTRICT=fetch (since it's not possible for pkg_nofetch to be executed in this case). (trunk r12686) svn path=/main/branches/2.1.6/; revision=12946
-rw-r--r--pym/_emerge/__init__.py30
1 files changed, 26 insertions, 4 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py
index aeb4f0b5e..0a910928e 100644
--- a/pym/_emerge/__init__.py
+++ b/pym/_emerge/__init__.py
@@ -1664,6 +1664,32 @@ class EbuildFetchonly(SlotObject):
__slots__ = ("fetch_all", "pkg", "pretend", "settings")
def execute(self):
+ settings = self.settings
+ pkg = self.pkg
+ portdb = pkg.root_config.trees["porttree"].dbapi
+ ebuild_path = portdb.findname(pkg.cpv)
+ settings.setcpv(pkg)
+ debug = settings.get("PORTAGE_DEBUG") == "1"
+ use_cache = 1 # always true
+ portage.doebuild_environment(ebuild_path, "fetch",
+ settings["ROOT"], settings, debug, use_cache, portdb)
+ restrict_fetch = 'fetch' in settings['PORTAGE_RESTRICT'].split()
+
+ if restrict_fetch:
+ rval = self._execute_with_builddir()
+ else:
+ rval = portage.doebuild(ebuild_path, "fetch",
+ settings["ROOT"], settings, debug=debug,
+ listonly=self.pretend, fetchonly=1, fetchall=self.fetch_all,
+ mydbapi=portdb, tree="porttree")
+
+ if rval != os.EX_OK:
+ msg = "Fetch failed for '%s'" % (pkg.cpv,)
+ eerror(msg, phase="unpack", key=pkg.cpv)
+
+ return rval
+
+ def _execute_with_builddir(self):
# To spawn pkg_nofetch requires PORTAGE_BUILDDIR for
# ensuring sane $PWD (bug #239560) and storing elog
# messages. Use a private temp directory, in order
@@ -1693,11 +1719,7 @@ class EbuildFetchonly(SlotObject):
root_config = pkg.root_config
portdb = root_config.trees["porttree"].dbapi
ebuild_path = portdb.findname(pkg.cpv)
- settings.setcpv(pkg)
debug = settings.get("PORTAGE_DEBUG") == "1"
- use_cache = 1 # always true
- portage.doebuild_environment(ebuild_path, "fetch",
- root_config.root, settings, debug, use_cache, portdb)
portage.prepare_build_dirs(self.pkg.root, self.settings, 0)
retval = portage.doebuild(ebuild_path, "fetch",