Make Scheduler.merge() bail out early if PORTAGE_TMPDIR is not properly set.
authorZac Medico <zmedico@gentoo.org>
Wed, 26 Nov 2008 19:12:04 +0000 (19:12 -0000)
committerZac Medico <zmedico@gentoo.org>
Wed, 26 Nov 2008 19:12:04 +0000 (19:12 -0000)
svn path=/main/trunk/; revision=12103

pym/_emerge/__init__.py

index 2d7c05eb8685196d8e6dd40d4ccbde755a2fc599..e82269dd4a9b228c384582a55e5bdd2aea7110a2 100644 (file)
@@ -9697,6 +9697,22 @@ class Scheduler(PollScheduler):
 
                for root in self.trees:
                        root_config = self.trees[root]["root_config"]
+
+                       # Even for --pretend --fetch mode, PORTAGE_TMPDIR is required
+                       # since it might spawn pkg_nofetch which requires PORTAGE_BUILDDIR
+                       # for ensuring sane $PWD (bug #239560) and storing elog messages.
+                       tmpdir = root_config.settings.get("PORTAGE_TMPDIR", "")
+                       if not tmpdir or not os.path.isdir(tmpdir):
+                               msg = "The directory specified in your " + \
+                                       "PORTAGE_TMPDIR variable, '%s', " % tmpdir + \
+                               "does not exist. Please create this " + \
+                               "directory or correct your PORTAGE_TMPDIR setting."
+                               msg = textwrap.wrap(msg, 70)
+                               out = portage.output.EOutput()
+                               for l in msg:
+                                       out.eerror(l)
+                               return 1
+
                        if self._background:
                                root_config.settings.unlock()
                                root_config.settings["PORTAGE_BACKGROUND"] = "1"