Check type of xml.etree.ElementTree.TreeBuilder before applying
authorArfrever Frehtes Taifersar Arahesis <Arfrever@Apache.Org>
Sat, 12 May 2012 22:30:46 +0000 (00:30 +0200)
committerArfrever Frehtes Taifersar Arahesis <Arfrever@Apache.Org>
Sat, 12 May 2012 22:30:46 +0000 (00:30 +0200)
workaround for http://bugs.python.org/issue14007.

pym/portage/__init__.py

index 6ca0445181e4ea4a17c61362deff203118b9fde6..745e06af752abbbe06f2e9404ec0b91c8d50692c 100644 (file)
@@ -44,10 +44,6 @@ except ImportError as e:
        sys.stderr.write("    "+str(e)+"\n\n");
        raise
 
-if sys.hexversion >= 0x3030000:
-       # Workaround for http://bugs.python.org/issue14007
-       sys.modules["_elementtree"] = None
-
 try:
 
        import portage.proxy.lazyimport
@@ -339,6 +335,16 @@ _python_interpreter = os.path.realpath(sys.executable)
 _bin_path = PORTAGE_BIN_PATH
 _pym_path = PORTAGE_PYM_PATH
 
+if sys.hexversion >= 0x3030000:
+       # Workaround for http://bugs.python.org/issue14007
+       def _test_xml_etree_ElementTree_TreeBuilder_type():
+               import subprocess
+               p = subprocess.Popen([_python_interpreter, "-c",
+                       "import sys, xml.etree.ElementTree; sys.exit(not isinstance(xml.etree.ElementTree.TreeBuilder, type))"])
+               if p.wait() != 0:
+                       sys.modules["_elementtree"] = None
+       _test_xml_etree_ElementTree_TreeBuilder_type()
+
 def _shell_quote(s):
        """
        Quote a string in double-quotes and use backslashes to