Accepting request 20532 from Base:System
Copy from Base:System/rpmlint based on submit request 20532 from user dirkmueller OBS-URL: https://build.opensuse.org/request/show/20532 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/rpmlint?expand=0&rev=46
This commit is contained in:
parent
6fb2056c2a
commit
eaf5a8d432
@ -2,7 +2,7 @@ Index: Pkg.py
|
||||
===================================================================
|
||||
--- Pkg.py.orig
|
||||
+++ Pkg.py
|
||||
@@ -170,6 +170,10 @@ class Pkg:
|
||||
@@ -307,6 +307,10 @@ class Pkg:
|
||||
self._missingok_files = None
|
||||
self._files = None
|
||||
self._requires = None
|
||||
@ -13,7 +13,7 @@ Index: Pkg.py
|
||||
self._req_names = -1
|
||||
|
||||
if header:
|
||||
@@ -376,6 +380,22 @@ class Pkg:
|
||||
@@ -513,6 +517,22 @@ class Pkg:
|
||||
self._gatherDepInfo()
|
||||
return self._requires
|
||||
|
||||
@ -36,7 +36,7 @@ Index: Pkg.py
|
||||
def prereq(self):
|
||||
self._gatherDepInfo()
|
||||
return self._prereq
|
||||
@@ -406,7 +426,8 @@ class Pkg:
|
||||
@@ -542,7 +562,8 @@ class Pkg:
|
||||
return self._provides
|
||||
|
||||
# internal function to gather dependency info used by the above ones
|
||||
@ -46,7 +46,7 @@ Index: Pkg.py
|
||||
names = header[nametag]
|
||||
versions = header[versiontag]
|
||||
flags = header[flagstag]
|
||||
@@ -415,7 +436,11 @@ class Pkg:
|
||||
@@ -551,7 +572,11 @@ class Pkg:
|
||||
for loop in range(len(versions)):
|
||||
if prereq is not None and flags[loop] & PREREQ_FLAG:
|
||||
prereq.append((names[loop], versions[loop], flags[loop] & (~PREREQ_FLAG)))
|
||||
@ -59,7 +59,7 @@ Index: Pkg.py
|
||||
list.append((names[loop], versions[loop], flags[loop]))
|
||||
|
||||
def _gatherDepInfo(self):
|
||||
@@ -425,6 +450,10 @@ class Pkg:
|
||||
@@ -561,6 +586,10 @@ class Pkg:
|
||||
self._provides = []
|
||||
self._conflicts = []
|
||||
self._obsoletes = []
|
||||
@ -70,7 +70,7 @@ Index: Pkg.py
|
||||
|
||||
self._gather_aux(self.header, self._requires,
|
||||
rpm.RPMTAG_REQUIRENAME,
|
||||
@@ -443,6 +472,27 @@ class Pkg:
|
||||
@@ -579,6 +608,27 @@ class Pkg:
|
||||
rpm.RPMTAG_OBSOLETENAME,
|
||||
rpm.RPMTAG_OBSOLETEVERSION,
|
||||
rpm.RPMTAG_OBSOLETEFLAGS)
|
||||
|
@ -1,6 +1,8 @@
|
||||
--- FilesCheck.py
|
||||
Index: FilesCheck.py
|
||||
===================================================================
|
||||
--- FilesCheck.py.orig
|
||||
+++ FilesCheck.py
|
||||
@@ -1403,7 +1403,10 @@
|
||||
@@ -1470,7 +1470,10 @@ customize an executable, make it for exa
|
||||
executed.''',
|
||||
|
||||
'wrong-script-interpreter',
|
||||
|
@ -1,6 +1,8 @@
|
||||
--- SpecCheck.py
|
||||
Index: SpecCheck.py
|
||||
===================================================================
|
||||
--- SpecCheck.py.orig
|
||||
+++ SpecCheck.py
|
||||
@@ -408,7 +408,7 @@
|
||||
@@ -539,7 +539,7 @@ allow building the package as non root o
|
||||
|
||||
'hardcoded-path-in-buildroot-tag',
|
||||
'''A path is hardcoded in your Buildroot tag. It should be replaced
|
||||
|
@ -14,7 +14,7 @@ Index: SpecCheck.py
|
||||
|
||||
# Only check for /lib, /usr/lib, /usr/X11R6/lib
|
||||
# TODO: better handling of X libraries and modules.
|
||||
@@ -262,7 +265,9 @@ class SpecCheck(AbstractCheck.AbstractCh
|
||||
@@ -257,7 +260,9 @@ class SpecCheck(AbstractCheck.AbstractCh
|
||||
|
||||
continue
|
||||
|
||||
|
3
config
3
config
@ -46,6 +46,9 @@ addFilter(".*non-versioned-file-in-library-package.*")
|
||||
addFilter(".*incoherent-version-in-name.*")
|
||||
addFilter(".*invalid-vendor.*")
|
||||
addFilter(".*invalid-distribution.*")
|
||||
addFilter(".*hardcoded-path-in-buildroot-tag.*")
|
||||
addFilter(".*no-buildroot-tag.*")
|
||||
addFilter(".*cross-directory-hard-link.*")
|
||||
|
||||
# Configuration options used by the checks
|
||||
|
||||
|
@ -1,12 +1,13 @@
|
||||
--- SpecCheck.py
|
||||
Index: SpecCheck.py
|
||||
===================================================================
|
||||
--- SpecCheck.py.orig
|
||||
+++ SpecCheck.py
|
||||
@@ -90,7 +90,7 @@
|
||||
@@ -112,7 +112,7 @@ def deptokens(line):
|
||||
elif wantmore:
|
||||
tmp += ' ' + tok
|
||||
wantmore = 0
|
||||
wantmore = False
|
||||
- elif tok[0] in ('=', '<', '>'):
|
||||
+ elif len(tok) and tok[0] in ('=', '<', '>'):
|
||||
tmp += ' ' + tok
|
||||
wantmore = 1
|
||||
wantmore = True
|
||||
else:
|
||||
|
||||
|
@ -1,16 +1,16 @@
|
||||
--- TagsCheck.py
|
||||
+++ TagsCheck.py
|
||||
@@ -594,6 +594,9 @@ class TagsCheck(AbstractCheck.AbstractCheck):
|
||||
if use_utf8 and not Pkg.is_utf8_str(description):
|
||||
printError(pkg, 'tag-not-utf8', '%description')
|
||||
|
||||
@@ -576,6 +576,9 @@
|
||||
if not description:
|
||||
printError(pkg, 'no-description-tag')
|
||||
else:
|
||||
+ if len(description.partition('Authors:')[0])-4 <= len(summary):
|
||||
+ printWarning(pkg, 'description-shorter-than-summary')
|
||||
+
|
||||
group=pkg[rpm.RPMTAG_GROUP]
|
||||
if not group:
|
||||
printError(pkg, 'no-group-tag')
|
||||
@@ -769,6 +772,10 @@ Name tag.''',
|
||||
spell_check(pkg, description, 'description')
|
||||
for l in description.splitlines():
|
||||
utf8l = l
|
||||
@@ -786,6 +789,10 @@
|
||||
'''The major number of the library isn't included in the package's name.
|
||||
''',
|
||||
|
||||
|
@ -1,15 +1,17 @@
|
||||
--- MenuXDGCheck.py
|
||||
+++ MenuXDGCheck.py
|
||||
@@ -21,7 +21,11 @@
|
||||
@@ -21,8 +21,12 @@
|
||||
|
||||
def check_file(self, pkg, filename):
|
||||
f = pkg.dirName() + filename
|
||||
- if getstatusoutput(('desktop-file-validate', f), 1)[0]:
|
||||
+ st = getstatusoutput(('desktop-file-validate', f), 1)
|
||||
- if getstatusoutput(('desktop-file-validate', f), True)[0]:
|
||||
- printError(pkg, 'invalid-desktopfile', filename)
|
||||
+ st = getstatusoutput(('desktop-file-validate', f), True)
|
||||
+ if st[0]:
|
||||
+ if st[1].find('error:') != -1:
|
||||
+ printError(pkg, 'invalid-desktopfile', filename, st[1].split('error: ')[1])
|
||||
+ else:
|
||||
printError(pkg, 'invalid-desktopfile', filename)
|
||||
+ printError(pkg, 'invalid-desktopfile', filename)
|
||||
if not is_utf8(f):
|
||||
printError(pkg, 'non-utf8-desktopfile', filename)
|
||||
|
||||
|
@ -1,6 +1,8 @@
|
||||
--- FilesCheck.py
|
||||
Index: FilesCheck.py
|
||||
===================================================================
|
||||
--- FilesCheck.py.orig
|
||||
+++ FilesCheck.py
|
||||
@@ -285,6 +285,10 @@
|
||||
@@ -761,6 +761,10 @@ class FilesCheck(AbstractCheck.AbstractC
|
||||
# Check if the package is a development package
|
||||
devel_pkg = devel_regex.search(pkg.name)
|
||||
|
||||
|
@ -1,6 +1,8 @@
|
||||
--- FilesCheck.py
|
||||
Index: FilesCheck.py
|
||||
===================================================================
|
||||
--- FilesCheck.py.orig
|
||||
+++ FilesCheck.py
|
||||
@@ -179,6 +179,7 @@
|
||||
@@ -651,6 +651,7 @@ bin_regex = re.compile('^(/usr)?/s?bin/'
|
||||
includefile_regex = re.compile('\.(c|h)(pp|xx)?$', re.IGNORECASE)
|
||||
develfile_regex = re.compile('\.(a|cmxa?|mli?)$')
|
||||
buildconfigfile_regex = re.compile('(\.pc|/bin/.+-config)$')
|
||||
@ -8,7 +10,7 @@
|
||||
# room for improvement with catching more -R, but also for false positives...
|
||||
buildconfig_rpath_regex = re.compile('(?:-rpath|Wl,-R)\\b')
|
||||
sofile_regex = re.compile('/lib(64)?/(.+/)?lib[^/]+\.so$')
|
||||
@@ -551,7 +552,7 @@
|
||||
@@ -1035,7 +1036,7 @@ class FilesCheck(AbstractCheck.AbstractC
|
||||
includefile_regex.search(f) or \
|
||||
develfile_regex.search(f) or \
|
||||
logrotate_regex.search(f)
|
||||
@ -16,8 +18,8 @@
|
||||
+ if nonexec_file and not docdir_examples_regex.search(f):
|
||||
printWarning(pkg, 'spurious-executable-perm', f)
|
||||
elif f.startswith('/etc/'):
|
||||
if not f in config_files and not f in ghost_files:
|
||||
@@ -853,7 +854,10 @@
|
||||
if f not in config_files and f not in ghost_files:
|
||||
@@ -1346,7 +1347,10 @@ included in your package.''',
|
||||
'spurious-executable-perm',
|
||||
'''The file is installed with executable permissions, but was identified as one
|
||||
that probably should not be executable. Verify if the executable bits are
|
||||
|
@ -1,14 +1,16 @@
|
||||
--- TagsCheck.py
|
||||
Index: TagsCheck.py
|
||||
===================================================================
|
||||
--- TagsCheck.py.orig
|
||||
+++ TagsCheck.py
|
||||
@@ -402,6 +402,7 @@
|
||||
@@ -402,6 +402,7 @@ invalid_version_regex = re.compile('([0-
|
||||
# () are here for grouping purpose in the regexp
|
||||
forbidden_words_regex = re.compile('(' + Config.getOption('ForbiddenWords') + ')', re.IGNORECASE)
|
||||
valid_buildhost_regex = re.compile(Config.getOption('ValidBuildHost'))
|
||||
+valid_filedep_regex=re.compile('(?:/s?bin/|^/etc/|^/usr/lib/sendmail$)')
|
||||
epoch_regex = re.compile('^[0-9]+:')
|
||||
use_epoch = Config.getOption('UseEpoch', 0)
|
||||
use_epoch = Config.getOption('UseEpoch', False)
|
||||
use_utf8 = Config.getOption('UseUTF8', Config.USEUTF8_DEFAULT)
|
||||
@@ -484,6 +485,9 @@
|
||||
@@ -484,6 +485,9 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
if d[0].startswith('/usr/local/'):
|
||||
printError(pkg, 'invalid-dependency', d[0])
|
||||
|
||||
@ -18,9 +20,9 @@
|
||||
if not devel_depend and not is_devel and not is_source:
|
||||
if FilesCheck.devel_regex.search(d[0]):
|
||||
printError(pkg, 'devel-dependency', d[0])
|
||||
@@ -885,6 +889,12 @@
|
||||
'obsolete-on-name',
|
||||
'''A package should not obsolete itself, as it can cause weird errors in tools.''',
|
||||
@@ -902,6 +906,12 @@ explicit Requires: tags.''',
|
||||
'''This package provides 2 times the same capacity. It should only provide it
|
||||
once.''',
|
||||
|
||||
+'invalid-filepath-dependency',
|
||||
+'''A package has a file or path based dependency that is not resolveable for
|
||||
|
@ -1,6 +1,8 @@
|
||||
--- I18NCheck.py
|
||||
Index: I18NCheck.py
|
||||
===================================================================
|
||||
--- I18NCheck.py.orig
|
||||
+++ I18NCheck.py
|
||||
@@ -35,22 +35,22 @@
|
||||
@@ -38,22 +38,22 @@ INCORRECT_LOCALES = {
|
||||
#
|
||||
# 'en_RN' and 'en@IPA' are not real language bu funny variations on english
|
||||
CORRECT_SUBDIRS = (
|
||||
|
@ -1,27 +1,3 @@
|
||||
Index: Filter.py
|
||||
===================================================================
|
||||
--- Filter.py.orig
|
||||
+++ Filter.py
|
||||
@@ -101,10 +101,6 @@ def _diag_compare(x, y):
|
||||
|
||||
|
||||
def printAllReasons():
|
||||
- threshold = badnessThreshold()
|
||||
- if threshold < 0:
|
||||
- return 0
|
||||
-
|
||||
global _badness_score, _diagnostic
|
||||
_diagnostic.sort(_diag_compare)
|
||||
last_reason = ''
|
||||
@@ -119,8 +115,6 @@ def printAllReasons():
|
||||
if Config.info and len(last_reason):
|
||||
printDescriptions(last_reason)
|
||||
_diagnostic = list()
|
||||
- return _badness_score > threshold
|
||||
-
|
||||
|
||||
_details = {}
|
||||
|
||||
Index: rpmlint.py
|
||||
===================================================================
|
||||
--- rpmlint.py.orig
|
||||
@ -49,3 +25,27 @@ Index: rpmlint.py
|
||||
if printed_messages["E"] > 0:
|
||||
sys.exit(64)
|
||||
sys.exit(0)
|
||||
Index: Filter.py
|
||||
===================================================================
|
||||
--- Filter.py.orig
|
||||
+++ Filter.py
|
||||
@@ -101,10 +101,6 @@ def _diag_compare(x, y):
|
||||
|
||||
|
||||
def printAllReasons():
|
||||
- threshold = badnessThreshold()
|
||||
- if threshold < 0:
|
||||
- return False
|
||||
-
|
||||
global _badness_score, _diagnostic
|
||||
_diagnostic.sort(_diag_compare)
|
||||
last_reason = ''
|
||||
@@ -119,8 +115,6 @@ def printAllReasons():
|
||||
if Config.info and len(last_reason):
|
||||
printDescriptions(last_reason)
|
||||
_diagnostic = list()
|
||||
- return _badness_score > threshold
|
||||
-
|
||||
|
||||
_details = {}
|
||||
|
||||
|
@ -2,9 +2,9 @@ Index: FilesCheck.py
|
||||
===================================================================
|
||||
--- FilesCheck.py.orig
|
||||
+++ FilesCheck.py
|
||||
@@ -772,7 +772,7 @@ class FilesCheck(AbstractCheck.AbstractC
|
||||
log_file = 0
|
||||
logrotate_file = 0
|
||||
@@ -778,7 +778,7 @@ class FilesCheck(AbstractCheck.AbstractC
|
||||
debuginfo_srcs = False
|
||||
debuginfo_debugs = False
|
||||
|
||||
- if not doc_files:
|
||||
+ if not lib_package and not doc_files:
|
||||
|
@ -2,7 +2,7 @@ Index: TagsCheck.py
|
||||
===================================================================
|
||||
--- TagsCheck.py.orig
|
||||
+++ TagsCheck.py
|
||||
@@ -601,6 +601,8 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
@@ -602,6 +602,8 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
else:
|
||||
if VALID_GROUPS and group not in VALID_GROUPS:
|
||||
printWarning(pkg, 'non-standard-group', group)
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:06789cdd18c87a180c93c2a1dc17c3a5b8cb704b1e121e162f0b3aedf09c17b4
|
||||
size 86223
|
3
rpmlint-0.90.tar.bz2
Normal file
3
rpmlint-0.90.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:991cbd183ee5164eba39500cf55f741d8b5837a50c620f586ad50090992b4e8d
|
||||
size 90070
|
@ -1,3 +1,53 @@
|
||||
-------------------------------------------------------------------
|
||||
Wed Sep 9 18:23:16 CEST 2009 - dmueller@suse.de
|
||||
|
||||
- update to 0.90:
|
||||
* Makefile: 0.90.
|
||||
* rpmdiff: Add missing magic coding comment
|
||||
(https://bugzilla.redhat.com/508683, Michal Nowak).
|
||||
* TagsCheck.py: Fix incorrect info in self-obsoletion message.
|
||||
* FilesCheck.py: Output interpreter in non-executable-script
|
||||
warning, remove quotes from wrong-script-interpreter one.
|
||||
* Pkg.py: Remove stale comments.
|
||||
* TagsCheck.py: Code cleanup, NFC.
|
||||
* TagsCheck.py: improve percent-in-* message details.
|
||||
* TagsCheck.py: Remove obsolete-on-name check (superseded by
|
||||
self-obsoletion).
|
||||
* TagsCheck.py: Add check for self-obsoletion cases,
|
||||
https://bugzilla.redhat.com/461610
|
||||
* Pkg.py: Borrow various utilities from yum's rpmUtils.miscutils.
|
||||
* Makefile, rpmUtils: Revert previous commit.
|
||||
* Makefile, rpmUtils, rpmUtils/miscutils.py,
|
||||
rpmUtils/transaction.py: Borrow
|
||||
rpmUtils/{miscutils,transaction}.py from yum.
|
||||
* rpmdiff: Improve dependency formatting.
|
||||
* rpmdiff: Take Epoch into account in self-provides filtering.
|
||||
* Pkg.py: Improve legacy prereq tracking with new rpm versions.
|
||||
* BinariesCheck.py: Don't output missing-PT_GNU_STACK-section
|
||||
messages if readelf failed.
|
||||
* FilesCheck.py: Add check for debuginfo packages without sources.
|
||||
* FilesCheck.py: Allow more common files to be non-readable
|
||||
(https://bugzilla.redhat.com/226412).
|
||||
* FilesCheck.py: Revert relative symlink target normalization back
|
||||
to more aggressive.
|
||||
* BinariesCheck.py, Config.py, ConfigCheck.py, FHSCheck.py,
|
||||
FilesCheck.py, I18NCheck.py, MenuCheck.py, Pkg.py, PostCheck.py,
|
||||
TagsCheck.py, rpmdiff: Code cleanups.
|
||||
* FilesCheck.py: Do not check existence of relative link targets on
|
||||
the filesystem for consistency with absolute link target checks,
|
||||
improve dangling-*symlink info messages.
|
||||
* FilesCheck.py, Pkg.py: Be a bit stricter when normalizing link
|
||||
targets, do it earlier.
|
||||
* FilesCheck.py, Pkg.py: Improve link target normalization in
|
||||
symlink checks.
|
||||
- filter cross-directory-hard-link as it is duplicate to a suse
|
||||
check
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Sep 7 15:14:41 CEST 2009 - dmueller@suse.de
|
||||
|
||||
- filter buildroot related checks (bnc#536594)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Aug 28 10:45:02 UTC 2009 - mvyskocil@suse.cz
|
||||
|
||||
|
53
rpmlint.spec
53
rpmlint.spec
@ -1,5 +1,5 @@
|
||||
#
|
||||
# spec file for package rpmlint (Version 0.87)
|
||||
# spec file for package rpmlint (Version 0.90)
|
||||
#
|
||||
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
#
|
||||
@ -22,8 +22,8 @@
|
||||
Name: rpmlint
|
||||
BuildRequires: rpm-python
|
||||
Summary: Rpm correctness checker
|
||||
Version: 0.87
|
||||
Release: 3
|
||||
Version: 0.90
|
||||
Release: 1
|
||||
Source0: %{name}-%{version}.tar.bz2
|
||||
Source1: config
|
||||
Source1001: config.in
|
||||
@ -103,11 +103,9 @@ Patch58: add-weak-dependencies.diff
|
||||
Patch60: selfconflicts-provide.diff
|
||||
Patch62: no-badness-return.diff
|
||||
Patch65: suse-shlib-devel-dependency.diff
|
||||
Patch66: suse-no-python-base.diff
|
||||
Patch67: suse-required-lsb-tags.diff
|
||||
Patch68: more-verbose-lsb-check.diff
|
||||
Patch69: useless-requires-doc.diff
|
||||
Patch70: subprocess-support.diff
|
||||
Patch71: suse-binary-info-compile-opts.diff
|
||||
Patch72: version-control-internal-file.diff
|
||||
%py_requires
|
||||
@ -148,37 +146,36 @@ Authors:
|
||||
%patch23
|
||||
# bogus, fails with aaa_base. disabled
|
||||
#patch24
|
||||
%patch26
|
||||
#%patch26
|
||||
%patch27
|
||||
%patch29
|
||||
%patch30
|
||||
#patch31
|
||||
%patch33
|
||||
#patch34
|
||||
#patch35
|
||||
#%patch31
|
||||
# needs rediff
|
||||
#%patch33
|
||||
#%patch34
|
||||
#%patch35
|
||||
%patch37
|
||||
#patch39
|
||||
#patch41
|
||||
#patch42
|
||||
#patch46
|
||||
#patch47
|
||||
#patch49
|
||||
#%patch39
|
||||
#%patch41
|
||||
#%patch42
|
||||
#%patch46
|
||||
#%patch47
|
||||
#%patch49
|
||||
%patch50
|
||||
#patch51
|
||||
#patch52
|
||||
%patch51
|
||||
#%patch52
|
||||
%patch54
|
||||
#patch57
|
||||
#%patch57
|
||||
%patch58
|
||||
#patch60
|
||||
#%patch60
|
||||
%patch62
|
||||
#patch63
|
||||
#patch65
|
||||
#patch66
|
||||
#patch67
|
||||
#patch68
|
||||
#patch69
|
||||
#patch70
|
||||
#patch71
|
||||
#%patch63
|
||||
#%patch65
|
||||
#%patch67
|
||||
#%patch68
|
||||
#%patch69
|
||||
#%patch71
|
||||
%patch72
|
||||
cp -p %{SOURCE1} .
|
||||
cp -p %{SOURCE2} .
|
||||
|
@ -1,11 +1,13 @@
|
||||
--- FilesCheck.py
|
||||
Index: FilesCheck.py
|
||||
===================================================================
|
||||
--- FilesCheck.py.orig
|
||||
+++ FilesCheck.py
|
||||
@@ -1107,7 +1107,7 @@
|
||||
# ...but executed ones should
|
||||
elif res or mode & 0111 != 0 or script_regex.search(f):
|
||||
@@ -1162,7 +1162,7 @@ class FilesCheck(AbstractCheck.AbstractC
|
||||
interpreter = None
|
||||
if res:
|
||||
- if not interpreter_regex.search(res.group(1)):
|
||||
+ if mode & 0111 != 0 and not interpreter_regex.search(res.group(1)):
|
||||
printError(pkg, 'wrong-script-interpreter', f, '"' + res.group(1) + '"')
|
||||
interpreter = res.group(1)
|
||||
- if not interpreter_regex.search(interpreter):
|
||||
+ if mode & 0111 != 0 and not interpreter_regex.search(interpreter):
|
||||
printError(pkg, 'wrong-script-interpreter', f, interpreter)
|
||||
elif not nonexec_file and not (lib_path_regex.search(f) and f.endswith('.la')):
|
||||
printError(pkg, 'script-without-shebang', f)
|
||||
|
@ -1,6 +1,8 @@
|
||||
--- FilesCheck.py
|
||||
Index: FilesCheck.py
|
||||
===================================================================
|
||||
--- FilesCheck.py.orig
|
||||
+++ FilesCheck.py
|
||||
@@ -211,7 +211,7 @@
|
||||
@@ -683,7 +683,7 @@ manifest_perl_regex = re.compile('^/usr/
|
||||
shebang_regex = re.compile('^#!\s*(\S*)')
|
||||
interpreter_regex = re.compile('^/(usr/)?(s?bin|games|libexec(/.+)?|(lib(64)?|share)/.+)/[^/]+$')
|
||||
script_regex = re.compile('^/((usr/)?s?bin|etc/(rc\.d/init\.d|X11/xinit\.d|cron\.(hourly|daily|monthly|weekly)))/')
|
||||
|
@ -1,52 +0,0 @@
|
||||
--- Pkg.py
|
||||
+++ Pkg.py
|
||||
@@ -13,13 +13,18 @@ import rpm
|
||||
import os.path
|
||||
import stat
|
||||
import commands
|
||||
-import popen2
|
||||
import re
|
||||
import string
|
||||
import tempfile
|
||||
import types
|
||||
import sys
|
||||
|
||||
+# popen2 is deprecated with 2.6 and newer
|
||||
+if sys.version_info[0] > 2 or sys.version_info[1] >= 4:
|
||||
+ import subprocess
|
||||
+else:
|
||||
+ import popen2
|
||||
+
|
||||
from Filter import printWarning
|
||||
|
||||
RPMFILE_CONFIG=(1 << 0)
|
||||
@@ -93,13 +98,23 @@ def substitute_shell_vars(val, script):
|
||||
def getstatusoutput(cmd, stdoutonly=0):
|
||||
'''A version of commands.getstatusoutput() which can take cmd as a
|
||||
sequence, thus making it potentially more secure. See popen2.'''
|
||||
- if stdoutonly:
|
||||
- proc = popen2.Popen3(cmd)
|
||||
+ if sys.version_info[0] > 2 or sys.version_info[1] >= 4:
|
||||
+ if stdoutonly:
|
||||
+ proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, close_fds=True)
|
||||
+ else:
|
||||
+ proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, close_fds=True)
|
||||
+
|
||||
+ text = proc.stdout.read()
|
||||
+ sts = proc.wait()
|
||||
else:
|
||||
- proc = popen2.Popen4(cmd)
|
||||
- proc.tochild.close()
|
||||
- text = proc.fromchild.read()
|
||||
- sts = proc.wait()
|
||||
+ if stdoutonly:
|
||||
+ proc = popen2.Popen3(cmd)
|
||||
+ else:
|
||||
+ proc = popen2.Popen4(cmd)
|
||||
+ proc.tochild.close()
|
||||
+ text = proc.fromchild.read()
|
||||
+ sts = proc.wait()
|
||||
+
|
||||
if sts is None: sts = 0
|
||||
if text[-1:] == '\n': text = text[:-1]
|
||||
return sts, text
|
@ -1,17 +1,15 @@
|
||||
Index: SourceCheck.py
|
||||
===================================================================
|
||||
--- SourceCheck.py.orig
|
||||
--- SourceCheck.py
|
||||
+++ SourceCheck.py
|
||||
@@ -17,7 +17,7 @@ import Config
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
DEFAULT_VALID_SRC_PERMS = (0644, 0755)
|
||||
|
||||
-source_regex = re.compile('\\.(tar|patch|tgz|diff)$')
|
||||
+source_regex = re.compile('\\.(tar|patch|tar\.gz|tgz|diff)$')
|
||||
use_bzip2 = Config.getOption('UseBzip2', 1)
|
||||
+source_regex = re.compile('\\.(tar|patch|tgz|tar\.gz|diff)$')
|
||||
use_bzip2 = Config.getOption('UseBzip2', True)
|
||||
valid_src_perms = Config.getOption("ValidSrcPerms", DEFAULT_VALID_SRC_PERMS)
|
||||
|
||||
@@ -40,7 +40,7 @@ class SourceCheck(AbstractCheck.Abstract
|
||||
@@ -40,7 +40,7 @@
|
||||
printError(pkg, 'multiple-specfiles', spec_file, fname)
|
||||
else:
|
||||
spec_file = fname
|
||||
@ -20,7 +18,7 @@ Index: SourceCheck.py
|
||||
if use_bzip2:
|
||||
if not fname.endswith('.bz2'):
|
||||
printWarning(pkg, 'source-or-patch-not-bzipped', fname)
|
||||
@@ -61,7 +61,9 @@ all your RPM information.''',
|
||||
@@ -61,7 +61,9 @@
|
||||
|
||||
'source-or-patch-not-bzipped',
|
||||
'''A source archive or file in your package is not bzipped (doesn't
|
||||
|
@ -1,8 +1,6 @@
|
||||
Index: BinariesCheck.py
|
||||
===================================================================
|
||||
--- BinariesCheck.py.orig
|
||||
--- BinariesCheck.py
|
||||
+++ BinariesCheck.py
|
||||
@@ -39,6 +39,8 @@ class BinaryInfo:
|
||||
@@ -39,6 +39,8 @@
|
||||
debug_file_regex = re.compile('\.debug$')
|
||||
exit_call_regex = re.compile('\s+FUNC\s+.*?\s+(_?exit(?:@\S+)?)(?:\s|$)')
|
||||
fork_call_regex = re.compile('\s+FUNC\s+.*?\s+(fork(?:@\S+)?)(?:\s|$)')
|
||||
@ -10,18 +8,18 @@ Index: BinariesCheck.py
|
||||
+ symtab_regex=re.compile('^\s+\[\s*\d+\]\s+\.symtab\s+')
|
||||
|
||||
def __init__(self, pkg, path, file, is_ar, is_shlib):
|
||||
self.readelf_error = 0
|
||||
@@ -53,6 +55,8 @@ class BinaryInfo:
|
||||
self.exec_stack = 0
|
||||
self.readelf_error = False
|
||||
@@ -53,6 +55,8 @@
|
||||
self.exec_stack = False
|
||||
self.exit_calls = []
|
||||
fork_called = 0
|
||||
fork_called = False
|
||||
+ self.debuginfo = 0
|
||||
+ self.symtab=0
|
||||
self.tail = ''
|
||||
|
||||
is_debug = BinaryInfo.debug_file_regex.search(path)
|
||||
@@ -105,6 +109,14 @@ class BinaryInfo:
|
||||
fork_called = 1
|
||||
@@ -105,6 +109,14 @@
|
||||
fork_called = True
|
||||
continue
|
||||
|
||||
+ if BinaryInfo.debuginfo_regex.search(l):
|
||||
@ -35,7 +33,7 @@ Index: BinariesCheck.py
|
||||
if self.non_pic:
|
||||
self.non_pic = BinaryInfo.non_pic_regex.search(res[1])
|
||||
|
||||
@@ -260,6 +272,17 @@ class BinariesCheck(AbstractCheck.Abstra
|
||||
@@ -260,6 +272,17 @@
|
||||
bin_info = BinaryInfo(
|
||||
pkg, pkgfile.path, fname, is_ar, is_shlib)
|
||||
|
||||
@ -53,7 +51,7 @@ Index: BinariesCheck.py
|
||||
# so name in library
|
||||
if is_shlib:
|
||||
has_lib = True
|
||||
@@ -488,6 +511,14 @@ with the intended shared libraries only.
|
||||
@@ -491,6 +514,14 @@
|
||||
'ldd-failed',
|
||||
'''Executing ldd on this file failed, all checks could not be run.''',
|
||||
|
||||
|
@ -1,4 +1,6 @@
|
||||
--- BinariesCheck.py
|
||||
Index: BinariesCheck.py
|
||||
===================================================================
|
||||
--- BinariesCheck.py.orig
|
||||
+++ BinariesCheck.py
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
@ -8,10 +10,10 @@
|
||||
|
||||
import rpm
|
||||
|
||||
@@ -252,7 +253,9 @@
|
||||
@@ -265,7 +266,9 @@ class BinariesCheck(AbstractCheck.Abstra
|
||||
|
||||
# stripped ?
|
||||
if not unstrippable.search(fname) and not is_ocaml_native:
|
||||
if not is_ocaml_native and not unstrippable.search(fname):
|
||||
- if not_stripped.search(pkgfile.magic):
|
||||
+ if not_stripped.search(pkgfile.magic) and \
|
||||
+ (os.environ.get('BUILD_IS_RUNNING', None) == None or \
|
||||
|
@ -1,11 +0,0 @@
|
||||
--- FilesCheck.py
|
||||
+++ FilesCheck.py
|
||||
@@ -989,7 +989,7 @@ class FilesCheck(AbstractCheck.AbstractCheck):
|
||||
if res:
|
||||
if not (pkg.check_versioned_dep('python-base', res.group(1)) or
|
||||
pkg.check_versioned_dep('python', res.group(1))):
|
||||
- printError(pkg, 'no-dependency-on', 'python-base', res.group(1))
|
||||
+ printError(pkg, 'no-dependency-on', 'python', res.group(1))
|
||||
python_dep_error=1
|
||||
|
||||
# normal executable check
|
@ -2,9 +2,9 @@ Index: SpecCheck.py
|
||||
===================================================================
|
||||
--- SpecCheck.py.orig
|
||||
+++ SpecCheck.py
|
||||
@@ -387,6 +387,10 @@ class SpecCheck(AbstractCheck.AbstractCh
|
||||
for obs in unversioned(deptokens(res.group(1))):
|
||||
printWarning(pkg, 'unversioned-explicit-obsoletes', obs)
|
||||
@@ -420,6 +420,10 @@ class SpecCheck(AbstractCheck.AbstractCh
|
||||
printWarning(pkg, 'comparison-operator-in-deptoken',
|
||||
conf)
|
||||
|
||||
+ if current_section in ('post', 'postun'):
|
||||
+ if line.find('%run_ldconfig') != -1:
|
||||
@ -13,7 +13,7 @@ Index: SpecCheck.py
|
||||
if current_section == 'changelog':
|
||||
res = macro_regex.search(line)
|
||||
if res and len(res.group(1)) % 2:
|
||||
@@ -602,6 +606,14 @@ will break short circuiting.''',
|
||||
@@ -635,6 +639,14 @@ will break short circuiting.''',
|
||||
'''Make check or other automated regression test should be run in %check, as
|
||||
they can be disabled with a rpm macro for short circuiting purposes.''',
|
||||
|
||||
|
@ -1,6 +1,8 @@
|
||||
--- SpecCheck.py
|
||||
Index: SpecCheck.py
|
||||
===================================================================
|
||||
--- SpecCheck.py.orig
|
||||
+++ SpecCheck.py
|
||||
@@ -53,6 +53,7 @@
|
||||
@@ -53,6 +53,7 @@ libdir_regex = re.compile('%{?_lib(?:dir
|
||||
comment_or_empty_regex = re.compile('^\s*(#|$)')
|
||||
defattr_regex = re.compile('^\s*%defattr\\b')
|
||||
attr_regex = re.compile('^\s*%attr\\b')
|
||||
@ -8,7 +10,7 @@
|
||||
section_regexs = dict(
|
||||
([x, re.compile('^%' + x + '(?:\s|$)')]
|
||||
for x in ('build', 'changelog', 'check', 'clean', 'description', 'files',
|
||||
@@ -359,6 +360,12 @@
|
||||
@@ -363,6 +364,12 @@ class SpecCheck(AbstractCheck.AbstractCh
|
||||
if res:
|
||||
package_noarch[current_package] = True
|
||||
|
||||
@ -21,7 +23,7 @@
|
||||
res = prereq_regex.search(line)
|
||||
if res:
|
||||
printError(pkg, 'prereq-use', res.group(2))
|
||||
@@ -645,6 +652,15 @@
|
||||
@@ -673,6 +680,15 @@ set which may result in security issues
|
||||
depending on the system where the package is built. Add default attributes
|
||||
using %defattr before it in the %files section, or use per line %attr's.''',
|
||||
|
||||
|
@ -1,6 +1,8 @@
|
||||
--- BinariesCheck.py
|
||||
Index: BinariesCheck.py
|
||||
===================================================================
|
||||
--- BinariesCheck.py.orig
|
||||
+++ BinariesCheck.py
|
||||
@@ -165,6 +165,7 @@
|
||||
@@ -177,6 +177,7 @@ path_regex = re.compile('(.*/)([^/]+)')
|
||||
numeric_dir_regex = re.compile('/usr(?:/share)/man/man./(.*)\.[0-9](?:\.gz|\.bz2)')
|
||||
versioned_dir_regex = re.compile('[^.][0-9]')
|
||||
usr_share = re.compile('^/usr/share/')
|
||||
@ -8,7 +10,7 @@
|
||||
etc = re.compile('^/etc/')
|
||||
not_stripped = re.compile('not stripped')
|
||||
unstrippable = re.compile('\.o$|\.static$')
|
||||
@@ -239,7 +240,7 @@
|
||||
@@ -251,7 +252,7 @@ class BinariesCheck(AbstractCheck.Abstra
|
||||
printError(pkg, 'arch-independent-package-contains-binary-or-object', fname)
|
||||
else:
|
||||
# in /usr/share ?
|
||||
|
@ -1,6 +1,8 @@
|
||||
--- MenuXDGCheck.py
|
||||
Index: MenuXDGCheck.py
|
||||
===================================================================
|
||||
--- MenuXDGCheck.py.orig
|
||||
+++ MenuXDGCheck.py
|
||||
@@ -16,7 +16,8 @@
|
||||
@@ -17,7 +17,8 @@ class MenuXDGCheck(AbstractCheck.Abstrac
|
||||
# desktop file need to be in $XDG_DATA_DIRS
|
||||
# $ echo $XDG_DATA_DIRS/applications
|
||||
# /var/lib/menu-xdg:/usr/share
|
||||
|
@ -1,11 +1,11 @@
|
||||
--- TagsCheck.py
|
||||
--- TagsCheck.py.orig
|
||||
+++ TagsCheck.py
|
||||
@@ -669,7 +669,7 @@
|
||||
@@ -674,7 +674,7 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
printWarning(pkg, 'no-url-tag')
|
||||
|
||||
obs_names = [x[0] for x in pkg.obsoletes()]
|
||||
- prov_names = [x[0] for x in pkg.provides()]
|
||||
+ prov_names = [x[0].split(':/')[0] for x in pkg.provides()]
|
||||
|
||||
if pkg.name in obs_names:
|
||||
printError(pkg, 'obsolete-on-name')
|
||||
for o in obs_names:
|
||||
if o not in prov_names:
|
||||
|
Loading…
Reference in New Issue
Block a user