| 751 | |
| 752 | _distutils_new_compiler = new_compiler |
| 753 | def new_compiler (plat=None, |
| 754 | compiler=None, |
| 755 | verbose=None, |
| 756 | dry_run=0, |
| 757 | force=0): |
| 758 | # Try first C compilers from numpy.distutils. |
| 759 | if verbose is None: |
| 760 | verbose = log.get_threshold() <= log.INFO |
| 761 | if plat is None: |
| 762 | plat = os.name |
| 763 | try: |
| 764 | if compiler is None: |
| 765 | compiler = get_default_compiler(plat) |
| 766 | (module_name, class_name, long_description) = compiler_class[compiler] |
| 767 | except KeyError: |
| 768 | msg = "don't know how to compile C/C++ code on platform '%s'" % plat |
| 769 | if compiler is not None: |
| 770 | msg = msg + " with '%s' compiler" % compiler |
| 771 | raise DistutilsPlatformError(msg) |
| 772 | module_name = "numpy.distutils." + module_name |
| 773 | try: |
| 774 | __import__ (module_name) |
| 775 | except ImportError as e: |
| 776 | msg = str(e) |
| 777 | log.info('%s in numpy.distutils; trying from distutils', |
| 778 | str(msg)) |
| 779 | module_name = module_name[6:] |
| 780 | try: |
| 781 | __import__(module_name) |
| 782 | except ImportError as e: |
| 783 | msg = str(e) |
| 784 | raise DistutilsModuleError("can't compile C/C++ code: unable to load module '%s'" % \ |
| 785 | module_name) |
| 786 | try: |
| 787 | module = sys.modules[module_name] |
| 788 | klass = vars(module)[class_name] |
| 789 | except KeyError: |
| 790 | raise DistutilsModuleError(("can't compile C/C++ code: unable to find class '%s' " + |
| 791 | "in module '%s'") % (class_name, module_name)) |
| 792 | compiler = klass(None, dry_run, force) |
| 793 | compiler.verbose = verbose |
| 794 | log.debug('new_compiler returns %s' % (klass)) |
| 795 | return compiler |
| 796 | |
| 797 | ccompiler.new_compiler = new_compiler |
| 798 | |