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
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
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
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
def get_version(self, environ=dict()): base_dirs = [] limit = False if 'HDF5_LIB_DIR' in environ and environ['HDF5_LIB_DIR']: base_dirs.append(environ['HDF5_LIB_DIR']) limit = True if 'HDF5_INCLUDE_DIR' in environ and environ['HDF5_INCLUDE_DIR']: base_dirs.append(environ['HDF5_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['HDF5_ROOT']) except KeyError: pass for d in programfiles_directories(): base_dirs.append(os.path.join(d, 'HDF_Group', 'HDF5')) try: base_dirs.append(environ['MINGW_DIR']) base_dirs.append(environ['MSYS_DIR']) except KeyError: pass hdf5_lib_dir, hdf5_libs = find_libraries(self.lib, base_dirs, limit=limit) hdf5_inc_dir = find_header(self.hdr, base_dirs, limit=limit) h = open(os.path.join(hdf5_inc_dir, 'H5public.h'), 'r') ver = None for line in h.readlines(): if 'H5_VERS_INFO' in line: pre = 'HDF5 library version: ' v_begin = line.find(pre) + len(pre) v_end = line.find('"', v_begin) ver = line[v_begin:v_end].strip() break h.close() return ver, hdf5_inc_dir, hdf5_lib_dir, hdf5_libs
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
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
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
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
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
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
def is_installed(self, environ, version=None, strict=False): options.set_debug(self.debug) mpich_lib_list = ['mpich', 'mpichcxx', 'mpichf90'] if 'windows' in platform.system().lower(): mpich_lib_list = ['mpi', 'mpicxx', 'fmpich2g'] arch = 'i686' if struct.calcsize('P') == 8: arch = 'x86_64' base_dirs = [] limit = False if 'MPICH_LIB_DIR' in environ and environ['MPICH_LIB_DIR']: base_dirs.append(environ['MPICH_LIB_DIR']) limit = True if 'MPICH_INCLUDE_DIR' in environ and environ['MPICH_INCLUDE_DIR']: base_dirs.append(environ['MPICH_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['MPICH_ROOT']) except KeyError: pass for d in programfiles_directories(): base_dirs.append(os.path.join(d, 'MPICH2')) try: base_dirs.append(environ['MINGW_DIR']) base_dirs.append(environ['MSYS_DIR']) except KeyError: pass try: mpich_lib_dir, mpich_libs = find_libraries(mpich_lib_list[0], base_dirs) mpich_inc_dir = find_header(self.hdr, base_dirs, ['mpich2', 'mpich2-' + arch,]) mpich_exe = find_program('mpicc', base_dirs + [os.path.join(mpich_lib_dir, '..')]) mpich_exe_dir = os.path.abspath(os.path.dirname(mpich_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 + mpich_exe_dir self.environment['MPICH_PATH'] = mpich_exe_dir self.environment['MPICH_INCLUDE_DIR'] = mpich_inc_dir self.environment['MPICH_LIB_DIR'] = mpich_lib_dir self.environment['MPICH_LIBRARIES'] = mpich_lib_list self.environment['MPICH_LIB_FILES'] = mpich_libs try: p = subprocess.Popen([mpich_exe, '-compile_info', '-link_info'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) out, err = p.communicate() if err != '': self.found = False return self.found self.environment['MPICH_FLAGS'] = out.split()[1:] except OSError: self.found = False return self.found