Bug #192341 - Make emerge bail out on FreeBSD if the freebsd python module
authorZac Medico <zmedico@gentoo.org>
Thu, 13 Sep 2007 23:41:10 +0000 (23:41 -0000)
committerZac Medico <zmedico@gentoo.org>
Thu, 13 Sep 2007 23:41:10 +0000 (23:41 -0000)
fails to import. Display a notification that "ignore-missing-freebsd-module"
can be added to FEATURES in order to bypass the error. If that feature is
enabled but the freebsd python module imported successfully, show a warning
message since the user should remove if from FEATURES asap.

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

pym/emerge/__init__.py

index b09e20537f159024af0c3d0b044cd5477b88b2d8..ca322a8f2de67349e30143501378bea5cad6a1f4 100644 (file)
@@ -6106,6 +6106,43 @@ def validate_ebuild_environment(trees):
                        print >> sys.stderr, bad("\a!!! Is the symlink correct? " + \
                                "Is your portage tree complete?\n")
                        sys.exit(9)
+               if myroot == "/" and \
+                       portage.data.ostype == "FreeBSD":
+                       ignore_missing = "ignore-missing-freebsd-module"
+                       msg = None
+                       die = False
+                       if portage.bsd_chflags is not None and \
+                               ignore_missing in mysettings.features:
+                               msg = \
+                               "Do NOT forget to remove \"%s\" " % ignore_missing + \
+                               "from FEATURES as soon as " + \
+                               "the freebsd python module has been properly " + \
+                               "installed."
+                       elif portage.bsd_chflags is None and \
+                               ignore_missing not in mysettings.features:
+                               die = True
+                               msg = \
+                               "An error occurred while attempting to import the " + \
+                               "freebsd python module. This usually means that " + \
+                               "python has just been upgraded and the py-freebsd " + \
+                               "package has not yet been rebuilt by python-updater. " + \
+                               "The freebsd python module is required for proper " + \
+                               "operation. Please install or rebuild py-freebsd as " + \
+                               "soon as possible. In order to bypass this error, " + \
+                               "add \"%s\" to FEATURES. " % ignore_missing + \
+                               "Do NOT forget to remove it from FEATURES as soon as " + \
+                               "the freebsd python module has been properly " + \
+                               "installed."
+                       if msg:
+                               width = 72 # leave room for the " * " prefix
+                               from textwrap import wrap
+                               for line in wrap(msg, width):
+                                       sys.stderr.write(bad(" * "))
+                                       sys.stderr.write(line)
+                                       sys.stderr.write("\n")
+                               sys.stderr.flush()
+                       if die:
+                               sys.exit(9)
                del myroot, mysettings
 
 def load_emerge_config(trees=None):