From: Some One Date: Thu, 9 Apr 2015 14:55:38 +0200 Subject: [PATCH] suse-pkg-config-check.diff =================================================================== --- TagsCheck.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) Index: rpmlint-rpmlint-1.10/TagsCheck.py =================================================================== --- rpmlint-rpmlint-1.10.orig/TagsCheck.py +++ rpmlint-rpmlint-1.10/TagsCheck.py @@ -416,6 +416,7 @@ lib_devel_number_regex = re.compile(r'^l invalid_url_regex = re.compile(Config.getOption('InvalidURL'), re.IGNORECASE) lib_package_regex = re.compile(r'(?:^(?:compat-)?lib.*?(\.so.*)?|libs?[\d-]*)$', re.IGNORECASE) leading_space_regex = re.compile(r'^\s+') +pkg_config_regex = re.compile('^/usr/(?:lib\d*|share)/pkgconfig/') license_regex = re.compile(r'\(([^)]+)\)|\s(?:and|or|AND|OR)\s') invalid_version_regex = re.compile(r'([0-9](?:rc|alpha|beta|pre).*)', re.IGNORECASE) # () are here for grouping purpose in the regexp @@ -635,10 +636,12 @@ class TagsCheck(AbstractCheck.AbstractCh base = is_devel.group(1) dep = None has_so = False + has_pc = False for fname in pkg.files(): if fname.endswith('.so'): has_so = True - break + if pkg_config_regex.match(fname) and fname.endswith('.pc'): + has_pc = True if has_so: base_or_libs = base + '/' + base + '-libs/lib' + base # try to match *%_isa as well (e.g. "(x86-64)", "(x86-32)") @@ -675,6 +678,15 @@ class TagsCheck(AbstractCheck.AbstractCh if prov not in (x[0] for x in pkg.provides()): printWarning(pkg, 'no-provides', prov) + if has_pc: + found_pkg_config_dep = False + for p in (x[0] for x in pkg.provides()): + if (p.startswith("pkgconfig(")): + found_pkg_config_dep = True + break + if not found_pkg_config_dep: + printWarning(pkg, 'no-pkg-config-provides') + # List of words to ignore in spell check ignored_words = set() for pf in pkg.files(): @@ -1108,6 +1120,11 @@ once.''', 'no-url-tag', '''The URL tag is missing. Please add a http or ftp link to the project location.''', +'no-pkg-config-provides', +'''The package installs a .pc file but does not provide pkgconfig(..) provides. +The most likely reason for that is that it was built without BuildRequires: pkg-config. +Please double check your build dependencies.''', + 'name-repeated-in-summary', '''The name of the package is repeated in its summary. This is often redundant information and looks silly in various programs' output. Make the summary