Handle more import exceptions involving xml.
authorZac Medico <zmedico@gentoo.org>
Mon, 4 Jun 2012 21:59:12 +0000 (14:59 -0700)
committerZac Medico <zmedico@gentoo.org>
Mon, 4 Jun 2012 21:59:12 +0000 (14:59 -0700)
See http://bugs.python.org/issue14988

bin/repoman
pym/_emerge/EbuildPhase.py
pym/portage/xml/metadata.py
pym/repoman/herdbase.py

index 052ec94361e8acdb9cbee967b3047c21594b69af..e43fa1cd5427033a6efc3434fa3b18d450a87793 100755 (executable)
@@ -45,7 +45,11 @@ portage.dep._internal_warnings = True
 try:
        import xml.etree.ElementTree
        from xml.parsers.expat import ExpatError
-except (ImportError, SystemError):
+except (SystemExit, KeyboardInterrupt):
+       raise
+except (ImportError, SystemError, RuntimeError, Exception):
+       # broken or missing xml support
+       # http://bugs.python.org/issue14988
        msg = ["Please enable python's \"xml\" USE flag in order to use repoman."]
        from portage.output import EOutput
        out = EOutput()
index 27944f413d55c67a313676508fe9b99388eaf93d..741f6083eff1546b6354c2b6960136cc02f3d3cc 100644 (file)
@@ -12,7 +12,16 @@ from _emerge.MiscFunctionsProcess import MiscFunctionsProcess
 from _emerge.EbuildProcess import EbuildProcess
 from _emerge.CompositeTask import CompositeTask
 from portage.util import writemsg
-from portage.xml.metadata import MetaDataXML
+
+try:
+       from portage.xml.metadata import MetaDataXML
+except (SystemExit, KeyboardInterrupt):
+       raise
+except (ImportError, SystemError, RuntimeError, Exception):
+       # broken or missing xml support
+       # http://bugs.python.org/issue14988
+       MetaDataXML = None
+
 import portage
 portage.proxy.lazyimport.lazyimport(globals(),
        'portage.elog:messages@elog_messages',
@@ -71,7 +80,7 @@ class EbuildPhase(CompositeTask):
                        maint_str = ""
                        upstr_str = ""
                        metadata_xml_path = os.path.join(os.path.dirname(self.settings['EBUILD']), "metadata.xml")
-                       if os.path.isfile(metadata_xml_path):
+                       if MetaDataXML is not None and os.path.isfile(metadata_xml_path):
                                herds_path = os.path.join(self.settings['PORTDIR'],
                                        'metadata/herds.xml')
                                try:
index 25f801a47a505aa1d91aab2f32ef2d71cafedd7b..f820e5414b99323de4ecc48b3fa737fd8d382e45 100644 (file)
@@ -42,12 +42,18 @@ if sys.hexversion < 0x2070000 or \
 else:
        try:
                import xml.etree.cElementTree as etree
-       except (ImportError, SystemError):
+       except (SystemExit, KeyboardInterrupt):
+               raise
+       except (ImportError, SystemError, RuntimeError, Exception):
+               # broken or missing xml support
+               # http://bugs.python.org/issue14988
                import xml.etree.ElementTree as etree
 
 try:
        from xml.parsers.expat import ExpatError
-except (ImportError, SystemError):
+except (SystemExit, KeyboardInterrupt):
+       raise
+except (ImportError, SystemError, RuntimeError, Exception):
        ExpatError = SyntaxError
 
 import re
index 91a32cb00ebe17ad49e5a3c1bf721935224eb5d2..fcf58b36cf05bb559a11825518a347d2a8bde69e 100644 (file)
@@ -7,7 +7,11 @@ import errno
 import xml.etree.ElementTree
 try:
        from xml.parsers.expat import ExpatError
-except (ImportError, SystemError):
+except (SystemExit, KeyboardInterrupt):
+       raise
+except (ImportError, SystemError, RuntimeError, Exception):
+       # broken or missing xml support
+       # http://bugs.python.org/issue14988
        # This means that python is built without xml support.
        # We tolerate global scope import failures for optional
        # modules, so that ImportModulesTestCase can succeed (or