In EbuildFetcher._start(), don't touch the build dir when in prefetch mode.
authorZac Medico <zmedico@gentoo.org>
Wed, 11 Mar 2009 03:27:55 +0000 (03:27 -0000)
committerZac Medico <zmedico@gentoo.org>
Wed, 11 Mar 2009 03:27:55 +0000 (03:27 -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. (trunk r12558)

svn path=/main/branches/2.1.6/; revision=12844

pym/_emerge/__init__.py

index 160e32901a451f8bce8071199953cebbf5470b35..785e16478fe98ed2f8c1e200923d62a21a824cd2 100644 (file)
@@ -2321,12 +2321,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: