Пример #1
0
    def is_installed(self, environ, version=None, strict=False):
        options.set_debug(self.debug)
        try:
            wx_config = os.environ["WX_CONFIG"]
        except KeyError:
            locations = []
            try:
                locations.append(environ["MINGW_DIR"])
                locations.append(environ["MSYS_DIR"])
            except KeyError:
                pass
            try:
                wx_config = find_program("wx-config", locations)
            except ConfigError:
                if self.debug:
                    print(sys.exc_info()[1])
                return self.found
        try:
            cppflags_cmd = [wx_config, "--cppflags"]
            process = subprocess.Popen(cppflags_cmd, stdout=subprocess.PIPE)
            cflags = process.communicate()[0].split()

            ldflags_cmd = [wx_config, "--libs", "--gl-libs", "--static=no"]
            process = subprocess.Popen(ldflags_cmd, stdout=subprocess.PIPE)
            ldflags = process.communicate()[0].split()
            self.found = True
        except OSError:
            if self.debug:
                print(sys.exc_info()[1])
            return self.found

        self.environment["WX_CPP_FLAGS"] = cflags
        self.environment["WX_LD_FLAGS"] = ldflags
        return self.found
Пример #2
0
    def is_installed(self, environ, version=None, strict=False):
        options.set_debug(self.debug)
        lib_name = 'cdf'
        if 'windows' in platform.system().lower():
            lib_name += 'NativeLibrary'
        if version is None:
            version = '35_0'

        limit = False
        base_dirs = []
        if 'CDF_BASE' in environ and environ['CDF_BASE']:
            base_dirs.append(environ['CDF_BASE'])
            limit = True
        if 'CDF_LIB' in environ and environ['CDF_LIB']:
            base_dirs.append(environ['CDF_LIB'])
            limit = True
        if 'CDF_INC' in environ and environ['CDF_INC']:
            base_dirs.append(environ['CDF_INC'])
            limit = True
        if 'CDF_BIN' in environ and environ['CDF_BIN']:
            base_dirs.append(environ['CDF_BIN'])
            limit = True
        if 'CDF_LIB_DIR' in environ and environ['CDF_LIB_DIR']:
            base_dirs.append(environ['CDF_LIB_DIR'])
            limit = True
            if 'CDF_INCLUDE_DIR' in environ and environ['CDF_INCLUDE_DIR']:
                base_dirs.append(environ['CDF_INCLUDE_DIR'])

        if not limit:
            try:
                base_dirs += os.environ['LD_LIBRARY_PATH'].split(os.pathsep)
                base_dirs += os.environ['CPATH'].split(os.pathsep)
            except KeyError:
                pass
            if 'windows' in platform.system().lower():
                base_dirs.append(os.path.join('C:', os.sep, 'CDF Distribution',
                                              'cdf' + version + '-dist'))
            try:
                base_dirs.append(environ['MINGW_DIR'])
                base_dirs.append(environ['MSYS_DIR'])
            except KeyError:
                pass
        try:
            incl_dir = find_header(self.hdr, base_dirs, limit=limit)
            lib_dir, lib = find_library(self.lib, base_dirs, limit=limit)
            exe = find_program('cdfcompare',  base_dirs)
            self.found = True
        except ConfigError:
            if self.debug:
                print(sys.exc_info()[1])
            return self.found

        self.environment['CDF_INCLUDE_DIR'] = incl_dir
        self.environment['CDF_LIB_DIR'] = lib_dir
        self.environment['CDF_LIB_FILES'] = [lib]
        self.environment['CDF_LIBRARIES'] = [lib_name]
        os.environ['CDF_LIB'] = os.path.abspath(lib_dir)
        os.environ['CDF_INC'] = os.path.abspath(incl_dir)
        os.environ['CDF_BIN'] = os.path.abspath(os.path.dirname(exe))
        return self.found
Пример #3
0
    def is_installed(self, environ, version=None, strict=False):
        options.set_debug(self.debug)
        try:
            locations = glob.glob(os.path.join('C:' + os.sep + 'OpenSCG',
                                               'openjdk*'))
            java_runtime = find_program('java', locations)
            java_compiler = find_program('javac', locations)
            jar_archiver = find_program('jar', locations)

            if not self.__check_java_version(java_runtime, [version]):
                return self.found
            classpaths = []
            try:
                _sep_ = ':'
                if 'windows' in platform.system().lower():
                    _sep_ = ';'
                pathlist = os.environ['CLASSPATH'].split(_sep_)
                for path in pathlist:
                    classpaths.append(path)
            except KeyError:
                pass
            self.found = True
        except ConfigError:
            if self.debug:
                print(sys.exc_info()[1])
            return self.found

        self.environment['JAVA'] = java_runtime
        self.environment['JAVA_HOME'] = os.path.abspath(os.path.join(
                os.path.dirname(java_runtime), '..'))
        self.environment['JAVAC'] = java_compiler
        self.environment['JAR'] = jar_archiver
        self.environment['CLASSPATH'] = classpaths
        return self.found
Пример #4
0
    def is_installed(self, environ, version=None, strict=False):
        options.set_debug(self.debug)
        try:
            ver, hdf5_inc_dir, \
                hdf5_lib_dir, hdf5_libs = self.get_version(environ)
            not_ok = (compare_versions(ver, version) == -1)
            if strict:
                not_ok = (compare_versions(ver, version) != 0)
            if not_ok:
                if self.debug:
                    print('Wrong version of ' + self.lib + ': ' +
                          str(ver) + ' vs ' + str(version))
                self.found = False
                return self.found
            self.found = True
        except ConfigError:
            if self.debug:
                print(sys.exc_info()[1])
            return self.found

        hdf5_lib_list = ['hdf5', 'hdf5_fortran', 'hdf5_cpp',
                         'hdf5_hl', 'hdf5hl_fortran', 'hdf5_hl_cpp',]
        if 'windows' in platform.system().lower():
            hdf5_lib_list = ['hdf5dll', 'hdf5_fortrandll', 'hdf5_cppdll',
                             'hdf5_hldll', 'hdf5_hl_fortrandll', 'hdf5_hl_cppdll',]
        self.environment['HDF5_INCLUDE_DIR'] = hdf5_inc_dir
        self.environment['HDF5_LIB_DIR'] = hdf5_lib_dir
        self.environment['HDF5_LIB_FILES'] = hdf5_libs
        self.environment['HDF5_LIBRARIES'] = hdf5_lib_list
        return self.found
Пример #5
0
 def is_installed(self, environ, version=None, strict=False):
     options.set_debug(self.debug)
     try:
         pyjamas_root = os.environ['PYJAMAS_ROOT']
         pyjs_bin = os.path.join(pyjamas_root, 'bin')
         #pyjs_lib = os.path.join(pyjamas_root, 'build', 'lib')
         self.environment['PYJSBUILD'] = find_program('pyjsbuild',
                                                      [pyjs_bin])
         self.found = True
     except (KeyError, ConfigError, ImportError):
         if self.debug:
             print(sys.exc_info()[1])
         try:
             local = glob.glob(os.path.join(options.target_build_dir,
                                            'pyjamas-*'))
             local_bins = []
             if len(local):
                 local_bins.append(os.path.join(local[0], 'bin'))
             self.environment['PYJSBUILD'] = find_program('pyjsbuild',
                                                          local_bins)
             self.found = True
         except (ImportError, ConfigError):
             if self.debug:
                 print(sys.exc_info()[1])
     return self.found
Пример #6
0
    def is_installed(self, environ, version=None, strict=False):
        options.set_debug(self.debug)
        limit = False
        locations = []
        if self.exe.upper() in environ and environ[self.exe.upper()]:
            locations.append(os.path.dirname(environ[self.exe.upper()]))
            limit = True

        if not limit:
            try:
                locations.append(os.environ[self.exe.upper() + '_ROOT'])
            except KeyError:
                pass
            try:
                locations.append(environ['MINGW_DIR'])
                locations.append(environ['MSYS_DIR'])
            except KeyError:
                pass

        try:
            program = find_program(self.exe, locations, limit=limit)
            self.found = True
        except ConfigError:
            if self.debug:
                print(sys.exc_info()[1])
            return self.found

        self.environment[self.exe.upper()] = program
        return self.found
Пример #7
0
 def is_installed(self, environ, version=None, strict=False):
     options.set_debug(self.debug)
     self.found = system_uses_homebrew()
     if self.found:
         self.brews_found = os.path.exists(python_executable()) and \
             os.path.exists(pip_executable())
         exe = os.path.realpath(sys.executable)
         if self.brews_found and \
                 not exe in python_sys_executables():
             switch_python()
     return self.found and self.brews_found
Пример #8
0
 def is_installed(self, environ, version=None, strict=False):
     options.set_debug(self.debug)
     try:
         gomp_lib_dir, gomp_lib  = find_library('gomp')
         self.environment['GOMP_LIBRARY_DIR'] = gomp_lib_dir
         self.environment['GOMP_LIBRARY'] = gomp_lib
         self.found = True
     except ConfigError:
         if self.debug:
             print(sys.exc_info()[1])
     return self.found
Пример #9
0
 def is_installed(self, environ, version=None, strict=False):
     options.set_debug(self.debug)
     try:
         incl_dir = find_header("f2c.h")
         ## f2c lib is built into libgfortran
         self.found = True
     except ConfigError:
         if self.debug:
             print(sys.exc_info()[1])
         return self.found
     self.environment["F2C_INCLUDE_DIR"] = incl_dir
     return self.found
Пример #10
0
 def is_installed(self, environ, version=None, strict=False):
     options.set_debug(self.debug)
     if version is None:
         version = '1.9.4'
     try:
         local_dir = os.path.join(options.target_build_dir, 'neo4j-*', 'bin')
         self.environment['NEO4J'] = find_program('neo4j', [local_dir])
         self.found = True
     except ConfigError:
         if self.debug:
             print(sys.exc_info()[1])
     return self.found
Пример #11
0
    def is_installed(self, environ, version=None, strict=False):
        options.set_debug(self.debug)
        locations = []
        limit = False
        if 'GEOS_LIB_DIR' in environ and environ['GEOS_LIB_DIR']:
            locations.append(environ['GEOS_LIB_DIR'])
            limit = True
            if 'GEOS_INCLUDE_DIR' in environ and environ['GEOS_INCLUDE_DIR']:
                locations.append(environ['GEOS_INCLUDE_DIR'])

        if not limit:
            try:
                locations += os.environ['LD_LIBRARY_PATH'].split(os.pathsep)
            except KeyError:
                pass
            try:
                locations.append(os.environ['GEOS_ROOT'])
            except KeyError:
                pass
            if 'windows' in platform.system().lower():
                locations.append(os.path.join('C:', os.sep, 'OSGeo4W'))
            try:
                locations.append(environ['MINGW_DIR'])
                locations.append(environ['MSYS_DIR'])
            except KeyError:
                pass
        try:
            lib_dir, libs  = find_libraries(self.lib, locations, limit=limit)
            inc_dir = find_header(self.hdr, locations, limit=limit)
            quoted_ver = get_header_version(os.path.join(inc_dir, self.hdr),
                                            'GEOS_VERSION ')
            ver = quoted_ver[1:-1]
            not_ok = (compare_versions(ver, version) == -1)
            if strict:
                not_ok = (compare_versions(ver, version) != 0)
            if not_ok:
                if self.debug:
                    print('Wrong version of ' + self.lib + ': ' +
                          str(ver) + ' vs ' + str(version))
                return self.found
            self.found = True
        except ConfigError:
            if self.debug:
                e = sys.exc_info()[1]
                print(e)
            return self.found

        self.environment['GEOS_INCLUDE_DIR'] = inc_dir
        self.environment['GEOS_LIBRARY_DIR'] = lib_dir
        self.environment['GEOS_LIBRARIES'] = ['geos', ' geos_c',]
        self.environment['GEOS_LIB_FILES'] = libs
        return self.found
Пример #12
0
 def is_installed(self, environ, version=None, strict=False):
     options.set_debug(self.debug)
     prev = prog_config.is_installed(self, environ, version, strict)
     if prev:
         locations = [os.path.dirname(self.environment[self.exe.upper()])]
         try:
             program = find_program('npm', locations, limit=True)
             self.environment['NPM'] = program
         except ConfigError:
             if self.debug:
                 print(sys.exc_info()[1])
             return False
     return prev
Пример #13
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
Пример #14
0
    def is_installed(self, environ, version=None, strict=False):
        options.set_debug(self.debug)
        base_dirs = []
        limit = False
        if 'GRAPHVIZ_LIB_DIR' in environ and \
                environ['GRAPHVIZ_LIB_DIR']:
            base_dirs.append(environ['GRAPHVIZ_LIB_DIR'])
            limit = True
            if 'GRAPHVIZ_INCLUDE_DIR' in environ and \
                    environ['GRAPHVIZ_INCLUDE_DIR']:
                base_dirs.append(environ['GRAPHVIZ_INCLUDE_DIR'])

        if not limit:
            try:
                base_dirs += os.environ['LD_LIBRARY_PATH'].split(os.pathsep)
                base_dirs += os.environ['CPATH'].split(os.pathsep)
            except KeyError:
                pass
            try:
                base_dirs.append(os.environ['GRAPHVIZ_ROOT'])
            except KeyError:
                pass
            for d in programfiles_directories():
                base_dirs.append(os.path.join(d, 'GnuWin32'))
                base_dirs += glob_insensitive(d, self.lib + '*')
            try:
                base_dirs.append(environ['MINGW_DIR'])
                base_dirs.append(environ['MSYS_DIR'])
            except KeyError:
                pass
        try:
            incl_dir = find_header(self.hdr, base_dirs, limit=limit)
            lib_dir, lib = find_library(self.lib, base_dirs, limit=limit)
            self.found = True
        except ConfigError:
            if self.debug:
                e = sys.exc_info()[1]
                print(e)
            return self.found

        self.environment['GRAPHVIZ_INCLUDE_DIR'] = incl_dir
        self.environment['GRAPHVIZ_LIB_DIR'] = lib_dir
        self.environment['GRAPHVIZ_SHLIB_DIR'] = lib_dir
        self.environment['GRAPHVIZ_LIB_FILES'] = [lib]
        self.environment['GRAPHVIZ_LIBRARIES'] = [self.lib]
        return self.found
Пример #15
0
    def is_installed(self, environ, version=None, strict=False):
        options.set_debug(self.debug)
        if 'MSVC' in environ:
            raise Exception('MinGW *and* MS Visual C both specified ' +
                            'as the chosen compiler.')
        limit = False
        if 'MINGW_DIR' in environ and environ['MINGW_DIR']:
            mingw_root = environ['MINGW_DIR']
            limit = True

        if not limit:
            try:
                mingw_root = os.environ['MINGW_ROOT']
            except KeyError:
                locations = [os.path.join('C:', os.sep, 'MinGW')]
                for d in programfiles_directories():
                    locations.append(os.path.join(d, 'MinGW'))
                try:
                    gcc = find_program('mingw32-gcc', locations)
                    mingw_root = os.path.abspath(os.path.join(
                            os.path.dirname(gcc), '..'))
                except ConfigError:
                    if self.debug:
                        print(sys.exc_info[1])
                    return self.found

        msys_root = os.path.join(mingw_root, 'msys', '1.0')
        try:
            
            gcc = find_program('mingw32-gcc', [mingw_root], limit=limit)
            gxx = find_program('mingw32-g++', [mingw_root], limit=limit)
            gfort = find_program('mingw32-gfortran', [mingw_root], limit=limit)
            self.found = True
        except ConfigError:
            if self.debug:
                print(sys.exc_info()[1])
            return self.found

        self.environment['MINGW_DIR']     = mingw_root
        self.environment['MSYS_DIR']      = msys_root
        self.environment['MINGW_CC']      = gcc
        self.environment['MINGW_CXX']     = gxx
        self.environment['MINGW_FORTRAN'] = gfort
        return self.found
Пример #16
0
 def is_installed(self, environ, version=None, strict=False):
     options.set_debug(self.debug)
     try:
         import wxglade.common
         ver = wxglade.common.version
         not_ok = (compare_versions(ver, version) == -1)
         if strict:
             not_ok = (compare_versions(ver, version) != 0)
         if not_ok:
             if self.debug:
                 print('Wrong version of wxGlade: ' +
                       str(ver) + ' vs ' + str(version))
             return self.found
         self.environment['WXGLADE'] = find_program('wxglade')
         self.found = True
     except (ImportError, ConfigError):
         if self.debug:
             print(sys.exc_info()[1])
     return self.found
Пример #17
0
    def is_installed(self, environ, version=None, strict=False):
        if version is None:
            version = '3.1.2'
        options.set_debug(self.debug)
        limit = False
        antlr_root = None
        if 'ANTLR' in environ and environ['ANTLR']:
            antlr_root = environ['ANTLR']
            limit = True

        classpaths = []
        if not limit:
            try:
                pathlist = environ['CLASSPATH'] ## from java config
                for path in pathlist:
                    classpaths.append(os.path.dirname(path))
            except KeyError:
                pass
            try:
                antlr_root = os.environ['ANTLR_ROOT']
            except KeyError:
                pass
            for d in programfiles_directories():
                classpaths.append(os.path.join(d, 'ANTLR', 'lib'))

        try:
            java_home = None
            if 'JAVA_HOME' in environ.keys():
                java_home = os.path.join(environ['JAVA_HOME'], 'lib')
            jarfile = find_file('antlr*' + version[0] + '*.jar',
                                ['/usr/share/java', '/usr/local/share/java',
                                 '/opt/local/share/java', java_home,
                                 antlr_root,] + classpaths)
            self.environment['ANTLR'] = [environ['JAVA'],
                                         "-classpath", os.path.abspath(jarfile),
                                         "org.antlr.Tool",]
            self.found = True
        except ConfigError:
            if self.debug:
                print(sys.exc_info()[1])
        return self.found
Пример #18
0
    def is_installed(self, environ, version=None, strict=False):
        options.set_debug(self.debug)
        limit = False
        locations = []
        if 'CTYPESGEN' in environ and environ['CTYPESGEN']:
            locations.append(os.path.dirname(environ['CTYPESGEN']))
            limit = True

        try:
            exe = find_program('ctypesgen.py', locations, limit=limit)
            import ctypesgencore
            lib = os.path.dirname(os.path.dirname(ctypesgencore.__file__))
            self.found = True
        except (ConfigError, ImportError):
            if self.debug:
                print(sys.exc_info()[1])
            return self.found

        self.environment['CTYPESGEN'] = exe
        self.environment['CTYPESGEN_PATH'] = lib
        return self.found
Пример #19
0
    def is_installed(self, environ, version=None, strict=False):
        options.set_debug(self.debug)
        base_dirs = []
        if 'GIT' in environ and environ['GIT']:
            base_dirs.append(os.path.dirname(environ['GIT']))

        base_dirs.append(os.path.join('C:',  os.sep, 'msysgit', 'cmd'))
        for d in programfiles_directories():
            base_dirs.append(os.path.join(d, 'Git', 'cmd'))
        try:
            base_dirs.append(environ['MINGW_DIR'])
            base_dirs.append(environ['MSYS_DIR'])
        except KeyError:
            pass
        try:
            self.environment['GIT'] = find_program('git', base_dirs)
            self.found = True
        except ConfigError:
            if self.debug:
                print(sys.exc_info()[1])
        return self.found
Пример #20
0
    def is_installed(self, environ, version=None, strict=False):
        options.set_debug(self.debug)
        base_dirs = []
        limit = False
        if 'PROJ4_LIB_DIR' in environ and environ['PROJ4_LIB_DIR']:
            base_dirs.append(environ['PROJ4_LIB_DIR'])
            limit = True
            if 'PROJ4_INCLUDE_DIR' in environ and environ['PROJ4_INCLUDE_DIR']:
                base_dirs.append(environ['PROJ4_INCLUDE_DIR'])

        if not limit:
            try:
                base_dirs += os.environ['LD_LIBRARY_PATH'].split(os.pathsep)
            except KeyError:
                pass
            try:
                base_dirs.append(os.environ['PROJ4_ROOT'])
            except KeyError:
                pass
            if 'windows' in platform.system().lower():
                base_dirs.append(os.path.join('C:', os.sep, 'OSGeo4W'))
            try:
                base_dirs.append(environ['MINGW_DIR'])
                base_dirs.append(environ['MSYS_DIR'])
            except KeyError:
                pass
        try:
            proj4_inc_dir = find_header(self.hdr, base_dirs)
            proj4_lib_dir, proj4_libs  = find_libraries(self.lib, base_dirs)
            self.found = True
        except ConfigError:
            if self.debug:
                print(sys.exc_info()[1])
            return self.found

        self.environment['PROJ4_INCLUDE_DIR'] = proj4_inc_dir
        self.environment['PROJ4_LIBRARY_DIR'] = proj4_lib_dir
        self.environment['PROJ4_LIBRARIES'] = ['proj']
        self.environment['PROJ4_LIB_FILES'] = proj4_libs
        return self.found
Пример #21
0
    def is_installed(self, environ, version=None, strict=False):
        options.set_debug(self.debug)
        try:
            import matplotlib
            ver = matplotlib.__version__
            not_ok = (compare_versions(ver, version) == -1)
            if strict:
                not_ok = (compare_versions(ver, version) != 0)
            if not_ok:
                if self.debug:
                    print('Wrong version of ' + self.pkg + ': ' +
                          str(ver) + ' vs ' + str(version))
                return self.found
            self.found = True
        except ImportError:
            if self.debug:
                print(sys.exc_info()[1])
            return self.found

        self.environment['MATPLOTLIB_DATA_FILES'] = \
            matplotlib.get_py2exe_datafiles()
        return self.found
Пример #22
0
    def is_installed(self, environ, version=None, strict=False):
        options.set_debug(self.debug)

        base_dirs = []
        limit = False
        if 'DL_LIB_DIR' in environ and environ['DL_LIB_DIR']:
            base_dirs.append(environ['DL_LIB_DIR'])
            limit = True
            if 'DL_INCLUDE_DIR' in environ and environ['DL_INCLUDE_DIR']:
                base_dirs.append(environ['DL_INCLUDE_DIR'])

        if not limit:
            try:
                base_dirs += os.environ['LD_LIBRARY_PATH'].split(os.pathsep)
                base_dirs += os.environ['CPATH'].split(os.pathsep)
            except KeyError:
                pass
            try:
                base_dirs.append(environ['MINGW_DIR'])
                base_dirs.append(environ['MSYS_DIR'])
            except KeyError:
                pass
        try:
            incl_dir = find_header(self.hdr, base_dirs, limit=limit)
            lib_dir, lib = find_library(self.lib, base_dirs,
                                        limit=limit, wildcard=False)
            self.found = True
        except ConfigError:
            if self.debug:
                e = sys.exc_info()[1]
                print(e)
            return self.found

        self.environment['DL_INCLUDE_DIR'] = incl_dir
        self.environment['DL_LIB_DIR'] = lib_dir
        self.environment['DL_SHLIB_DIR'] = lib_dir
        self.environment['DL_LIB_FILES'] = [lib]
        self.environment['DL_LIBRARIES'] = [self.lib]
        return self.found
Пример #23
0
    def is_installed(self, environ, version, strict=False):
        options.set_debug(self.debug)
        if 'MINGW_CC' in environ:
            raise Exception('MS Visual C *and* MinGW both specified ' +
                            'as the chosen compiler.')

        version, _, _ = get_msvc_version()
        dot_ver = '.'.join(version)

        vcvars = None
        nmake = None
        msvc = None

        msvc_dirs = []
        limit = False
        if 'MSVC' in environ and environ['MSVC']:
            msvc_dirs.append(os.path.dirname(environ['MSVC']))
            limit = True

        if not limit:
            for d in programfiles_directories():
                msvc_dirs.append(os.path.join(d,
                                              'Microsoft Visual Studio ' + dot_ver,
                                              'VC'))
        try:
            vcvars = find_program('vcvarsall', msvc_dirs, limit=limit)
            nmake = find_program('nmake', msvc_dirs, limit=limit)
            msvc = find_program('cl', msvc_dirs, limit=limit)
            self.found = True
        except ConfigError:
            if self.debug:
                print(sys.exc_info()[1])
            return self.found

        self.environment['MSVC_VARS'] = vcvars
        self.environment['NMAKE'] = nmake
        self.environment['MSVC'] = msvc
        return self.found
Пример #24
0
    def is_installed(self, environ, version=None, strict=False):
        options.set_debug(self.debug)
        limit = False
        base_dirs = []
        if 'GCCXML' in environ and environ['GCCXML']:
            base_dirs.append(os.path.dirname(environ['GCCXML']))
            limit = True

        if not limit:
            for d in programfiles_directories():
                base_dirs.append(os.path.join(d, 'GCC_XML'))
            try:
                base_dirs.append(environ['MINGW_DIR'])
                base_dirs.append(environ['MSYS_DIR'])
            except KeyError:
                pass
        try:
            self.environment['GCCXML'] = find_program('gccxml', base_dirs,
                                                      limit=limit)
            self.found = True
        except ConfigError:
            if self.debug:
                print(sys.exc_info()[1])
        return self.found
Пример #25
0
    def is_installed(self, environ, version=None, strict=False):
        options.set_debug(self.debug)
        msvcr_rel_dirs = []
        msvcr_dbg_dirs = []
        limit = False
        if 'MSVCRT_DIR' in environ and environ['MSVCRT_DIR']:
            msvcr_rel_dirs.append(environ['MSVCRT_DIR'])
            limit = True
            if 'MSVCRT_DEBUG_DIR' in environ and environ['MSVCRT_DEBUG_DIR']:
                msvcr_dbg_dirs.append(environ['MSVCRT_DEBUG_DIR'])

        version, _, _ = get_msvc_version()
        dot_ver = '.'.join(version)
        ver = ''.join(version)

        msvs_present = False
        if not limit:
            for d in programfiles_directories():
                msvcr_rel_dirs.append(
                    os.path.join(d, 'Microsoft Visual Studio ' + dot_ver,
                                 'VC', 'redist', 'x86',
                                 'Microsoft.VC' + ver + '.CRT'))
                msvcr_dbg_dirs.append(
                    os.path.join(d, 'Microsoft Visual Studio ' + dot_ver,
                                 'VC', 'redist', 'Debug_NonRedist', 'x86',
                                 'Microsoft.VC' + ver + '.DebugCRT'))
                if os.path.exists(
                    os.path.join(d, 'Microsoft Visual Studio ' + dot_ver)):
                    msvs_present = True

            if not msvs_present:
                try:
                    msvcr_rel_dirs.append(os.environ['MSVCRT_DIR'])
                except KeyError:
                    pass
                try:
                    msvcr_rel_dirs.append(os.environ['SYSTEM'])
                except KeyError:
                    pass
                try:
                    msvcr_rel_dirs.append(os.environ['WINDIR'])
                except KeyError:
                    pass
        release_dir = None
        debug_dir = None
        try:
            # Just the DLLs
            release_dir, _ = find_library('msvcr' + ver, msvcr_rel_dirs,
                                          limit=limit)
            if msvs_present:
                debug_dir, _ = find_library('msvcr' + ver, msvcr_dbg_dirs,
                                            limit=limit)
            self.found = True
        except ConfigError:
            if self.debug:
                print(sys.exc_info()[1])
            return self.found

        self.environment['MSVCRT_DIR'] = release_dir
        if msvs_present:
            self.environment['MSVCRT_DEBUG_DIR'] = debug_dir
        self.environment['MSVCRT_LIBRARIES'] = ['msvcr' + ver, 'msvcp' + ver]
        return self.found
Пример #26
0
    def is_installed(self, environ, version=None, strict=False):
        if version is None:
            ver = '5'
        else:
            ver = version.split('.')[0]

        options.set_debug(self.debug)
        lib_ver = ''
        base_dirs = []
        limit = False
        if 'PERL_LIB_DIR' in environ and environ['PERL_LIB_DIR']:
            base_dirs.append(environ['PERL_LIB_DIR'])
            limit = True
            if 'PERL_INCLUDE_DIR' in environ and environ['PERL_INCLUDE_DIR']:
                base_dirs.append(environ['PERL_INCLUDE_DIR'])

        if not limit:
            try:
                base_dirs += os.environ['LD_LIBRARY_PATH'].split(os.pathsep)
                base_dirs += os.environ['CPATH'].split(os.pathsep)
            except KeyError:
                pass
            try:
                base_dirs.append(os.environ['PERL_CORE'])
            except KeyError:
                pass
            try:
                base_dirs.append(os.environ['PERL_ROOT'])
            except KeyError:
                pass
            if 'windows' in platform.system().lower():
                ## Strawberry Perl from http://strawberryperl.com
                base_dirs.append(os.path.join('C:', os.sep,
                                              'strawberry', 'perl'))
                try:
                    base_dirs.append(environ['MSYS_DIR'])  ## msys includes perl
                except KeyError:
                    pass
            elif 'darwin' in platform.system().lower():
                base_dirs.append(os.path.join('/', 'System', 'Library', 'Perl',
                                              ver + '*', 'darwin-*'))

        try:
            perl_exe = find_program('perl', base_dirs)
            incl_dir = find_header(self.hdr, base_dirs,
                                   ['CORE', os.path.join('lib', 'CORE'),
                                    os.path.join('perl', 'CORE'),
                                    os.path.join('perl' + ver, 'CORE'),
                                    os.path.join('lib', 'perl' + ver,
                                                 ver + '.*', 'msys', 'CORE'),
                                    ])
            lib_dir, perl_lib  = find_library(self.lib, base_dirs,
                                              [os.path.join('perl', 'bin'),
                                               incl_dir,])
            if 'windows' in platform.system().lower():
                lib_ver = perl_lib[0].split('.')[0].split('perl')[1]
            self.found = True
        except ConfigError:
            if self.debug:
                print(sys.exc_info()[1])
            return self.found

        self.environment['PERL'] = perl_exe
        self.environment['PERL_INCLUDE_DIR'] = incl_dir
        self.environment['PERL_LIB_DIR'] = lib_dir
        self.environment['PERL_LIBRARIES'] = ['perl' + lib_ver]
        self.environment['PERL_LIB_FILES'] = [perl_lib]
        return self.found
Пример #27
0
    def is_installed(self, environ, version=None, strict=False):
        options.set_debug(self.debug)
        openmpi_lib_list = ['mpi', 'mpi_cxx', 'mpi_f90']
        arch = 'i686'
        if struct.calcsize('P') == 8:
            arch = 'x86_64'

        base_dirs = []
        limit = False
        if 'OPENMPI_LIB_DIR' in environ and environ['OPENMPI_LIB_DIR']:
            base_dirs.append(environ['OPENMPI_LIB_DIR'])
            limit = True
            if 'OPENMPI_INCLUDE_DIR' in environ and environ['OPENMPI_INCLUDE_DIR']:
                base_dirs.append(environ['OPENMPI_INCLUDE_DIR'])

        if not limit:
            try:
                base_dirs += os.environ['LD_LIBRARY_PATH'].split(os.pathsep)
                base_dirs += os.environ['CPATH'].split(os.pathsep)
            except KeyError:
                pass
            try:
                base_dirs.append(os.environ['OPENMPI_ROOT'])
            except KeyError:
                pass
            for d in programfiles_directories():
                base_dirs.append(os.path.join(d, 'OPENMPI'))
            try:
                base_dirs.append(environ['MINGW_DIR'])
                base_dirs.append(environ['MSYS_DIR'])
            except KeyError:
                pass

        try:
            subdirs = [os.path.join('openmpi', 'lib')]
            openmpi_lib_dir, openmpi_libs  = find_libraries(openmpi_lib_list[0],
                                                            base_dirs, subdirs)
            openmpi_inc_dir = find_header(self.hdr, base_dirs,
                                          ['openmpi', 'openmpi-' + arch,])
            openmpi_exe = find_program('mpicc', base_dirs +
                                       [os.path.join(openmpi_lib_dir, '..')])
            openmpi_exe_dir = os.path.abspath(os.path.dirname(openmpi_exe))
            self.found = True
        except ConfigError:
            if self.debug:
                print(sys.exc_info()[1])
            return self.found

        os.environ['PATH'] = os.environ.get('PATH', '') + \
                             os.pathsep + openmpi_exe_dir
        self.environment['OPENMPI_PATH'] = openmpi_exe_dir
        self.environment['OPENMPI_INCLUDE_DIR'] = openmpi_inc_dir
        self.environment['OPENMPI_LIB_DIR'] = openmpi_lib_dir
        self.environment['OPENMPI_LIBRARIES'] = openmpi_lib_list
        self.environment['OPENMPI_LIB_FILES'] = openmpi_libs
        try:
            p = subprocess.Popen([openmpi_exe, '-show'],
                                 stdout=subprocess.PIPE, stderr=subprocess.PIPE)
            out, err = p.communicate()
            if err != '':
                self.found = False
                return self.found
            self.environment['OPENMPI_FLAGS'] = out.split()[1:]
        except OSError:
            self.found = False
        return self.found
Пример #28
0
    def is_installed(self, environ, version=None, strict=False):
        if version is None:
            required_version = "1_44_0"
        else:
            required_version = version.replace(".", "_")

        # TODO not detecting if boost installed

        options.set_debug(self.debug)
        base_dirs = []
        limit = False
        if "BOOST_LIB_DIR" in environ and environ["BOOST_LIB_DIR"]:
            base_dirs.append(environ["BOOST_LIB_DIR"])
            limit = True
            if "BOOST_INCLUDE_DIR" in environ and environ["BOOST_INCLUDE_DIR"]:
                base_dirs.append(environ["BOOST_INCLUDE_DIR"])

        if not limit:
            try:
                base_dirs += os.environ["LD_LIBRARY_PATH"].split(os.pathsep)
                base_dirs += os.environ["CPATH"].split(os.pathsep)
            except KeyError:
                pass
            try:
                boost_root = os.environ["BOOST_ROOT"]
                boost_root = boost_root.strip('"')
                if os.path.exists(os.path.join(boost_root, "stage", "lib")):
                    base_dirs.append(os.path.join(boost_root, "stage"))
                base_dirs.append(boost_root)
            except KeyError:
                pass
            try:
                base_dirs.append(os.environ["BOOST_LIBRARY_DIR"])
            except KeyError:
                pass
            try:
                base_dirs.append(environ["MINGW_DIR"])
                base_dirs.append(environ["MSYS_DIR"])
            except KeyError:
                pass
        try:
            incl_dir = find_header(os.path.join("boost", "version.hpp"), base_dirs, ["boost-*"], limit=limit)
            lib_dir, libs = find_libraries("boost", base_dirs, limit=limit)
            # TODO boost lib_dir is wrong in windows (maybe)
            boost_version = get_header_version(os.path.join(incl_dir, "boost", "version.hpp"), "BOOST_LIB_VERSION")
            boost_version = boost_version.strip('"')
            not_ok = compare_versions(boost_version, required_version) == -1
            if strict:
                not_ok = compare_versions(boost_version, required_version) != 0
            if not_ok:
                if self.debug:
                    print("Wrong version of Boost: " + str(boost_version) + " vs " + str(required_version))
                return self.found
            self.found = True
        except ConfigError:
            if self.debug:
                print(sys.exc_info()[1])
            return self.found

        self.environment["BOOST_INCLUDE_DIR"] = incl_dir
        self.environment["BOOST_LIB_DIR"] = lib_dir
        self.environment["BOOST_LIB_FILES"] = libs
        self.environment["BOOST_LIBRARIES"] = [
            "boost_python",
            "boost_date_time",
            "boost_filesystem",
            "boost_graph",
            "boost_iostreams",
            "boost_prg_exec_monitor",
            "boost_program_options",
            "boost_regex",
            "boost_serialization",
            "boost_signals",
            "boost_system",
            "boost_thread",
            "boost_unit_test_framework",
            "boost_wave",
            "boost_wserialization",
        ]
        return self.found
Пример #29
0
    def is_installed(self, environ, version=None, strict=False):
        options.set_debug(self.debug)
        default_lib_paths = ['lib64', 'lib', '']
        default_include_paths = ['include', os.path.join(self.lib, 'include')]

        locations = [os.path.join(options.target_build_dir, d)
                     for d in default_include_paths + default_lib_paths]
        limit = False
        if self.lib.upper() + '_SHLIB_DIR' in environ and \
                environ[self.lib.upper() + '_SHLIB_DIR']:
            locations.append(environ[self.lib.upper() + '_SHLIB_DIR'])
        if self.lib.upper() + '_LIB_DIR' in environ and \
                environ[self.lib.upper() + '_LIB_DIR']:
            locations.append(environ[self.lib.upper() + '_LIB_DIR'])
            if self.lib.upper() + '_INCLUDE_DIR' in environ and \
                    environ[self.lib.upper() + '_INCLUDE_DIR']:
                locations.append(environ[self.lib.upper() + '_INCLUDE_DIR'])
                limit = True

        if not limit:
            try:
                locations += os.environ['LD_LIBRARY_PATH'].split(os.pathsep)
                locations += os.environ['LIBRARY_PATH'].split(os.pathsep)
                locations += os.environ['CPATH'].split(os.pathsep)
            except KeyError:
                pass
            try:
                locations.append(os.environ[self.lib.upper() + '_ROOT'])
            except KeyError:
                pass
            try:
                locations.append(os.environ[self.lib.upper() + '_LIBRARY_DIR'])
            except KeyError:
                pass
            for d in programfiles_directories():
                locations.append(os.path.join(d, 'GnuWin32'))
                locations += glob_insensitive(d, self.lib + '*')
            try:
                locations.append(environ['MINGW_DIR'])
                locations.append(environ['MSYS_DIR'])
            except KeyError:
                pass
        try:
            if self.hdr:
                subdirs = None
                if self.hdr_dir:
                    subdirs = [self.hdr_dir]
                incl_dir = find_header(self.hdr, locations, subdirs,
                                       limit=limit)
                default_lib_paths = ['lib64', 'lib', '']
                for lib in default_lib_paths:
                    locations.insert(0,
                                     os.path.abspath(os.path.join(incl_dir,
                                                                  '..', lib)))
            lib_dir, lib = find_library(self.lib, locations, limit=limit)
            def_dir, defs = lib_dir, []
            if 'windows' in platform.system().lower():
                def_dir, defs = find_definitions(self.lib, locations,
                                                 limit=limit)
            self.found = True
        except ConfigError:
            if self.debug:
                print(sys.exc_info()[1])
            return self.found

        if self.hdr:
            self.environment[self.lib.upper() + '_INCLUDE_DIR'] = incl_dir
        self.environment[self.lib.upper() + '_LIB_DIR'] = def_dir
        self.environment[self.lib.upper() + '_DEF_FILES'] = defs
        self.environment[self.lib.upper() + '_SHLIB_DIR'] = lib_dir
        self.environment[self.lib.upper() + '_LIB_FILES'] = [lib]
        self.environment[self.lib.upper() + '_LIBRARIES'] = [self.lib]
        return self.found
Пример #30
0
def handle_arguments(argv, option_list=()):
    if '--quiet' in argv:
        options.set_verbose(False)
    if '--debug' in argv:
        options.set_debug(True)
        argv.remove('--debug')

    option_plus_list = list(option_list)
    option_plus_list.append('doc')

    opts = dict()
    opts['bundle'] = False
    opts['runscript'] = ''
    opts['ziplib'] = None
    opts['install'] = True
    opts['download'] = False
    opts['sublevel'] = 0
    opts['locally'] = True
    sublevel_set = False

    bundle = False
    if 'py2exe' in argv:
        bundle = True
    if 'py2app' in argv:
        bundle = True
    app = ''
    runscript = ''
    for arg in list(argv):
        if arg == '--show':
            opts['install'] = False
        if arg == '--system-install':
            opts['locally'] = False
        if arg == '--download':
            opts['download'] = True
            opts['install'] = False

        if arg == '--sublevel':
            idx = argv.index(arg)
            opts['sublevel'] = int(argv[idx+1])
            sublevel_set = True
        if arg.startswith('--sublevel='):
            opts['sublevel'] = int(arg[11:])
            sublevel_set = True
        if arg == '-b' or arg == '--build-base':
            idx = argv.index(arg)
            lvl = _set_options_dir(argv[idx+1], options.set_build_dir)
            if not sublevel_set:
                opts['sublevel'] = lvl
        if arg.startswith('--build-base='):
            lvl = _set_options_dir(arg[13:], options.set_build_dir)
            if not sublevel_set:
                opts['sublevel'] = lvl
        if arg == '--download-dir':
            idx = argv.index(arg)
            lvl = _set_options_dir(argv[idx+1], options.set_download_dir)
            if not sublevel_set:
                opts['sublevel'] = lvl
        if arg.startswith('--download-dir='):
            lvl = _set_options_dir(arg[15:], options.set_download_dir)
            if not sublevel_set:
                opts['sublevel'] = lvl

        ## args that won't work with setup
        if arg.startswith('--app='):
            app = runscript = arg[6:].lower()
            runscript = arg[6:].lower()
            if not runscript.endswith('.py'):
                runscript = runscript + '.py'
            for root, _, filenames in os.walk('.'): ## source directory
                for filename in filenames:
                    if filename == runscript:
                        runscript = os.path.join(root, filename)
                        break
            argv.remove(arg)

        if arg.startswith('--ziplib'):
            if '=' in arg:
                opts['ziplib'] = arg[9:]
                if opts['ziplib'][-4:] != '.zip':
                    opts['ziplib'] += '.zip'
            else:
                opts['ziplib'] = options.default_py2exe_library
            argv.remove(arg)

    if bundle and app != '' and runscript != '':
        opts['bundle'] = bundle
        opts['runscript'] = runscript
        opts['app'] = app

    opts['install_dir'] = sys.prefix
    data_directory = 'share'
    data_override = False
    for idx, arg in enumerate(argv[:]):
        if arg.startswith('--prefix='):
            opts['install_dir'] = arg[9:]
        elif arg.startswith('--home='):
            opts['install_dir'] = arg[7:]
        elif arg.startswith('--user='******'install_dir'] = arg[7:]
        elif arg.startswith('--install-data='):
            path = arg[15:]
            if os.path.isabs(path):
                opts['data_install_dir'] = path
                data_override = True  ## always overrides the above prefixes
            else:
                data_directory = path
        elif arg.startswith('build_') and arg[6:] in option_plus_list:
            opts[arg[6:]] = True
            if not 'build' in argv:
                argv.insert(idx, 'build')
            argv.remove(arg)
        elif arg.startswith('install_') and arg[8:] in option_plus_list:
            opts[arg[8:]] = True
            if not 'install' in argv:
                argv.insert(idx, 'install')
            argv.remove(arg)
        elif arg.startswith('clean_') and arg[8:] in option_plus_list:
            opts[arg[8:]] = True
            if not 'clean' in argv:
                argv.insert(idx, 'clean')
            argv.remove(arg)
    if not data_override:
        opts['data_install_dir'] = os.path.join(opts['install_dir'],
                                                data_directory)
        if sum([arg.startswith('install') for arg in argv]) > 0:
            argv.append('--install-data=' + opts['data_install_dir'])

    build_all = True
    for opt in option_list:  ## do not build docs by default
        if opt in opts:
            build_all = False
    if build_all:
        for opt in option_list:
            opts[opt] = True
           
    if 'doc' in opts:
        opts['documentation'] = True
    else:
        opts['documentation'] = False

    return opts, argv