Esempio n. 1
0
def __run_helper__(environment, short_name, long_name, version,
                   skip, install, quiet):
    helper = sys.modules[long_name]
    configured.append(short_name)
    cfg = helper.configuration()
    for dep in cfg.dependencies:
        dep_name = dep
        if not isinstance(dep, basestring):
            dep_name = dep[0]
        if dep_name in configured:
            continue
        environment = __configure_package(environment, dep,
                                          skip, install, quiet)
        util.save_cache(environment)
    if not quiet:
        sys.stdout.write('Checking for ' + short_name + ' ')
        if not version is None:
            sys.stdout.write('v.' + version)
        sys.stdout.write('\n')
        sys.stdout.flush()
    if skip:
        cfg.null()
    elif not cfg.is_installed(environment, version):
        if not install:
            raise Exception(help_name + ' cannot be found.')
        cfg.install(environment, version)
    env = dict(cfg.environment.items() + environment.items())
    util.save_cache(env)  ## intermediate cache
    return env
Esempio n. 2
0
def configure_system(prerequisite_list, version, required_python_version='2.4',
                     install=True, quiet=False):
    '''
    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.
    '''
    environment = util.read_cache()
    skip = False
    for idx, arg in enumerate(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:
        sys.stdout.write('CONFIGURE  ')
        if len(environment):
            sys.stdout.write('(from cache)')
        sys.stdout.write('\n')
    environment['PACKAGE_VERSION'] = version

    prerequisite_list.insert(0, 'httpsproxy_urllib2_py')
    if 'windows' in platform.system().lower() and \
            util.in_prerequisites('mingw', prerequisite_list) and \
            util.in_prerequisites('boost', prerequisite_list) and not \
            util.in_prerequisites('msvcrt', prerequisite_list):
        print "WARNING: if you're using the boost-python DLL, " + \
            "also add 'msvcrt' as a prereuisite."
    if 'darwin' in platform.system().lower() and \
            not util.in_prerequisites('macports', prerequisite_list) and \
            not util.in_prerequisites('homebrew', prerequisite_list):
        if os.path.exists(os.path.join(os.path.sep,
                                       'opt', 'local', 'share', 'macports')):
            prerequisite_list.insert(0, 'macports')
        elif os.path.exists(os.path.join(os.path.sep,
                                         'usr', 'local', 'bin', 'brew')):
            prerequisite_list.insert(0, 'homebrew')
        else:
            print "WARNING: neither MacPorts nor Homebrew detected. " +\
                "All required libraries will be built locally."

    for help_name in prerequisite_list:
        environment = __configure_package(environment, help_name,
                                          skip, install, quiet)
    util.save_cache(environment)

    return environment