A new user interface for you! Read more...

File suse-pkg-config-check.diff of Package rpmlint

Index: TagsCheck.py
===================================================================
--- TagsCheck.py.orig
+++ TagsCheck.py
@@ -415,6 +415,7 @@ lib_devel_number_regex = re.compile('^li
 invalid_url_regex = re.compile(Config.getOption('InvalidURL'), re.IGNORECASE)
 lib_package_regex = re.compile('(?:^(?:compat-)?lib.*?(\.so.*)?|libs?[\d-]*)$', re.IGNORECASE)
 leading_space_regex = re.compile('^\s+')
+pkg_config_regex = re.compile('^/usr/(?:lib\d*|share)/pkgconfig/')
 license_regex = re.compile('\(([^)]+)\)|\s(?:and|or)\s')
 invalid_version_regex = re.compile('([0-9](?:rc|alpha|beta|pre).*)', re.IGNORECASE)
 # () are here for grouping purpose in the regexp
@@ -626,10 +627,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)")
@@ -666,6 +669,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():
@@ -1099,6 +1111,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