def is_installed(self, environ, version=None, strict=False): options.set_debug(self.debug) self.found = system_uses_macports() if self.found: self.ports_found = os.path.exists(python_executable()) exe_ok = False for exe in python_sys_executables(): if exe.startswith(sys.exec_prefix): exe_ok = True break if self.ports_found and not exe_ok: if self.debug: print(sys.exec_prefix + "/bin/python not in " + \ repr(python_sys_executables())) switch_python() return self.found and self.ports_found
def install(self, environ, version, strict=False, locally=True): if not self.found: website = ('http://gcc.gnu.org',) if 'windows' in platform.system().lower(): if version is None: version = '20120426' website = ('http://sourceforge.net/projects/mingw/', 'files/Installer/mingw-get-inst/mingw-get-inst-' + str(version) + '/') if 'darwin' in platform.system().lower() and system_uses_macports(): raise Exception('GFortran does not appear to be installed.') global_install('GFortran', website, winstaller='mingw-get-inst-' + str(version) + '.exe', brew='gfortran ', #+ os.path.join(here, 'g77.rb'), deb='gfortran', rpm='gcc-gfortran') if not self.is_installed(environ, version, strict): raise Exception('GFortran installation failed.')
def configure_system( prerequisite_list, version, required_python_version="2.4", install=None, quiet=False, sublevel=None, out=sys.stdout, err=sys.stderr, locally=None, download=None, options=dict(), ): """ Given a list of required software and optionally a Python version, verify that python is the proper version and that other required software is installed. Install missing prerequisites that have an installer defined. """ if locally is None: ## parameter value overrides if "locally" in options.keys(): locally = options["locally"] else: locally = True ## default value if install is None: ## parameter value overrides if "install" in options.keys(): install = options["install"] else: install = True ## default value if download is None: ## parameter value overrides if "download" in options.keys(): download = options["download"] else: download = False ## default value if sublevel is None: ## parameter value overrides if "sublevel" in options.keys(): opts.set_top_level(options["sublevel"]) environment = dict() try: environment = read_cache() skip = False for arg in sys.argv: if arg.startswith("clean"): skip = True quiet = True pyver = simplify_version(platform.python_version()) reqver = simplify_version(required_python_version) if pyver < reqver: raise FatalError("Python version >= " + reqver + " is required. " + "You are running version " + pyver) if not quiet: out.write("CONFIGURE ") if len(environment): out.write("(from cache)") out.write("\n") environment["PACKAGE_VERSION"] = version prerequisite_list.insert(0, "httpsproxy_urllib2") if ( "windows" in platform.system().lower() and in_prerequisites("mingw", prerequisite_list) and in_prerequisites("boost", prerequisite_list) and not in_prerequisites("msvcrt", prerequisite_list) ): err.write("WARNING: if you're using the boost-python DLL, " + "also add 'msvcrt' as a prerequisite.\n") if ( "darwin" in platform.system().lower() and not in_prerequisites("macports", prerequisite_list) and not in_prerequisites("homebrew", prerequisite_list) ): if system_uses_macports(): prerequisite_list.insert(0, "macports") elif system_uses_homebrew(): prerequisite_list.insert(0, "homebrew") else: err.write( "WARNING: neither MacPorts nor Homebrew " + "detected. All required libraries will be " + "built locally.\n" ) for help_name in prerequisite_list: if len(help_name) > 0: environment = find_package_config( help_name, __run_helper__, environment, skip, install, quiet, out, err, locally, download ) save_cache(environment) except Exception: # pylint: disable=W0703 logfile = os.path.join(opts.target_build_dir, "config.log") if not os.path.exists(opts.target_build_dir): mkdir(opts.target_build_dir) log = open(logfile, "a") log.write("** Configuration error. **\n" + traceback.format_exc()) log.close() err.write( "Configuration error; see " + logfile + " for details.\n" + "If the build fails, run 'python setup.py dependencies " + "--show'\nand install the listed packages by hand.\n" ) raise return environment