def _process_props(self, global_variables): # Processing of file data props = self.raw_props # May need to reset the prefix variable if sys.platform == 'win32' and \ not Options().get_option('dont_define_prefix'): # Use the location of the .pc file to guess a suitable value for # the prefix variable. Start by checking if the absolute .pc # location ends with '\lib\pkgconfig'. abs_loc = dirname(abspath(self.filename)) if Options().get_option('normalise_paths'): abs_loc = normpath(abs_loc) else: # If not normalising paths, then all paths should be in / # format for consistency abs_loc = abs_loc.replace('\\', '/') if abs_loc.endswith('\\lib\\pkgconfig'): self.variables[Options().get_option('prefix_variable')] = \ abs_loc.rstrip('\\lib\\pkgconfig') ErrorPrinter().debug_print('Replaced {0} with \ {1}'.format(Options().get_option('prefix_variable'), self.variables[Options().get_option('prefix_variable')])) # Perform substitutions for key in props: props[key] = substitute(props[key], self.variables, global_variables) # Parse the data self.properties = deepcopy(empty_processed_props) self.properties['name'] = props['name'] if props['description']: self.properties['description'] = props['description'] if props['version']: try: self.properties['version'] = Version(props['version']) except BadVersionFormatError as e: raise BadVersionFormatError(e.versionstring, props['name']) self.properties['requires'] = \ parse_package_spec_list(props['requires']) self.properties['requires.private'] = \ parse_package_spec_list(props['requires.private']) + \ self.properties['requires'] self.properties['conflicts'] = \ parse_package_spec_list(props['conflicts']) self._parse_cflags(props['cflags'], global_variables) self._parse_libs(props['libs'], global_variables) self._parse_libs(props['libs.private'], global_variables, dest='private.')
def _process_props(self, global_variables): # Processing of file data props = self.raw_props # May need to reset the prefix variable if sys.platform == 'win32' and \ not Options().get_option('dont_define_prefix'): # Use the location of the .pc file to guess a suitable value for # the prefix variable. Start by checking if the absolute .pc # location ends with '\lib\pkgconfig'. abs_loc = dirname(abspath(self.filename)) if Options().get_option('normalise_paths'): abs_loc = normpath(abs_loc) else: # If not normalising paths, then all paths should be in / # format for consistency abs_loc = abs_loc.replace('\\', '/') if abs_loc.endswith('\\lib\\pkgconfig'): self.variables[Options().get_option('prefix_variable')] = \ abs_loc.rstrip('\\lib\\pkgconfig') ErrorPrinter().debug_print('Replaced {0} with \ {1}'.format(Options().get_option('prefix_variable'), self.variables[Options().get_option('prefix_variable')])) # Perform substitutions for key in props: props[key] = substitute(props[key], self.variables, global_variables) # Parse the data self.properties = deepcopy(empty_processed_props) self.properties['name'] = props['name'] if props['description']: self.properties['description'] = props['description'] if props['version']: try: self.properties['version'] = Version(props['version']) except BadVersionFormatError as e: raise BadVersionFormatError(e.versionstring, props['name']) self.properties['requires'] = \ parse_package_spec_list(props['requires']) self.properties['requires.private'] = \ parse_package_spec_list(props['requires.private']) + \ self.properties['requires'] self.properties['conflicts'] = \ parse_package_spec_list(props['conflicts']) self._parse_cflags(props['cflags']) self._parse_libs(props['libs']) self._parse_libs(props['libs.private'], dest='private.')
def find_packages(self, pkglist, recurse): """Find all packages specified in pkglist, which must be a textual list of package specifications in the form 'package operator version' (where operator is a comparison operator such as <= or ==). """ self.searched_packages = parse_package_spec_list(pkglist) if not self.searched_packages: raise NoPackagesSpecifiedError self._load_dependencies(self.searched_packages, recurse)
def test_parse_package_spec_list(self): parsed = packagespeclist.parse_package_spec_list( "blag < 2.3, \ blerg>=5-svn blork, bleck = 15" ) expected = [ dependency.Dependency("blag", dependency.LESS_THAN, version.Version("2.3")), dependency.Dependency("blerg", dependency.GREATER_THAN_EQUAL, version.Version("5-svn")), dependency.Dependency("blork", dependency.ALWAYS_MATCH, version.Version()), dependency.Dependency("bleck", dependency.EQUAL, version.Version("15")), ] self.assertEqual(parsed, expected)
def test_parse_package_spec_list(self): parsed = packagespeclist.parse_package_spec_list('blag < 2.3, \ blerg>=5-svn blork, bleck = 15') expected = [dependency.Dependency('blag', dependency.LESS_THAN, version.Version('2.3')), dependency.Dependency('blerg', dependency.GREATER_THAN_EQUAL, version.Version('5-svn')), dependency.Dependency('blork', dependency.ALWAYS_MATCH, version.Version()), dependency.Dependency('bleck', dependency.EQUAL, version.Version('15'))] self.assertEqual(parsed, expected)
def test_parse_package_spec_list(self): parsed = packagespeclist.parse_package_spec_list('blag < 2.3, \ blerg>=5-svn blork, bleck = 15') expected = [ dependency.Dependency('blag', dependency.LESS_THAN, version.Version('2.3')), dependency.Dependency('blerg', dependency.GREATER_THAN_EQUAL, version.Version('5-svn')), dependency.Dependency('blork', dependency.ALWAYS_MATCH, version.Version()), dependency.Dependency('bleck', dependency.EQUAL, version.Version('15')) ] self.assertEqual(parsed, expected)