options.cflags or options.cflags_only_big_i or \ options.cflags_only_other or options.list_all: if options.silence_errors: Options().set_option('print_errors', False) else: Options().set_option('print_errors', True) else: if options.print_errors: Options().set_option('print_errors', True) else: Options().set_option('print_errors', False) if options.list_all: Options().set_option('command', 'list-all') try: result = PkgCfgResult(global_variables) all_packages = result.known_packages_list() except: print 'Exception searching for packages:' traceback.print_exc() sys.exit(1) if all_packages: max_width = max([(len(p), p) for p, n, d in all_packages]) for package, name, description in all_packages: print '{0:{3}}{1} - {2}'.format(package, name, description, max_width[0] + 1) sys.exit(0) try: Options().set_option('command', 'search') search = ' '.join(args) Options().set_option('search_string', search)
def __init__(self, distroFile2PackageResolver): self.distroFile2PackageResolver = distroFile2PackageResolver self.r = PkgCfgResult(self.globalz)
def main(argv): parser = setup_option_parser() try: options, args = parser.parse_args() except OptionError as e: print('OptionError: ' + str (e)) sys.exit(1) if options.realversion: print('{0} (Equivalent to {1}'.format(PYKG_CONFIG_VERSION, CORRESPONDING_VERSION)) sys.exit(0) global_variables = {} zip_name = 'python{0}{1}.zip'.format(sys.version_info[0], sys.version_info[1]) for path in sys.path: if path.endswith('64/' + zip_name): Options().set_option('is_64bit', True) break if getenv('PKG_CONFIG_SYSROOT_DIR'): global_variables['pc_sysrootdir'] = getenv('PKG_CONFIG_SYSROOT_DIR') if getenv('PKG_CONFIG_TOP_BUILD_DIR'): global_variables['pc_topbuilddir'] = getenv('PKG_CONFIG_TOP_BUILD_DIR') if getenv('PKG_CONFIG_DISABLE_UNINSTALLED'): Options().set_option('prefer_uninstalled', False) if getenv('PKG_CONFIG_ALLOW_SYSTEM_LIBS'): Options().set_option('forbidden_libdirs', []) else: if Options().get_option('is_64bit'): Options().set_option('forbidden_libdirs', ['/usr/lib64']) else: Options().set_option('forbidden_libdirs', ['/usr/lib']) if getenv('PKG_CONFIG_ALLOW_SYSTEM_CFLAGS'): Options().set_option('forbidden_cflags', []) else: forbidden = [] if sys.platform != 'win32': forbidden.append('/usr/include') if getenv('C_INCLUDE_PATH'): forbidden.append(getenv('C_INCLUDE_PATH')) if getenv('CPLUS_INCLUDE_PATH'): forbidden.append(getenv('CPLUS_INCLUDE_PATH')) Options().set_option('forbidden_cflags', forbidden) if options.full_compatibility: Options().set_option('full_compatibility', True) else: Options().set_option('full_compatibility', False) if options.atleast_pkgconfig_version: other_version = Version(options.atleast_pkgconfig_version) if other_version > get_pkg_config_version(): sys.exit(1) else: sys.exit(0) if options.static: Options().set_option('private_libs', True) if options.short_errors: Options().set_option('short_errors', True) if options.define_variable: for var_def in options.define_variable: sub_strings = var_def.split('=') if len(sub_strings) != 2: print('Bad argument format for define-variable: {1}'.format(var_def)) sys.exit(1) global_variables[sub_strings[0]] = sub_strings[1] if options.debug: Options().set_option('debug', True) if options.errors_to_stdout: Options().set_option('error_dest', sys.stdout) if sys.platform == 'win32': if options.dont_define_prefix: Options().set_option('dont_define_prefix', True) else: Options().set_option('dont_define_prefix', False) if options.prefix_variable: Options().set_option('prefix_variable', options.prefix_variable) if options.msvc_syntax: Options().set_option('use_msvc_syntax', True) else: Options().set_option('use_msvc_syntax', False) if options.normalise_paths: Options().set_option('normalise_paths', True) else: Options().set_option('normalise_paths', False) if options.modversion or options.libs or options.libs_only_l or \ options.libs_only_big_l or options.libs_only_other or \ options.cflags or options.cflags_only_big_i or \ options.cflags_only_other or options.list_all: if options.silence_errors: Options().set_option('print_errors', False) else: Options().set_option('print_errors', True) else: if options.print_errors: Options().set_option('print_errors', True) else: Options().set_option('print_errors', False) if options.list_all: Options().set_option('command', 'list-all') try: result = PkgCfgResult(global_variables) all_packages, errors = result.known_packages_list() except: ErrorPrinter().error('Exception searching for packages:') traceback.print_exc() sys.exit(1) if all_packages: max_width = max([(len(p), p) for p, n, d in all_packages]) for package, name, description in all_packages: print('{0:{3}}{1} - {2}'.format(package, name, description, max_width[0] + 1)) for e in errors: ErrorPrinter().error(e) sys.exit(0) try: Options().set_option('command', 'search') search = ' '.join(args) Options().set_option('search_string', search) result = PkgCfgResult(global_variables) result.find_packages(search, True) except NoOpenableFilesError as e: ErrorPrinter().verbose_error(str(e)) sys.exit(1) except PackageNotFoundError as e: if not Options().get_option('short_errors'): ErrorPrinter().verbose_error('''Package {0} was not found in the \ pkg-config search path. Perhaps you should add the directory containing `{0}.pc' to the PKG_CONFIG_PATH environment variable'''.format(e.pkgname)) ErrorPrinter().verbose_error(str(e)) sys.exit(1) except NoPackagesSpecifiedError: Options().get_option('error_dest').write( 'Must specify package names on the command line\n') sys.exit(1) except UndefinedVarError as e: ErrorPrinter().error("Variable '{0}' not defined in '{1}'".format( e.variable, e.pkgfile)) sys.exit(1) except: print('Exception searching for packages') traceback.print_exc() sys.exit(1) if options.dump_package: result.dump_package() sys.exit(0) if options.exists: # Even if the packages don't meet the requirements, they exist, which # is good enough for the exists option. sys.exit(0) if options.uninstalled: # Check if any packages loaded (both searched-for and dependencies) # are uninstalled. if result.have_uninstalled(): sys.exit(0) sys.exit(1) if options.modversion: for l in result.get_searched_pkgs_versions(): print(l) found_version = \ result.get_package_version(result.get_searched_pkg_list()[0].name) if options.atleast_version: if found_version < Version(options.atleast_version): sys.exit(1) sys.exit(0) if options.exact_version: if found_version != Version(options.exact_version): sys.exit(1) sys.exit(0) if options.max_version: if found_version > Version(options.max_version): sys.exit(1) sys.exit(0) if options.variable: value = result.get_variable_value(options.variable) if value == None: print('') else: print(value) if options.cflags_only_big_i: print(result.get_big_i_flags()) if options.cflags_only_other: print(result.get_other_i_flags()) if options.cflags: print(result.get_cflags()) if options.libs_only_l: print(result.get_l_flags()) if options.libs_only_big_l: print(result.get_big_l_flags()) if options.libs_only_other: print(result.get_other_l_flags()) if options.libs: print(result.get_all_lib_flags())