In EbuildFetcher._start(), don't touch the build dir when in prefetch mode.
authorZac Medico <zmedico@gentoo.org>
Wed, 28 Jan 2009 18:39:48 +0000 (18:39 -0000)
committerZac Medico <zmedico@gentoo.org>
Wed, 28 Jan 2009 18:39:48 +0000 (18:39 -0000)
In this case, logging goes to emerge-fetch.log and the builddir should not be
touched since otherwise it could interfere with another instance of the same
cpv concurrently being built for a different $ROOT (currently, builds only
cooperate with prefetchers that are spawned for the same $ROOT). Thanks to
Daniel Robbins for reporting this issue.

svn path=/main/trunk/; revision=12558

pym/_emerge/__init__.py

index 881ba9cc6252ca4b981ba8e579c3d5c6179d872e..5666acaa3e0e56638e5e13ad72ac39c7d8a81eea 100644 (file)
@@ -2340,12 +2340,20 @@ class EbuildFetcher(SpawnProcess):
                portdb = root_config.trees["porttree"].dbapi
                ebuild_path = portdb.findname(self.pkg.cpv)
                settings = self.config_pool.allocate()
-               self._build_dir = EbuildBuildDir(pkg=self.pkg, settings=settings)
-               self._build_dir.lock()
-               self._build_dir.clean()
-               portage.prepare_build_dirs(self.pkg.root, self._build_dir.settings, 0)
-               if self.logfile is None:
-                       self.logfile = settings.get("PORTAGE_LOG_FILE")
+               settings.setcpv(self.pkg)
+
+               # In prefetch mode, logging goes to emerge-fetch.log and the builddir
+               # should not be touched since otherwise it could interfere with
+               # another instance of the same cpv concurrently being built for a
+               # different $ROOT (currently, builds only cooperate with prefetchers
+               # that are spawned for the same $ROOT).
+               if not self.prefetch:
+                       self._build_dir = EbuildBuildDir(pkg=self.pkg, settings=settings)
+                       self._build_dir.lock()
+                       self._build_dir.clean()
+                       portage.prepare_build_dirs(self.pkg.root, self._build_dir.settings, 0)
+                       if self.logfile is None:
+                               self.logfile = settings.get("PORTAGE_LOG_FILE")
 
                phase = "fetch"
                if self.fetchall: