SHA256
1
0
forked from pool/rpmlint
OBS User unknown
2008-11-18 12:33:47 +00:00
committed by Git OBS Bridge
parent b86bedd5a6
commit 60d7135645
13 changed files with 155 additions and 66 deletions

View File

@@ -85,6 +85,17 @@ class BrandingPolicyCheck(AbstractCheck.AbstractCheck):
branding_provide=p branding_provide=p
break break
# check for Conflicts: otherproviders(kde4-kdm-branding)
conflict_prop = "otherproviders(%s)" % (generic_branding)
have_conflict_prop = False
for c in pkg_conflicts:
if c[0] == conflict_prop:
have_conflict_prop = True
break
if not have_conflict_prop:
printError(pkg,'suse-branding-missing-conflicts', conflict_prop)
if not branding_provide: if not branding_provide:
printError(pkg,'suse-branding-no-branding-provide') printError(pkg,'suse-branding-no-branding-provide')
else: else:
@@ -108,5 +119,9 @@ if Config.info:
'suse-branding-supplement-missing', 'suse-branding-supplement-missing',
"""branding packages should provide a supplemnent in the form """branding packages should provide a supplemnent in the form
Supplements: packageand(basepackage:branding-<flavour>) Supplements: packageand(basepackage:branding-<flavour>)
""" """,
'suse-branding-missing-conflicts',
"""Any branding flavor package that provides the generic branding
must also conflict with all other branding packages via a special
otherproviders()""",
) )

View File

@@ -38,6 +38,21 @@ _kde4_pimlibs=(
"libsyndication.so.4" "libsyndication.so.4"
) )
_kde4_libkdepim4 = (
"libkdepim.so.4",
"libkontactinterfaces.so.4",
"libkleopatraclientcore.so.0.2.0",
"libkleopatraclientgui.so.0.2.0",
)
_kde4_libakonadi4 = (
"libakonadi-kde.so.4",
"libakonadi-kabc.so.4",
"libakonadi-kcal.so.4",
"libakonadi-kmime.so.4",
"libakonadiprotocolinternals.so.1",
)
class KDE4Check(AbstractCheck.AbstractCheck): class KDE4Check(AbstractCheck.AbstractCheck):
def __init__(self): def __init__(self):
AbstractCheck.AbstractCheck.__init__(self, "KDE4Check") AbstractCheck.AbstractCheck.__init__(self, "KDE4Check")
@@ -62,11 +77,34 @@ class KDE4Check(AbstractCheck.AbstractCheck):
kdepimlibs4_dep=True kdepimlibs4_dep=True
break break
libkdepim4_dep=False
for r in pkg_requires:
if r in _kde4_libkdepim4:
libkdepim4_dep =True
break
libakonadi4_dep=False
for r in pkg_requires:
if r in _kde4_libakonadi4:
libakonadi4_dep =True
break
if not pkg.name.startswith("lib"): if not pkg.name.startswith("lib"):
if "libkdepimlibs4" in pkg_requires and not kdepimlibs4_dep: if "kdepimlibs4" in pkg_requires and not kdepimlibs4_dep:
printError(pkg,"suse-kde4-excessive-pimlibs-dependency") printError(pkg,"suse-kde4-excessive-dependency", "%kde4_pimlibs_requires")
if not "libkdepimlibs4" in pkg_requires and kdepimlibs4_dep: if not "kdepimlibs4" in pkg_requires and kdepimlibs4_dep:
printError(pkg,"suse-kde4-missing-pimlibs-dependency") printError(pkg,"suse-kde4-missing-dependency", "%kde4_pimlibs_requires")
if "libkdepim4" in pkg_requires and not libkdepim4_dep:
printError(pkg,"suse-kde4-excessive-dependency", "libkdepim4")
if not "libkdepim4" in pkg_requires and libkdepim4_dep:
printError(pkg,"suse-kde4-missing-dependency", "libkdepim4")
if "akonadi-runtime" in pkg_requires and not libakonadi4_dep:
printError(pkg,"suse-kde4-excessive-dependency", "%kde4_akonadi_requires")
if not "akonadi-runtime" in pkg_requires and libakonadi4_dep:
printError(pkg,"suse-kde4-missing-dependency", "%kde4_akonadi_requires")
check=KDE4Check() check=KDE4Check()

View File

@@ -21,6 +21,16 @@ class PkgConfigCheck(AbstractCheck.AbstractFilesCheck):
#self.suspicious_dir=re.compile('(?:/usr/src/\w+/BUILD|/var/tmp|/tmp|/home|\@\w{1,50}\@)') #self.suspicious_dir=re.compile('(?:/usr/src/\w+/BUILD|/var/tmp|/tmp|/home|\@\w{1,50}\@)')
self.suspicious_dir=re.compile('(?:/usr/src/\w+/BUILD|/var/tmp|/tmp|/home)') self.suspicious_dir=re.compile('(?:/usr/src/\w+/BUILD|/var/tmp|/tmp|/home)')
def check(self, pkg):
# check for references to /lib when in lib64 mode
if pkg.arch in ('x86_64', 'ppc64', 's390x'):
self.wronglib_dir=re.compile('-L/usr/lib\\b')
else:
self.wronglib_dir=re.compile('-L/usr/lib64\\b')
AbstractCheck.AbstractFilesCheck.check(self, pkg)
def check_file(self, pkg, filename): def check_file(self, pkg, filename):
if pkg.isSource(): if pkg.isSource():
return return
@@ -28,6 +38,11 @@ class PkgConfigCheck(AbstractCheck.AbstractFilesCheck):
if pkg.grep(self.suspicious_dir, filename): if pkg.grep(self.suspicious_dir, filename):
printError(pkg, "invalid-pkgconfig-file", filename) printError(pkg, "invalid-pkgconfig-file", filename)
pc_file=file(pkg.dirName() + "/" + filename, "r")
for l in pc_file:
if l.startswith('Libs:') and self.wronglib_dir.search(l):
printError(pkg, 'pkgconfig-invalid-libs-dir', filename, l)
check=PkgConfigCheck() check=PkgConfigCheck()
if Config.info: if Config.info:
@@ -39,5 +54,9 @@ if Config.info:
- it references invalid paths (e.g. /home or /tmp) - it references invalid paths (e.g. /home or /tmp)
Please double-check and report false positives. Please double-check and report false positives.
''' ''',
'pkgconfig-invalid-libs-dir',
''' Your .pc file contains -L/usr/lib or -L/lib and is built for a lib64 target,
or contains references to -L/usr/lib64 or -L/lib64 and is built for a lib target.
Please remove the wrong library paths from the pc file.'''
) )

View File

@@ -29,16 +29,20 @@ class DesktopCheck(AbstractCheck.AbstractFilesCheck):
printWarning(pkg, "read-error", e) printWarning(pkg, "read-error", e)
return 0 return 0
found_desktop_group=False
for line in f: for line in f:
if line.startswith('X-SuSE-translate='): if line.startswith('X-SuSE-translate='):
return return
printWarning(pkg, "untranslated-desktop-file", filename) if line.startswith('[Desktop Entry]'):
found_desktop_group=True
if found_desktop_group:
printWarning(pkg, "untranslated-desktop-file", filename)
check=DesktopCheck() check=DesktopCheck()
if Config.info: if Config.info:
addDetails( addDetails(
'untranslated-desktop-file', 'untranslated-desktop-file',
"""Your desktop file hasn't been handled by suse_update_desktop.sh. """Your desktop file hasn't been handled by %suse_update_desktop_file
Please use it to make the desktop file translate-able by Novell translations.""" Please use it to make the desktop file translate-able by Novell translations."""
) )

View File

@@ -5,7 +5,7 @@
includefile_regex=re.compile('\.(c|h|a|cmi)$') includefile_regex=re.compile('\.(c|h|a|cmi)$')
buildconfigfile_regex=re.compile('(\.pc|/bin/.+-config)$') buildconfigfile_regex=re.compile('(\.pc|/bin/.+-config)$')
+docdir_examples_regex=re.compile('^/usr/(?:share/doc/packages|lib(?:64))/[^/]+/(?:example|demo|script|contrib)') +docdir_examples_regex=re.compile('^/usr/(?:share/doc/packages|lib(?:64))/[^/]+/(?:example|demo|script|contrib)')
sofile_regex=re.compile('/lib(64)?(?:/.+)?/lib[^/]+\.so$') sofile_regex=re.compile('/lib(64)?/(.+/)?lib[^/]+\.so$')
devel_regex=re.compile('(.*)-(debug(info)?|devel|source|static)$') devel_regex=re.compile('(.*)-(debug(info)?|devel|source|static)$')
debuginfo_package_regex=re.compile('-debug(info)?$') debuginfo_package_regex=re.compile('-debug(info)?$')
@@ -990,7 +991,7 @@ @@ -990,7 +991,7 @@

View File

@@ -1,14 +0,0 @@
--- SpecCheck.py
+++ SpecCheck.py
@@ -342,9 +342,9 @@ class SpecCheck(AbstractCheck.AbstractCh
(ifarch_regex.search(line) or if_regex.search(line) or
endif_regex.search(line)):
if defattr_regex.search(line):
- files_has_defattr = 1;
+ files_has_defattr = 1;
elif not (files_has_defattr or attr_regex.search(line)):
- printError(pkg, 'files-attr-not-set')
+ printError(pkg, 'files-attr-not-set')
# TODO: check scriptlets for these too
if current_section == 'files' and noarch:

View File

@@ -1,11 +0,0 @@
--- BinariesCheck.py
+++ BinariesCheck.py
@@ -341,7 +341,7 @@ class BinariesCheck(AbstractCheck.Abstra
if bin_info.stack:
if bin_info.exec_stack:
printWarning(pkg, 'executable-stack', i[0])
- else:
+ elif pkg.arch != 'ia64' and pkg.arch != 'ppc64':
printError(pkg, 'missing-PT_GNU_STACK-section', i[0])
else:

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a4bb8e93c14e86c7d0d2774bcb9147f5de54e117dd573e989f45a927feffd29d
size 81991

3
rpmlint-0.84.tar.bz2 Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:549feb0da65719327afef7d30481111624379faadf0493d63151a9f517489869
size 82164

View File

@@ -1,3 +1,13 @@
-------------------------------------------------------------------
Fri Nov 7 15:53:11 CET 2008 - dmueller@suse.de
- add check for otherproviders() in branding packages
- correct kde4 related dependency checkers to not give false advises
- check for wrong-arch references in pkgconfig files (graphviz)
- lower false positives of untranslated-desktop files check
- support for checking .comment.SUSE.OPTs. real check has been
left out for now
------------------------------------------------------------------- -------------------------------------------------------------------
Tue Nov 4 14:45:40 CET 2008 - lnussel@suse.de Tue Nov 4 14:45:40 CET 2008 - lnussel@suse.de
@@ -8,6 +18,13 @@ Tue Oct 28 10:00:09 CET 2008 - lnussel@suse.de
- add check for /etc/permissions violations - add check for /etc/permissions violations
-------------------------------------------------------------------
Fri Oct 3 19:50:23 CEST 2008 - dmueller@suse.de
- update to 0.84:
* remove upstreamed patches
* no significant changes
------------------------------------------------------------------- -------------------------------------------------------------------
Wed Sep 3 13:58:22 CEST 2008 - dmueller@suse.de Wed Sep 3 13:58:22 CEST 2008 - dmueller@suse.de

View File

@@ -1,5 +1,5 @@
# #
# spec file for package rpmlint (Version 0.83) # spec file for package rpmlint (Version 0.84)
# #
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany. # Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
# #
@@ -21,8 +21,8 @@
Name: rpmlint Name: rpmlint
BuildRequires: rpm-python BuildRequires: rpm-python
Summary: Rpm correctness checker Summary: Rpm correctness checker
Version: 0.83 Version: 0.84
Release: 43 Release: 2
Source0: %{name}-%{version}.tar.bz2 Source0: %{name}-%{version}.tar.bz2
Source1: config Source1: config
Source1001: config.in Source1001: config.in
@@ -62,7 +62,6 @@ Patch11: suse-spec-bzip2.diff
Patch12: usr-arch.diff Patch12: usr-arch.diff
Patch13: script-interpreter-only-for-exec-scripts.diff Patch13: script-interpreter-only-for-exec-scripts.diff
Patch14: sourced-dirs.diff Patch14: sourced-dirs.diff
Patch15: subdir-dangling-symlink.diff
Patch16: dependency-parsing.diff Patch16: dependency-parsing.diff
Patch17: docdata-examples.diff Patch17: docdata-examples.diff
Patch18: suse-hide-unstripped-outside-build.diff Patch18: suse-hide-unstripped-outside-build.diff
@@ -95,16 +94,15 @@ Patch54: locale-update.diff
Patch57: suse-mono-deps-checks.diff Patch57: suse-mono-deps-checks.diff
Patch58: add-weak-dependencies.diff Patch58: add-weak-dependencies.diff
Patch60: selfconflicts-provide.diff Patch60: selfconflicts-provide.diff
Patch61: fix-tabs-indenting.diff
Patch62: no-badness-return.diff Patch62: no-badness-return.diff
Patch63: suse-factory-config.diff Patch63: suse-factory-config.diff
Patch64: pt-gnu-stack.diff
Patch65: suse-shlib-devel-dependency.diff Patch65: suse-shlib-devel-dependency.diff
Patch66: suse-no-python-base.diff Patch66: suse-no-python-base.diff
Patch67: suse-required-lsb-tags.diff Patch67: suse-required-lsb-tags.diff
Patch68: more-verbose-lsb-check.diff Patch68: more-verbose-lsb-check.diff
Patch69: useless-requires-doc.diff Patch69: useless-requires-doc.diff
Patch70: subprocess-support.diff Patch70: subprocess-support.diff
Patch71: suse-binary-info-compile-opts.diff
%py_requires %py_requires
%description %description
@@ -135,7 +133,6 @@ Authors:
%patch12 %patch12
%patch13 %patch13
%patch14 %patch14
%patch15
%patch16 %patch16
%patch17 %patch17
%patch18 %patch18
@@ -168,16 +165,15 @@ Authors:
%patch57 %patch57
%patch58 %patch58
%patch60 %patch60
%patch61
%patch62 %patch62
%patch63 %patch63
%patch64
%patch65 %patch65
%patch66 %patch66
%patch67 %patch67
%patch68 %patch68
%patch69 %patch69
%patch70 %patch70
%patch71
cp -p %{SOURCE1} . cp -p %{SOURCE1} .
cp -p %{SOURCE2} . cp -p %{SOURCE2} .
cp -p %{SOURCE3} . cp -p %{SOURCE3} .
@@ -218,13 +214,24 @@ rm -rf $RPM_BUILD_ROOT
/usr/share/man/man1/rpmlint.1.gz /usr/share/man/man1/rpmlint.1.gz
%changelog %changelog
* Fri Nov 07 2008 dmueller@suse.de
- add check for otherproviders() in branding packages
- correct kde4 related dependency checkers to not give false advises
- check for wrong-arch references in pkgconfig files (graphviz)
- lower false positives of untranslated-desktop files check
- support for checking .comment.SUSE.OPTs. real check has been
left out for now
* Tue Nov 04 2008 lnussel@suse.de * Tue Nov 04 2008 lnussel@suse.de
- generate a different error for directories with setuid/setgid bit - generate a different error for directories with setuid/setgid bit
* Tue Oct 28 2008 lnussel@suse.de * Tue Oct 28 2008 lnussel@suse.de
- add check for /etc/permissions violations - add check for /etc/permissions violations
* Fri Oct 03 2008 dmueller@suse.de
- update to 0.84:
* remove upstreamed patches
* no significant changes
* Wed Sep 03 2008 dmueller@suse.de * Wed Sep 03 2008 dmueller@suse.de
- add description for useless-explicit-requires (bnc#405887) - add description for useless-explicit-requires (bnc#405887)
* Thu Aug 21 2008 dmueller@suse.de * Wed Aug 20 2008 dmueller@suse.de
- rediff patch - rediff patch
* Mon Aug 18 2008 schwab@suse.de * Mon Aug 18 2008 schwab@suse.de
- Fix name of completions file. - Fix name of completions file.
@@ -247,7 +254,7 @@ rm -rf $RPM_BUILD_ROOT
- also read /etc/rpmlint/factory.config - also read /etc/rpmlint/factory.config
* Fri Jun 27 2008 dmueller@suse.de * Fri Jun 27 2008 dmueller@suse.de
- fix typo in suse-version check - fix typo in suse-version check
* Mon Jun 23 2008 dmueller@suse.de * Sun Jun 22 2008 dmueller@suse.de
- update to 0.83: - update to 0.83:
* removed upstreamed patches * removed upstreamed patches
* a couple of new checks, bugfixes * a couple of new checks, bugfixes
@@ -388,7 +395,7 @@ rm -rf $RPM_BUILD_ROOT
- fix hardlink check for /bin - fix hardlink check for /bin
* Sat Sep 01 2007 schwab@suse.de * Sat Sep 01 2007 schwab@suse.de
- Fix last change. - Fix last change.
* Sat Sep 01 2007 dmueller@suse.de * Fri Aug 31 2007 dmueller@suse.de
- fix off-by-one in hardlink check - fix off-by-one in hardlink check
* Fri Aug 31 2007 dmueller@suse.de * Fri Aug 31 2007 dmueller@suse.de
- fix exception in DuplicatesCheck - fix exception in DuplicatesCheck
@@ -435,7 +442,7 @@ rm -rf $RPM_BUILD_ROOT
- its also a devel package if it provides a -devel subpackage (#289735) - its also a devel package if it provides a -devel subpackage (#289735)
* Wed Jul 04 2007 dmueller@suse.de * Wed Jul 04 2007 dmueller@suse.de
- suppress %%config check for now (#286231) - suppress %%config check for now (#286231)
* Wed Jun 27 2007 dmueller@suse.de * Tue Jun 26 2007 dmueller@suse.de
- fix typo in devel-rpmgroup check - fix typo in devel-rpmgroup check
* Mon Jun 25 2007 dmueller@suse.de * Mon Jun 25 2007 dmueller@suse.de
- another update list of legacy packages - another update list of legacy packages
@@ -500,7 +507,7 @@ rm -rf $RPM_BUILD_ROOT
- add description for missing lsb tags check - add description for missing lsb tags check
- fix obsolete-not-provided for yast2-provides - fix obsolete-not-provided for yast2-provides
- fix devel-file check matching module names (e.g. apache2) - fix devel-file check matching module names (e.g. apache2)
* Sat May 26 2007 dmueller@suse.de * Fri May 25 2007 dmueller@suse.de
- avoid spurious executable warnings for docdatadir/examples - avoid spurious executable warnings for docdatadir/examples
- add LibraryPolicy checker from Richard (warning only) - add LibraryPolicy checker from Richard (warning only)
- suppression update - suppression update
@@ -533,15 +540,15 @@ rm -rf $RPM_BUILD_ROOT
- Suppress devel-file-in-non-devel-package for systemtap (#277338) - Suppress devel-file-in-non-devel-package for systemtap (#277338)
- Make sure that the package fails if there is any syntax - Make sure that the package fails if there is any syntax
error anywhere error anywhere
* Wed May 23 2007 dmueller@suse.de * Tue May 22 2007 dmueller@suse.de
- typo fix - typo fix
* Tue May 22 2007 dmueller@suse.de * Tue May 22 2007 dmueller@suse.de
- update config - update config
* Sat May 19 2007 coolo@suse.de * Sat May 19 2007 coolo@suse.de
- add three more checks - add three more checks
* Fri May 18 2007 dmueller@suse.de * Thu May 17 2007 dmueller@suse.de
- update Duplicates Check to not crash on ghost files - update Duplicates Check to not crash on ghost files
* Wed May 16 2007 dmueller@suse.de * Tue May 15 2007 dmueller@suse.de
- suppress bzip2 related warnings - suppress bzip2 related warnings
- no documentation for lib packages - no documentation for lib packages
* Tue May 15 2007 coolo@suse.de * Tue May 15 2007 coolo@suse.de
@@ -562,7 +569,7 @@ rm -rf $RPM_BUILD_ROOT
* Fri May 04 2007 dmueller@suse.de * Fri May 04 2007 dmueller@suse.de
- remove check for usedforbuild tag. magic happens and - remove check for usedforbuild tag. magic happens and
it is created automatically it is created automatically
* Thu Apr 19 2007 dmueller@suse.de * Wed Apr 18 2007 dmueller@suse.de
- add spec checks for obsolete suse hacks - add spec checks for obsolete suse hacks
* Wed Apr 18 2007 dmueller@suse.de * Wed Apr 18 2007 dmueller@suse.de
- update to 0.80: - update to 0.80:

View File

@@ -1,11 +0,0 @@
--- FilesCheck.py
+++ FilesCheck.py
@@ -651,7 +651,7 @@
bin_regex=re.compile('^(/usr)?/s?bin/')
includefile_regex=re.compile('\.(c|h|a|cmi)$')
buildconfigfile_regex=re.compile('(\.pc|/bin/.+-config)$')
-sofile_regex=re.compile('/lib(64)?/[^/]+\.so$')
+sofile_regex=re.compile('/lib(64)?(?:/.+)?/lib[^/]+\.so$')
devel_regex=re.compile('(.*)-(debug(info)?|devel|source|static)$')
debuginfo_package_regex=re.compile('-debug(info)?$')
lib_regex=re.compile('lib(64)?/lib[^/]*\.so\..*')

View File

@@ -0,0 +1,25 @@
--- BinariesCheck.py
+++ BinariesCheck.py
@@ -51,10 +51,11 @@ class BinaryInfo:
self.exec_stack = 0
self.debuginfo=0
self.symtab=0
+ self.compileOpts=set()
is_debug=BinaryInfo.debug_file_regex.search(path)
- cmd = ['env', 'LC_ALL=C', 'readelf', '-W', '-S', '-l', '-d']
+ cmd = ['env', 'LC_ALL=C', 'readelf', '-W', '-S', '-l', '-d', '-p', '.comment.SUSE.OPTs']
cmd.append(path)
res = Pkg.getstatusoutput(cmd)
if not res[0]:
@@ -100,6 +101,9 @@ class BinaryInfo:
self.symtab=1
continue
+ if l.lower().find(" ospwg") != -1:
+ self.compileOpts.add(l.rpartition(' ')[2])
+
if self.non_pic:
self.non_pic=BinaryInfo.non_pic_regex.search(res[1])
else: