SHA256
1
0
forked from pool/rpmlint
rpmlint/suse-pkg-config-check.diff
Dirk Mueller 1cdbc13b57 - update to 1.10:
* test: Skip fedoradev GPG checks at least for now
 * test: Refresh fedora* packages on image build
 * test: Use assertEqual where appropriate, thanks to flake8/hacking
 * test: Update fedora24 config to fedora26, run it on Travis
 * Add a new test for tmpfiles.d snippets in the /etc/ tree.
 * Add new tests for systemd units and udev rules in /etc/ tree
 * test: Disable hacking for now until it's flake8 3.4+ compatible
 * test: Set up flake8-bugbear, enable it in fedoradev container
 * rpmlint: Avoid unused loop control variable
 * ZipCheck: Add TODO
 * *: Avoid mutable argument defaults
 * Be aware of -debugsource packages
 * rpmdiff: Fix unused variable from previous commit
 * rpmdiff: Support soft dependencies
 * BinariesCheck, FilesCheck: Ignore various .build-id dirs
 * Add python3-devel and rpm-build to fedoradev container to provoke some issues
 * BinariesCheck: Popen env consistency fix
 * Pkg.getstatusoutput: Set LC_ALL for all Popens, defaulting to C
 * rpmlint: Fix checking specfile from stdin
 * test.sh: Extract rpmlint command to run_rpmlint
 * Revert "Remove unused spec_lines check_spec argument"
 * BinariesCheck: Trivial cleanups
 * travis: Run make install too
 * FilesCheck: Allow multiple bytecode magic values per Python version
 * tests: Make output test tools easier to reuse
 * FilesCheck: hg.python.org -> github.com/python
 * Pkg: Return vendor and distribution as unicode strings
 * FilesCheck: Add Python 3.7 bytecode magic value
 * Pkg.b2s: Add some more test cases

OBS-URL: https://build.opensuse.org/package/show/devel:openSUSE:Factory:rpmlint/rpmlint?expand=0&rev=482
2017-09-28 11:35:09 +00:00

64 lines
2.9 KiB
Diff

From: Some One <nobody@opensuse.org>
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