示例#1
0
 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
示例#2
0
 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.')
示例#3
0
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