SHA256
1
0
forked from pool/rpmlint

- add suse-spdx-license-exceptions.patch (bsc#973404)

OBS-URL: https://build.opensuse.org/package/show/devel:openSUSE:Factory:rpmlint/rpmlint?expand=0&rev=382
This commit is contained in:
2016-04-06 14:18:58 +00:00
committed by Git OBS Bridge
parent 0c33550b32
commit 554e557fc4
3 changed files with 169 additions and 44 deletions

View File

@@ -1,3 +1,8 @@
-------------------------------------------------------------------
Wed Apr 6 09:31:04 UTC 2016 - dmueller@suse.com
- add suse-spdx-license-exceptions.patch (bsc#973404)
-------------------------------------------------------------------
Wed Mar 30 12:10:04 UTC 2016 - krahmer@suse.com

View File

@@ -66,52 +66,53 @@ Patch06: suse-pkg-config-check.diff
Patch07: suse-binarieschecks.diff
Patch08: no-doc-for-lib.diff
Patch09: suse-filter-exception.diff
Patch10: usr-arch.diff
Patch11: script-interpreter-only-for-exec-sc.diff
Patch12: sourced-dirs.diff
Patch13: suse-filter-more-verbose.diff
Patch14: docdata-examples.diff
Patch15: yast-provides.diff
Patch16: xdg-paths-update.diff
Patch17: better-wrong-script.diff
Patch18: buildroot-doc.diff
Patch19: rpmgroup-checks.diff
Patch20: devel-provide-is-devel-package.diff
Patch21: only-reg-files-are-scripts.diff
Patch22: buildroot-in-scripts.diff
Patch23: libtool-wrapper-check.diff
Patch24: suse-check-optional-dependencies.diff
Patch25: noarch-lib64.diff
Patch26: suse-no-run-ldconfig.diff
Patch27: description-check.diff
Patch28: add-weak-dependencies.diff
Patch29: selfconflicts-provide.diff
Patch30: no-badness-return.diff
Patch31: suse-shlib-devel-dependency.diff
Patch32: version-control-internal-file.diff
Patch33: stricter-interpreter-check.diff
Patch34: confusing-invalid-spec-name.diff
Patch35: rpmlint-pkg-quoting.diff
Patch36: suse-g-ir-chech.diff
Patch37: remove-expand-macros.diff
Patch38: suse-whitelist-opensuse.diff
Patch39: extend-suse-conffiles-check.diff
Patch40: compressed-backup-regex.diff
Patch41: suse-speccheck-utf8.diff
Patch42: suse-python-abi-check.diff
Patch43: suse-manpages-for-rc-scripts.diff
Patch44: suse-ignore-specfile-errors.diff
Patch45: invalid-filerequires.diff
Patch46: suse-sysv-init-checks.diff
Patch47: check-for-self-provides.diff
Patch48: add-check-for-tmpfiles-created-at-r.diff
Patch49: remove-files-attr-not-set-check.diff
Patch50: fix-shared-library-matching.diff
Patch10: suse-spdx-license-exceptions.patch
Patch20: usr-arch.diff
Patch21: script-interpreter-only-for-exec-sc.diff
Patch22: sourced-dirs.diff
Patch23: suse-filter-more-verbose.diff
Patch24: docdata-examples.diff
Patch25: yast-provides.diff
Patch26: xdg-paths-update.diff
Patch27: better-wrong-script.diff
Patch28: buildroot-doc.diff
Patch29: rpmgroup-checks.diff
Patch30: devel-provide-is-devel-package.diff
Patch31: only-reg-files-are-scripts.diff
Patch32: buildroot-in-scripts.diff
Patch33: libtool-wrapper-check.diff
Patch34: suse-check-optional-dependencies.diff
Patch35: noarch-lib64.diff
Patch36: suse-no-run-ldconfig.diff
Patch37: description-check.diff
Patch38: add-weak-dependencies.diff
Patch39: selfconflicts-provide.diff
Patch40: no-badness-return.diff
Patch41: suse-shlib-devel-dependency.diff
Patch42: version-control-internal-file.diff
Patch43: stricter-interpreter-check.diff
Patch44: confusing-invalid-spec-name.diff
Patch45: rpmlint-pkg-quoting.diff
Patch46: suse-g-ir-chech.diff
Patch47: remove-expand-macros.diff
Patch48: suse-whitelist-opensuse.diff
Patch49: extend-suse-conffiles-check.diff
Patch50: compressed-backup-regex.diff
Patch51: suse-speccheck-utf8.diff
Patch52: suse-python-abi-check.diff
Patch53: suse-manpages-for-rc-scripts.diff
Patch54: suse-ignore-specfile-errors.diff
Patch55: invalid-filerequires.diff
Patch56: suse-sysv-init-checks.diff
Patch57: check-for-self-provides.diff
Patch58: add-check-for-tmpfiles-created-at-r.diff
Patch59: remove-files-attr-not-set-check.diff
Patch60: fix-shared-library-matching.diff
# https://github.com/rpm-software-management/rpmlint/commit/1436dd7bc41115af658cf8f36a3149ab90a61fcf.patch
Patch51: postin-speedup.diff
Patch61: postin-speedup.diff
# https://github.com/rpm-software-management/rpmlint/commit/37fe9d4f237c2cb29fcb3b60d1ece189e578eeaf.patch and followup regression fixes
Patch52: binaryinfo-speedup.diff
Patch53: 0001-Avoid-messing-with-the-error-encoding-Fixes-61.patch
Patch62: binaryinfo-speedup.diff
Patch63: 0001-Avoid-messing-with-the-error-encoding-Fixes-61.patch
# PATCHLIST END
# BuildArch must at the end. is a bug: https://bugzilla.suse.com/show_bug.cgi?id=926766
BuildArch: noarch

View File

@@ -0,0 +1,119 @@
From 7e1975e3a3d627e316b99a87580808499d9cb9c3 Mon Sep 17 00:00:00 2001
From: Dirk Mueller <dirk@dmllr.de>
Date: Wed, 6 Apr 2016 11:29:40 +0200
Subject: [PATCH] Handle SPDX style license exceptions
---
TagsCheck.py | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 54 insertions(+), 5 deletions(-)
Index: rpmlint-1.5/TagsCheck.py
===================================================================
--- rpmlint-1.5.orig/TagsCheck.py
+++ rpmlint-1.5/TagsCheck.py
@@ -139,6 +139,34 @@ DEFAULT_VALID_LICENSES = (
'Shareware',
)
+DEFAULT_VALID_LICENSE_EXCEPTIONS = (
+ '389-exception',
+ 'Autoconf-exception-2.0',
+ 'Autoconf-exception-3.0',
+ 'Bison-exception-2.2',
+ 'CLISP-exception-2.0',
+ 'Classpath-exception-2.0',
+ 'DigiRule-FOSS-exception',
+ 'FLTK-exception',
+ 'Fawkes-Runtime-exception',
+ 'Font-exception-2.0',
+ 'GCC-exception-2.0',
+ 'GCC-exception-3.1',
+ 'LZMA-exception',
+ 'Libtool-exception',
+ 'Nokia-Qt-exception-1.1',
+ 'OCCT-exception-1.0',
+ 'Qwt-exception-1.0',
+ 'WxWindows-exception-3.1',
+ 'eCos-exception-2.0',
+ 'freertos-exception-2.0',
+ 'gnu-javamail-exception',
+ 'i2p-gpl-java-exception',
+ 'mif-exception',
+ 'openvpn-openssl-exception',
+ 'u-boot-exception-2.0',
+)
+
BAD_WORDS = {
'alot': 'a lot',
'accesnt': 'accent',
@@ -403,6 +431,7 @@ VALID_GROUPS = Config.getOption('ValidGr
if VALID_GROUPS is None: # get defaults from rpm package only if it's not set
VALID_GROUPS = Pkg.get_default_valid_rpmgroups()
VALID_LICENSES = Config.getOption('ValidLicenses', DEFAULT_VALID_LICENSES)
+VALID_LICENSE_EXCEPTIONS = Config.getOption('ValidLicenseExceptions', DEFAULT_VALID_LICENSE_EXCEPTIONS)
INVALID_REQUIRES = map(re.compile, Config.getOption('InvalidRequires', DEFAULT_INVALID_REQUIRES))
packager_regex = re.compile(Config.getOption('Packager'))
changelog_version_regex = re.compile('[^>]([^ >]+)\s*$')
@@ -416,6 +445,7 @@ invalid_url_regex = re.compile(Config.ge
lib_package_regex = re.compile('(?:^(?:compat-)?lib.*?(\.so.*)?|libs?[\d-]*)$', re.IGNORECASE)
leading_space_regex = re.compile('^\s+')
license_regex = re.compile('\(([^)]+)\)|\s(?:and|or)\s')
+license_exception_regex = re.compile('(\S+)\sWITH\s(\S+)')
invalid_version_regex = re.compile('([0-9](?:rc|alpha|beta|pre).*)', re.IGNORECASE)
# () are here for grouping purpose in the regexp
forbidden_words_regex = re.compile('(' + Config.getOption('ForbiddenWords') + ')', re.IGNORECASE)
@@ -761,6 +791,10 @@ class TagsCheck(AbstractCheck.AbstractCh
# printWarning(pkg, 'package-provides-itself')
# break
+ def split_license_exception(license):
+ x, y = license_exception_regex.split(license)[1:3]
+ return x.strip(), y.strip()
+
def split_license(license):
return (x.strip() for x in
(l for l in license_regex.split(license) if l))
@@ -769,16 +803,26 @@ class TagsCheck(AbstractCheck.AbstractCh
if not rpm_license:
printError(pkg, 'no-license')
else:
- valid_license = True
+ invalid_license_part = None
if rpm_license not in VALID_LICENSES:
- for l1 in split_license(rpm_license):
+ license_string = rpm_license
+
+ l1, lexception = split_license_exception(rpm_license)
+ # SPDX allows "<license> WITH <license-exception>"
+ if lexception:
+ license_string = l1
+ if lexception not in VALID_LICENSE_EXCEPTIONS:
+ printWarning(pkg, 'invalid-license-exception', lexception)
+ invalid_license_part = rpm_license
+
+ for l1 in split_license(license_string):
if l1 in VALID_LICENSES:
continue
for l2 in split_license(l1):
if l2 not in VALID_LICENSES:
- printWarning(pkg, 'invalid-license', l2)
- valid_license = False
- if not valid_license:
+ invalid_license_part = l2
+ if invalid_license_part:
+ printWarning(pkg, 'invalid-license', invalid_license_part)
self._unexpanded_macros(pkg, 'License', rpm_license)
for tag in ('URL', 'BugURL'):
@@ -1044,6 +1088,11 @@ your specfile.''',
'''The value of the License tag was not recognized. Known values are:
"%s".''' % '", "'.join(VALID_LICENSES),
+'invalid-license-exception',
+'''The ' WITH <x> ' license exception of the License tag was not recognized.
+Known values are:
+"%s".''' % '", "'.join(VALID_LICENSE_EXCEPTIONS),
+
'obsolete-not-provided',
'''If a package is obsoleted by a compatible replacement, the obsoleted package
should also be provided in order to not cause unnecessary dependency breakage.