forked from pool/rpmlint
Accepting request 70781 from devel:openSUSE:Factory:rpmlint
- update legacy filter in shlib policy checker - new version 1.2 * Check outdated or misspelled FSF addresses in text files. OBS-URL: https://build.opensuse.org/request/show/70781 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/rpmlint?expand=0&rev=115
This commit is contained in:
commit
0327a46094
@ -20,88 +20,37 @@ import Pkg
|
||||
_policy_legacy_exceptions = (
|
||||
"libacl1",
|
||||
"libaio1",
|
||||
"libakode_mpeg_decoder",
|
||||
"libalut0",
|
||||
"libamso-rdmav2",
|
||||
"libapr-1-0",
|
||||
"libapr_dbd_mysql",
|
||||
"libapr_dbd_pgsql",
|
||||
"libapr_dbd_sqlite3",
|
||||
"libaprutil-1-0",
|
||||
"libapt-pkg-libc6_6-6-2",
|
||||
"libart_lgpl_2-2",
|
||||
"libartskde1",
|
||||
"libatm1",
|
||||
"libattr1",
|
||||
"libauthldap0",
|
||||
"libauthmysql0",
|
||||
"libauthpgsql0",
|
||||
"libauthpipe0",
|
||||
"libauthuserdb0",
|
||||
"libcairo2",
|
||||
"libcairomm-1_0-1",
|
||||
"libcap1",
|
||||
"libcasakwallet1",
|
||||
"libc-client2006c1_suse",
|
||||
"libccrtp1-1_5-0",
|
||||
"libcdaudio1",
|
||||
"libcdk4",
|
||||
"libcheck0",
|
||||
"libchewing3",
|
||||
"libchm0",
|
||||
"libclalsadrv1",
|
||||
"libclthreads2",
|
||||
"libclucene0",
|
||||
"libclxclient3",
|
||||
"libcole2",
|
||||
"libcppunit-1_10-2",
|
||||
"libdar4",
|
||||
"libdbh-4_5-4",
|
||||
"libdb_java-4_3",
|
||||
"libdbus-glib-1-2",
|
||||
"libdbus-qt-1-1",
|
||||
"libdc0",
|
||||
"libdm0",
|
||||
"libdns_sd1",
|
||||
"libdrm2",
|
||||
"libdts0",
|
||||
"libdvdcss2",
|
||||
"libdvdnav4",
|
||||
"libebml0",
|
||||
"libefence0",
|
||||
"libEMF1",
|
||||
"libevent-1_3b1",
|
||||
"libevolutionglue",
|
||||
"libexif12",
|
||||
"libexif9",
|
||||
"libexif-gtk4",
|
||||
"libexiv2-0",
|
||||
"libf2c0",
|
||||
"libffi4",
|
||||
"libflaim5_2",
|
||||
"libFnlib0",
|
||||
"libfontenc1",
|
||||
"libfreebob0",
|
||||
"libfreeradius-client2",
|
||||
"libfreetype6",
|
||||
"libftgl0",
|
||||
"libg2banking2",
|
||||
"libg2c0",
|
||||
"libgadu3",
|
||||
"libgalago3",
|
||||
"libgalago-gtk1",
|
||||
"libganglia1",
|
||||
"libgcc_s1",
|
||||
"libgcc_s4", # only for hppa
|
||||
"libgconfmm-2_6-1",
|
||||
"libgdome0",
|
||||
"libghttp1",
|
||||
"libgfortran3",
|
||||
"libgif4",
|
||||
"libgimpprint1",
|
||||
"libgfortran1", # gcc41
|
||||
"libglade-2_0-0",
|
||||
"libgladesharpglue-2",
|
||||
"libgle3",
|
||||
"libglibsharpglue-2",
|
||||
"libgltt0",
|
||||
"libglut3",
|
||||
@ -109,9 +58,7 @@ _policy_legacy_exceptions = (
|
||||
"libgmcop1",
|
||||
"libgnet-2_0-0",
|
||||
"libgnomecanvasmm-2_6-1",
|
||||
"libgnomecanvaspixbuf1",
|
||||
"libgnomecups-1_0-1",
|
||||
"libgnome-keyring0",
|
||||
"libgnomemm-2_6-1",
|
||||
"libgnomeprintui-2-2-0",
|
||||
"libgnomesharpglue-2",
|
||||
@ -119,185 +66,61 @@ _policy_legacy_exceptions = (
|
||||
"libgomp1",
|
||||
"libgsfglue",
|
||||
"libgsf-gnome-1-114",
|
||||
"libgssapi2",
|
||||
"libgtkgl4",
|
||||
"libgtkhtml-2-0",
|
||||
"libgtksourceview-1_0-0",
|
||||
"libgtkspell0",
|
||||
"libgtkxmhtml1",
|
||||
"libhandle1",
|
||||
"libhangul0",
|
||||
"libHermes1",
|
||||
"libibcm1",
|
||||
"libibverbs1",
|
||||
"libICE6",
|
||||
"libid3-3_8-3",
|
||||
"libid3tag0",
|
||||
"libieee1284-3",
|
||||
"libIDL-2-0",
|
||||
"libidmef0",
|
||||
"libidn11",
|
||||
"libiec61883-0",
|
||||
"libieee1284-3",
|
||||
"libilbc0",
|
||||
"libind_helper0",
|
||||
"libiniparser0",
|
||||
"libInternalSymbols1",
|
||||
"libipathverbs-rdmav2",
|
||||
"libiterm1",
|
||||
"libjackasyn0",
|
||||
"libjasper1",
|
||||
"libJNIChangeHat1",
|
||||
"libjpeg62",
|
||||
"libkakasi2",
|
||||
"libkbanking1",
|
||||
"libkcddb5",
|
||||
"libkcompactdisc1",
|
||||
"libkdegames5",
|
||||
"libkexiv2-1",
|
||||
"libkeyutils1",
|
||||
"libksba8",
|
||||
"libkscan1",
|
||||
"libktoblzcheck1",
|
||||
"libkxmleditorpart1",
|
||||
"liblash2",
|
||||
"libldapcpp0",
|
||||
"liblite0",
|
||||
"liblo0",
|
||||
"libloudmouth-1-0",
|
||||
"libltdl3",
|
||||
"liblua5_1",
|
||||
"liblzo2-2",
|
||||
"libmad0",
|
||||
"libmal0",
|
||||
"libmatroska0",
|
||||
"libmcrypt4",
|
||||
"libmdbodbc0",
|
||||
"libmeanwhile1",
|
||||
"libmemcache0",
|
||||
"libmhash2",
|
||||
"libmikmod2",
|
||||
"libmng1",
|
||||
"libmono-profiler-heap-buddy0",
|
||||
"libmp3lame0",
|
||||
"libmpcdec3",
|
||||
"libmpeg-0_3_0", # kdemultimedia3-mad
|
||||
"libmsrpc0",
|
||||
"libmthca-rdmav2",
|
||||
"libnasl2",
|
||||
"libneon24",
|
||||
"libnet0",
|
||||
"libnet6-1_3-0",
|
||||
"libnfsidmap0",
|
||||
"libnl1",
|
||||
"libnm_glib0",
|
||||
"libnm-novellvpn-properties0",
|
||||
"libnm-openvpn-properties0",
|
||||
"libnm-vpnc-properties0",
|
||||
"libnscd1",
|
||||
"libnvtvsimple0",
|
||||
"libobby-0_4-0",
|
||||
"libobjc1",
|
||||
"libobjc2",
|
||||
"libobjc3",
|
||||
"libodbcinstQ1",
|
||||
"liboggz1",
|
||||
"liboil-0_3-0",
|
||||
"libol-0_3_18",
|
||||
"liboop4",
|
||||
"libopal2_2",
|
||||
"libopenal0",
|
||||
"libopencdk8",
|
||||
"libopenobex1",
|
||||
"libopenobex-glib1",
|
||||
"libotf0",
|
||||
"libparagui-1_0-0",
|
||||
"libpathan3",
|
||||
"libpcap0",
|
||||
"libpcd2",
|
||||
"libpgeasy3",
|
||||
"libpoppler1",
|
||||
"libpopt0",
|
||||
"libportaudio2",
|
||||
"libpowersave11",
|
||||
"libpq++4",
|
||||
"libpri1_0",
|
||||
"libPropList0",
|
||||
"libpt1_10",
|
||||
"libpth20",
|
||||
"libpythonize0",
|
||||
"libqainternal0",
|
||||
"libqainternalperl0",
|
||||
"libqca1",
|
||||
"libqnotify0",
|
||||
"libqscintilla6",
|
||||
"libQt3Support4",
|
||||
"libqtc1",
|
||||
"libQtDBus4",
|
||||
"libqtsharp0",
|
||||
"libQtSql4",
|
||||
"libquadmath0",
|
||||
"librdf0",
|
||||
"librekall_driver_xbase245",
|
||||
"librekall_driver_sqlite3-245",
|
||||
"librekall_driver_pgsql245",
|
||||
"librekall_driver_mysql245",
|
||||
"librdmacm1",
|
||||
"librlog1",
|
||||
"librpcsecgss3",
|
||||
"librsync1",
|
||||
"libsamplerate0",
|
||||
"libsax7",
|
||||
"libSDL-1_2-0",
|
||||
"libSDL_gfx0",
|
||||
"libSDL_image-1_2-0",
|
||||
"libSDLmm-0_1-8",
|
||||
"libSDL_net-1_2-0",
|
||||
"libSDL_Pango1",
|
||||
"libSDL_ttf-2_0-0",
|
||||
"libsecprog0",
|
||||
"libserdisp1",
|
||||
"libsexy2",
|
||||
"libsigc-1_2-5",
|
||||
"libsigc-2_0-0",
|
||||
"libSM6",
|
||||
"libsmbclient0",
|
||||
"libsmbios1",
|
||||
"libsmbiosxml1",
|
||||
"libsmbsharemodes0",
|
||||
"libsmi2",
|
||||
"libsndfile1",
|
||||
"libsoup-2_2-8",
|
||||
"libspandsp0",
|
||||
"libspeex1",
|
||||
"libstartup-notification-1-0",
|
||||
"libstdc++5",
|
||||
"libstdc++6",
|
||||
"libstroke0",
|
||||
"libstunnel",
|
||||
"libsvg1",
|
||||
"libsvg-cairo1",
|
||||
"libswfdec-0_4-2",
|
||||
"libsynaptics0",
|
||||
"libsysfs2",
|
||||
"libtclsqlite3-0",
|
||||
"libtelepathy2",
|
||||
"libthai0",
|
||||
"libthinkfinger0",
|
||||
"libtidy-0_99-0",
|
||||
"libtomoe-gtk0",
|
||||
"libtonezone1_0",
|
||||
"libtre4",
|
||||
"libutempter0",
|
||||
"libvirt0",
|
||||
"libvisual-0_4-0",
|
||||
"libvolume_id0",
|
||||
"libvtesharpglue-2",
|
||||
"libwnck-1-18",
|
||||
"libwnn1",
|
||||
"libwv2-1",
|
||||
"libwx_gtk2u_gl-2_8-0",
|
||||
"libx86-1",
|
||||
"libXau6",
|
||||
"libxclass0_9_2",
|
||||
"libxcrypt1",
|
||||
"libXdmcp6",
|
||||
"libXext6",
|
||||
"libxfce4util4",
|
||||
@ -306,22 +129,14 @@ _policy_legacy_exceptions = (
|
||||
"libxflaim3_2",
|
||||
"libXiterm1",
|
||||
"libxkbfile1",
|
||||
"libxklavier11",
|
||||
"libxml1",
|
||||
"libxml2-2",
|
||||
"libxml++-2_6-2",
|
||||
"libXp6",
|
||||
"libXprintUtil1",
|
||||
"libxquery-1_2",
|
||||
"libXrender1",
|
||||
"libXt6",
|
||||
"libXv1",
|
||||
"libxvidcore4",
|
||||
"liby2storage2",
|
||||
"liby2util3",
|
||||
"libz1",
|
||||
"libzio0",
|
||||
"libzrtpcpp-0_9-0",
|
||||
"libzio0"
|
||||
)
|
||||
|
||||
_essential_dependencies = (
|
||||
@ -565,7 +380,8 @@ class LibraryPolicyCheck(AbstractCheck.AbstractCheck):
|
||||
if len(libs) == 1:
|
||||
soname = libs.copy().pop()
|
||||
libname = libname_from_soname (soname)
|
||||
if libname.startswith('lib') and pkg.name != libname:
|
||||
if libname.startswith('lib') and pkg.name != libname and \
|
||||
pkg.name != libname + "-mini":
|
||||
if libname in _policy_legacy_exceptions:
|
||||
printWarning(pkg, 'shlib-legacy-policy-name-error', libname)
|
||||
else:
|
||||
|
@ -2,7 +2,7 @@ Index: Pkg.py
|
||||
===================================================================
|
||||
--- Pkg.py.orig
|
||||
+++ Pkg.py
|
||||
@@ -429,6 +429,10 @@ class Pkg:
|
||||
@@ -425,6 +425,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:
|
||||
@@ -666,6 +670,22 @@ class Pkg:
|
||||
@@ -672,6 +676,22 @@ class Pkg:
|
||||
self._gatherDepInfo()
|
||||
return self._requires
|
||||
|
||||
@ -36,7 +36,7 @@ Index: Pkg.py
|
||||
def prereq(self):
|
||||
"""Get package PreReqs as list of
|
||||
(name, flags, (epoch, version, release)) tuples."""
|
||||
@@ -702,7 +722,7 @@ class Pkg:
|
||||
@@ -708,7 +728,7 @@ class Pkg:
|
||||
|
||||
# internal function to gather dependency info used by the above ones
|
||||
def _gather_aux(self, header, list, nametag, flagstag, versiontag,
|
||||
@ -45,7 +45,7 @@ Index: Pkg.py
|
||||
names = header[nametag]
|
||||
flags = header[flagstag]
|
||||
versions = header[versiontag]
|
||||
@@ -713,7 +733,11 @@ class Pkg:
|
||||
@@ -719,7 +739,11 @@ class Pkg:
|
||||
if prereq is not None and flags[loop] & PREREQ_FLAG:
|
||||
prereq.append((names[loop], flags[loop] & (~PREREQ_FLAG),
|
||||
evr))
|
||||
@ -58,7 +58,7 @@ Index: Pkg.py
|
||||
list.append((names[loop], flags[loop], evr))
|
||||
|
||||
def _gatherDepInfo(self):
|
||||
@@ -723,6 +747,10 @@ class Pkg:
|
||||
@@ -729,6 +753,10 @@ class Pkg:
|
||||
self._provides = []
|
||||
self._conflicts = []
|
||||
self._obsoletes = []
|
||||
@ -69,7 +69,7 @@ Index: Pkg.py
|
||||
|
||||
self._gather_aux(self.header, self._requires,
|
||||
rpm.RPMTAG_REQUIRENAME,
|
||||
@@ -742,6 +770,32 @@ class Pkg:
|
||||
@@ -748,6 +776,32 @@ class Pkg:
|
||||
rpm.RPMTAG_OBSOLETEFLAGS,
|
||||
rpm.RPMTAG_OBSOLETEVERSION)
|
||||
|
||||
|
@ -2,7 +2,7 @@ Index: FilesCheck.py
|
||||
===================================================================
|
||||
--- FilesCheck.py.orig
|
||||
+++ FilesCheck.py
|
||||
@@ -1679,7 +1679,10 @@ executed.''',
|
||||
@@ -1700,7 +1700,10 @@ executed.''',
|
||||
executed.''',
|
||||
|
||||
'wrong-script-interpreter',
|
||||
|
@ -2,7 +2,7 @@ Index: SpecCheck.py
|
||||
===================================================================
|
||||
--- SpecCheck.py.orig
|
||||
+++ SpecCheck.py
|
||||
@@ -619,7 +619,7 @@ versions you can ignore this warning.'''
|
||||
@@ -620,7 +620,7 @@ versions you can ignore this warning.'''
|
||||
|
||||
'hardcoded-path-in-buildroot-tag',
|
||||
'''A path is hardcoded in your Buildroot tag. It should be replaced
|
||||
|
@ -1,10 +1,10 @@
|
||||
# Confusing message. The problem is not that the file does not end
|
||||
# with ".spec", but that there is a mismatch of specname and pkg name.
|
||||
Index: rpmlint-1.1/SpecCheck.py
|
||||
Index: rpmlint-1.2/SpecCheck.py
|
||||
===================================================================
|
||||
--- rpmlint-1.1.orig/SpecCheck.py
|
||||
+++ rpmlint-1.1/SpecCheck.py
|
||||
@@ -593,8 +593,8 @@ addDetails(
|
||||
--- rpmlint-1.2.orig/SpecCheck.py
|
||||
+++ rpmlint-1.2/SpecCheck.py
|
||||
@@ -594,8 +594,8 @@ addDetails(
|
||||
SPEC file to build a valid RPM package.''',
|
||||
|
||||
'invalid-spec-name',
|
||||
|
@ -2,7 +2,7 @@ Index: TagsCheck.py
|
||||
===================================================================
|
||||
--- TagsCheck.py.orig
|
||||
+++ TagsCheck.py
|
||||
@@ -702,6 +702,9 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
@@ -704,6 +704,9 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
if not description:
|
||||
printError(pkg, 'no-description-tag')
|
||||
else:
|
||||
@ -12,7 +12,7 @@ Index: TagsCheck.py
|
||||
if not pkg[rpm.RPMTAG_HEADERI18NTABLE]:
|
||||
self._unexpanded_macros(pkg, '%description', description)
|
||||
else:
|
||||
@@ -983,6 +986,10 @@ Name tag.''',
|
||||
@@ -985,6 +988,10 @@ Name tag.''',
|
||||
'''The major number of the library isn't included in the package's name.
|
||||
''',
|
||||
|
||||
|
@ -2,7 +2,7 @@ Index: FilesCheck.py
|
||||
===================================================================
|
||||
--- FilesCheck.py.orig
|
||||
+++ FilesCheck.py
|
||||
@@ -842,6 +842,10 @@ class FilesCheck(AbstractCheck.AbstractC
|
||||
@@ -846,6 +846,10 @@ class FilesCheck(AbstractCheck.AbstractC
|
||||
# Check if the package is a development package
|
||||
devel_pkg = devel_regex.search(pkg.name)
|
||||
|
||||
|
@ -10,7 +10,7 @@ Index: FilesCheck.py
|
||||
# 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$')
|
||||
@@ -1188,7 +1189,7 @@ class FilesCheck(AbstractCheck.AbstractC
|
||||
@@ -1202,7 +1203,7 @@ class FilesCheck(AbstractCheck.AbstractC
|
||||
includefile_regex.search(f) or \
|
||||
develfile_regex.search(f) or \
|
||||
logrotate_regex.search(f)
|
||||
@ -19,7 +19,7 @@ Index: FilesCheck.py
|
||||
printWarning(pkg, 'spurious-executable-perm', f)
|
||||
elif f.startswith('/etc/') and f not in config_files and \
|
||||
f not in ghost_files:
|
||||
@@ -1553,7 +1554,10 @@ included in your package.''',
|
||||
@@ -1574,7 +1575,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
|
||||
|
@ -2,7 +2,7 @@ Index: FilesCheck.py
|
||||
===================================================================
|
||||
--- FilesCheck.py.orig
|
||||
+++ FilesCheck.py
|
||||
@@ -1206,7 +1206,7 @@ class FilesCheck(AbstractCheck.AbstractC
|
||||
@@ -1220,7 +1220,7 @@ class FilesCheck(AbstractCheck.AbstractC
|
||||
if nonexec_file and not docdir_examples_regex.search(f):
|
||||
printWarning(pkg, 'spurious-executable-perm', f)
|
||||
elif f.startswith('/etc/') and f not in config_files and \
|
||||
|
@ -10,7 +10,7 @@ Index: TagsCheck.py
|
||||
use_epoch = Config.getOption('UseEpoch', False)
|
||||
use_utf8 = Config.getOption('UseUTF8', Config.USEUTF8_DEFAULT)
|
||||
max_line_len = Config.getOption('MaxLineLength', 79)
|
||||
@@ -601,6 +602,9 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
@@ -603,6 +604,9 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
if d[0].startswith('/usr/local/'):
|
||||
printError(pkg, 'invalid-dependency', d[0])
|
||||
|
||||
@ -20,7 +20,7 @@ Index: TagsCheck.py
|
||||
if not devel_depend and not is_devel and not is_source and \
|
||||
FilesCheck.devel_regex.search(d[0]):
|
||||
printError(pkg, 'devel-dependency', d[0])
|
||||
@@ -1085,6 +1089,12 @@ explicit Requires: tags.''',
|
||||
@@ -1087,6 +1091,12 @@ explicit Requires: tags.''',
|
||||
'''This package provides 2 times the same capacity. It should only provide it
|
||||
once.''',
|
||||
|
||||
|
@ -2,7 +2,7 @@ Index: FilesCheck.py
|
||||
===================================================================
|
||||
--- FilesCheck.py.orig
|
||||
+++ FilesCheck.py
|
||||
@@ -859,7 +859,7 @@ class FilesCheck(AbstractCheck.AbstractC
|
||||
@@ -863,7 +863,7 @@ class FilesCheck(AbstractCheck.AbstractC
|
||||
debuginfo_srcs = False
|
||||
debuginfo_debugs = False
|
||||
|
||||
|
@ -1,6 +1,8 @@
|
||||
--- BinariesCheck.py
|
||||
Index: BinariesCheck.py
|
||||
===================================================================
|
||||
--- BinariesCheck.py.orig
|
||||
+++ BinariesCheck.py
|
||||
@@ -223,6 +223,7 @@
|
||||
@@ -232,6 +232,7 @@ class BinariesCheck(AbstractCheck.Abstra
|
||||
binary = False
|
||||
binary_in_usr_lib = False
|
||||
has_usr_lib_file = False
|
||||
@ -8,7 +10,7 @@
|
||||
|
||||
multi_pkg = False
|
||||
res = srcname_regex.search(pkg[rpm.RPMTAG_SOURCERPM] or '')
|
||||
@@ -239,6 +240,10 @@
|
||||
@@ -248,6 +249,10 @@ class BinariesCheck(AbstractCheck.Abstra
|
||||
# only-non-binary-in-usr-lib false positives
|
||||
binary_in_usr_lib = True
|
||||
|
||||
@ -19,7 +21,7 @@
|
||||
is_elf = 'ELF' in pkgfile.magic
|
||||
is_ar = 'current ar archive' in pkgfile.magic
|
||||
is_ocaml_native = 'Objective caml native' in pkgfile.magic
|
||||
@@ -433,9 +438,12 @@
|
||||
@@ -442,9 +447,12 @@ class BinariesCheck(AbstractCheck.Abstra
|
||||
if version and version != -1 and version not in pkg.name:
|
||||
printError(pkg, 'incoherent-version-in-name', version)
|
||||
|
||||
@ -33,7 +35,7 @@
|
||||
if has_usr_lib_file and not binary_in_usr_lib:
|
||||
printWarning(pkg, 'only-non-binary-in-usr-lib')
|
||||
|
||||
@@ -459,6 +467,11 @@
|
||||
@@ -468,6 +476,11 @@ FHS and the FSSTND forbid this.''',
|
||||
# 'non-sparc32-binary',
|
||||
# '',
|
||||
|
||||
|
@ -11,7 +11,7 @@ Index: InitScriptCheck.py
|
||||
|
||||
chkconfig_content_regex = re.compile('^\s*#\s*chkconfig:\s*([-0-9]+)\s+[-0-9]+\s+[-0-9]+')
|
||||
subsys_regex = re.compile('/var/lock/subsys/([^/"\'\n\s;&|]+)', re.MULTILINE)
|
||||
@@ -64,6 +64,9 @@ class InitScriptCheck(AbstractCheck.Abst
|
||||
@@ -63,6 +63,9 @@ class InitScriptCheck(AbstractCheck.Abst
|
||||
not fname.startswith('/etc/rc.d/init.d/'):
|
||||
continue
|
||||
|
||||
|
@ -1,8 +1,14 @@
|
||||
commit 29e43a3e1676aa452f730a741d00ef4ac7baec96
|
||||
Author: Ludwig Nussel <ludwig.nussel@suse.de>
|
||||
Date: Tue May 17 12:56:38 2011 +0200
|
||||
|
||||
remove-expand-macros.diff
|
||||
|
||||
Index: TagsCheck.py
|
||||
===================================================================
|
||||
--- TagsCheck.py.orig
|
||||
+++ TagsCheck.py
|
||||
@@ -433,13 +433,6 @@ so_dep_regex = re.compile(r'\.so(\.[0-9a
|
||||
@@ -433,15 +433,6 @@ so_dep_regex = re.compile(r'\.so(\.[0-9a
|
||||
# we assume that no rpm packages existed before rpm itself existed...
|
||||
oldest_changelog_timestamp = calendar.timegm(time.strptime("1995-01-01", "%Y-%m-%d"))
|
||||
|
||||
@ -12,11 +18,13 @@ Index: TagsCheck.py
|
||||
- epath = rpm.expandMacro(path)
|
||||
- if epath != path:
|
||||
- private_so_paths.add(epath)
|
||||
- private_so_paths.add(re.sub(r'/lib64(?=/|$)', '/lib', epath))
|
||||
- private_so_paths.add(re.sub(r'/lib(?=/|$)', '/lib64', epath))
|
||||
-
|
||||
_enchant_checkers = {}
|
||||
def spell_check(pkg, str, fmt, lang, ignored):
|
||||
|
||||
@@ -852,30 +845,12 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
@@ -854,30 +845,12 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
(apply(Pkg.formatRequire, obs),
|
||||
apply(Pkg.formatRequire, prov)))
|
||||
|
||||
|
@ -2,7 +2,7 @@ Index: TagsCheck.py
|
||||
===================================================================
|
||||
--- TagsCheck.py.orig
|
||||
+++ TagsCheck.py
|
||||
@@ -712,6 +712,8 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
@@ -714,6 +714,8 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
self._unexpanded_macros(pkg, 'Group', group)
|
||||
if not group:
|
||||
printError(pkg, 'no-group-tag')
|
||||
@ -11,7 +11,7 @@ Index: TagsCheck.py
|
||||
elif VALID_GROUPS and group not in VALID_GROUPS:
|
||||
printWarning(pkg, 'non-standard-group', group)
|
||||
|
||||
@@ -1022,6 +1024,10 @@ won't fool the specfile parser, and rebu
|
||||
@@ -1024,6 +1026,10 @@ won't fool the specfile parser, and rebu
|
||||
'''There is no Group tag in your package. You have to specify a valid group
|
||||
in your spec file using the Group tag.''',
|
||||
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:975c527be44e4b086362fcd1aa0eca37633474cabcc20f9b5ab200eb638b274a
|
||||
size 125067
|
3
rpmlint-1.2.tar.xz
Normal file
3
rpmlint-1.2.tar.xz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:59d18da1b8b07eda9079f861fe3ef1176b8bcc32e9f81a56ecfa80e92e6fbe46
|
||||
size 114648
|
@ -1,28 +0,0 @@
|
||||
From c7aa88a93128892705322c564e849ca2a6a74b5b Mon Sep 17 00:00:00 2001
|
||||
From: scop <scop@9bc8b190-ac0f-0410-8968-dc7d1f502856>
|
||||
Date: Thu, 10 Mar 2011 17:29:42 +0000
|
||||
Subject: [PATCH] Don't overwrite already existing details (Ludwig Nussel).
|
||||
|
||||
This allows the distro config to provide alternative descriptions and
|
||||
distro specific explanations without having to patch checks.
|
||||
|
||||
|
||||
git-svn-id: http://rpmlint.zarb.org/svn/trunk@1845 9bc8b190-ac0f-0410-8968-dc7d1f502856
|
||||
---
|
||||
Filter.py | 3 ++-
|
||||
1 files changed, 2 insertions(+), 1 deletions(-)
|
||||
|
||||
Index: rpmlint-1.1/Filter.py
|
||||
===================================================================
|
||||
--- rpmlint-1.1.orig/Filter.py
|
||||
+++ rpmlint-1.1/Filter.py
|
||||
@@ -115,7 +115,8 @@ _details = {}
|
||||
|
||||
def addDetails(*details):
|
||||
for idx in range(len(details)/2):
|
||||
- _details[details[idx*2]] = details[idx*2+1]
|
||||
+ if not details[idx*2] in _details:
|
||||
+ _details[details[idx*2]] = details[idx*2+1]
|
||||
|
||||
def badnessScore():
|
||||
global _badness_score
|
@ -9,11 +9,11 @@ git-svn-id: http://rpmlint.zarb.org/svn/trunk@1865 9bc8b190-ac0f-0410-8968-dc7d1
|
||||
config | 4 ++++
|
||||
2 files changed, 14 insertions(+), 0 deletions(-)
|
||||
|
||||
Index: rpmlint-1.1/BinariesCheck.py
|
||||
Index: rpmlint-1.2/BinariesCheck.py
|
||||
===================================================================
|
||||
--- rpmlint-1.1.orig/BinariesCheck.py
|
||||
+++ rpmlint-1.1/BinariesCheck.py
|
||||
@@ -189,6 +189,8 @@ so_regex = re.compile('/lib(64)?/[^/]+\.
|
||||
--- rpmlint-1.2.orig/BinariesCheck.py
|
||||
+++ rpmlint-1.2/BinariesCheck.py
|
||||
@@ -198,6 +198,8 @@ so_regex = re.compile('/lib(64)?/[^/]+\.
|
||||
validso_regex = re.compile('(\.so\.\d+(\.\d+)*|\d\.so)$')
|
||||
sparc_regex = re.compile('SPARC32PLUS|SPARC V9|UltraSPARC')
|
||||
system_lib_paths = Config.getOption('SystemLibPaths', DEFAULT_SYSTEM_LIB_PATHS)
|
||||
@ -22,7 +22,7 @@ Index: rpmlint-1.1/BinariesCheck.py
|
||||
usr_lib_regex = re.compile('^/usr/lib(64)?/')
|
||||
bin_regex = re.compile('^(/usr(/X11R6)?)?/s?bin/')
|
||||
soversion_regex = re.compile('.*?([0-9][.0-9]*)\\.so|.*\\.so\\.([0-9][.0-9]*).*')
|
||||
@@ -377,6 +379,11 @@ class BinariesCheck(AbstractCheck.Abstra
|
||||
@@ -386,6 +388,11 @@ class BinariesCheck(AbstractCheck.Abstra
|
||||
if not is_exec and not is_shobj:
|
||||
continue
|
||||
|
||||
@ -34,7 +34,7 @@ Index: rpmlint-1.1/BinariesCheck.py
|
||||
if is_exec:
|
||||
|
||||
if bin_regex.search(fname):
|
||||
@@ -385,6 +392,10 @@ class BinariesCheck(AbstractCheck.Abstra
|
||||
@@ -394,6 +401,10 @@ class BinariesCheck(AbstractCheck.Abstra
|
||||
if ocaml_mixed_regex.search(bin_info.tail):
|
||||
printWarning(pkg, 'ocaml-mixed-executable', fname)
|
||||
|
||||
@ -45,7 +45,7 @@ Index: rpmlint-1.1/BinariesCheck.py
|
||||
if bin_info.readelf_error:
|
||||
continue
|
||||
|
||||
@@ -603,6 +614,10 @@ http://bugs.debian.org/cgi-bin/bugreport
|
||||
@@ -612,6 +623,10 @@ http://bugs.debian.org/cgi-bin/bugreport
|
||||
project settings. So there's normally no need to manually strip binaries.
|
||||
Left over unstripped binaries could therefore indicate a bug in the automatic
|
||||
stripping process.''',
|
||||
@ -56,10 +56,10 @@ Index: rpmlint-1.1/BinariesCheck.py
|
||||
)
|
||||
|
||||
# BinariesCheck.py ends here
|
||||
Index: rpmlint-1.1/config
|
||||
Index: rpmlint-1.2/config
|
||||
===================================================================
|
||||
--- rpmlint-1.1.orig/config
|
||||
+++ rpmlint-1.1/config
|
||||
--- rpmlint-1.2.orig/config
|
||||
+++ rpmlint-1.2/config
|
||||
@@ -130,6 +130,10 @@ from Config import *
|
||||
# Type: tuple of strings, default: see DEFAULT_SYSTEM_LIB_PATHS in BinariesCheck
|
||||
#setOption("SystemLibPaths", ('/lib', '/lib64', '/usr/lib', '/usr/lib64'))
|
||||
|
@ -2,7 +2,7 @@ Index: Pkg.py
|
||||
===================================================================
|
||||
--- Pkg.py.orig
|
||||
+++ Pkg.py
|
||||
@@ -496,7 +496,7 @@ class Pkg:
|
||||
@@ -492,7 +492,7 @@ class Pkg:
|
||||
dir = self.dirname)
|
||||
# TODO: better shell escaping or sequence based command invocation
|
||||
command_str = \
|
||||
|
@ -8,11 +8,11 @@ git-svn-id: http://rpmlint.zarb.org/svn/trunk@1862 9bc8b190-ac0f-0410-8968-dc7d1
|
||||
Filter.py | 2 +-
|
||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/Filter.py b/Filter.py
|
||||
index 5f076cd..6549131 100644
|
||||
--- a/Filter.py
|
||||
+++ b/Filter.py
|
||||
@@ -49,7 +49,7 @@ def _print(msgtype, pkg, reason, details):
|
||||
Index: rpmlint-1.2/Filter.py
|
||||
===================================================================
|
||||
--- rpmlint-1.2.orig/Filter.py
|
||||
+++ rpmlint-1.2/Filter.py
|
||||
@@ -44,7 +44,7 @@ def _print(msgtype, pkg, reason, details
|
||||
badness = Config.badness(reason)
|
||||
# anything with badness is an error
|
||||
if badness:
|
||||
@ -21,6 +21,3 @@ index 5f076cd..6549131 100644
|
||||
# errors without badness become warnings
|
||||
elif msgtype == 'E':
|
||||
msgtype = 'W'
|
||||
--
|
||||
1.7.3.4
|
||||
|
||||
|
@ -1,3 +1,14 @@
|
||||
-------------------------------------------------------------------
|
||||
Fri May 20 10:04:36 CEST 2011 - dmueller@suse.de
|
||||
|
||||
- update legacy filter in shlib policy checker
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu May 19 14:16:42 UTC 2011 - lnussel@suse.de
|
||||
|
||||
- new version 1.2
|
||||
* Check outdated or misspelled FSF addresses in text files.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue May 17 09:41:43 UTC 2011 - lnussel@suse.de
|
||||
|
||||
|
11
rpmlint.spec
11
rpmlint.spec
@ -20,11 +20,11 @@
|
||||
#!BuildIgnore: rpmlint-mini
|
||||
|
||||
Name: rpmlint
|
||||
BuildRequires: rpm-python
|
||||
BuildRequires: rpm-python xz
|
||||
Summary: Rpm correctness checker
|
||||
Version: 1.1
|
||||
Release: 37
|
||||
Source0: %{name}-%{version}.tar.bz2
|
||||
Version: 1.2
|
||||
Release: 0
|
||||
Source0: http://rpmlint.zarb.org/download/rpmlint-%{version}.tar.xz
|
||||
Source1: config
|
||||
Source1001: config.in
|
||||
Source2: DesktopTranslationCheck.py
|
||||
@ -124,7 +124,6 @@ Patch84: extend-suse-conffiles-check.diff
|
||||
Patch85: suse-changelog.patch
|
||||
Patch86: suse-rclink-check.diff
|
||||
# accepted upstream
|
||||
Patch87: rpmlint-add-details.diff
|
||||
Patch88: suse-speccheck-utf8.diff
|
||||
# accepted upstream
|
||||
Patch89: rpmlint-pie.diff
|
||||
@ -207,7 +206,7 @@ Authors:
|
||||
%patch84
|
||||
%patch85
|
||||
%patch86
|
||||
%patch87 -p1
|
||||
#patch87 -p1
|
||||
%patch88
|
||||
%patch89 -p1
|
||||
%patch90 -p1
|
||||
|
@ -2,7 +2,7 @@ Index: FilesCheck.py
|
||||
===================================================================
|
||||
--- FilesCheck.py.orig
|
||||
+++ FilesCheck.py
|
||||
@@ -1238,7 +1238,7 @@ class FilesCheck(AbstractCheck.AbstractC
|
||||
@@ -1252,7 +1252,7 @@ class FilesCheck(AbstractCheck.AbstractC
|
||||
elif interpreter or mode & 0111 != 0 or \
|
||||
script_regex.search(f):
|
||||
if interpreter:
|
||||
|
@ -2,7 +2,7 @@ Index: TagsCheck.py
|
||||
===================================================================
|
||||
--- TagsCheck.py.orig
|
||||
+++ TagsCheck.py
|
||||
@@ -815,6 +815,7 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
@@ -817,6 +817,7 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
|
||||
obs_names = [x[0] for x in pkg.obsoletes()]
|
||||
prov_names = [x[0].split(':/')[0] for x in pkg.provides()]
|
||||
@ -10,7 +10,7 @@ Index: TagsCheck.py
|
||||
|
||||
for o in (x for x in obs_names if x not in prov_names):
|
||||
printWarning(pkg, 'obsolete-not-provided', o)
|
||||
@@ -826,6 +827,8 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
@@ -828,6 +829,8 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
# https://bugzilla.redhat.com/460872
|
||||
useless_provides = []
|
||||
for p in prov_names:
|
||||
@ -19,7 +19,7 @@ Index: TagsCheck.py
|
||||
if prov_names.count(p) != 1 and p not in useless_provides:
|
||||
useless_provides.append(p)
|
||||
for p in useless_provides:
|
||||
@@ -966,6 +969,10 @@ the Release tag.''',
|
||||
@@ -968,6 +971,10 @@ the Release tag.''',
|
||||
'''There is no Name tag in your package. You have to specify a name using the
|
||||
Name tag.''',
|
||||
|
||||
|
@ -2,7 +2,7 @@ Index: FilesCheck.py
|
||||
===================================================================
|
||||
--- FilesCheck.py.orig
|
||||
+++ FilesCheck.py
|
||||
@@ -1261,7 +1261,8 @@ class FilesCheck(AbstractCheck.AbstractC
|
||||
@@ -1275,7 +1275,8 @@ class FilesCheck(AbstractCheck.AbstractC
|
||||
f.endswith('.la')):
|
||||
printError(pkg, 'script-without-shebang', f)
|
||||
|
||||
|
@ -1,4 +1,6 @@
|
||||
--- BinariesCheck.py
|
||||
Index: BinariesCheck.py
|
||||
===================================================================
|
||||
--- BinariesCheck.py.orig
|
||||
+++ BinariesCheck.py
|
||||
@@ -10,13 +10,15 @@
|
||||
|
||||
@ -17,7 +19,7 @@
|
||||
|
||||
|
||||
DEFAULT_SYSTEM_LIB_PATHS = (
|
||||
@@ -37,6 +39,9 @@
|
||||
@@ -37,6 +39,9 @@ class BinaryInfo:
|
||||
unused_regex = re.compile('^\s+(\S+)')
|
||||
exit_call_regex = re.compile('\s+FUNC\s+.*?\s+(_?exit(?:@\S+)?)(?:\s|$)')
|
||||
fork_call_regex = re.compile('\s+FUNC\s+.*?\s+(fork(?:@\S+)?)(?:\s|$)')
|
||||
@ -27,7 +29,7 @@
|
||||
|
||||
def __init__(self, pkg, path, file, is_ar, is_shlib):
|
||||
self.readelf_error = False
|
||||
@@ -50,7 +55,10 @@
|
||||
@@ -50,7 +55,10 @@ class BinaryInfo:
|
||||
self.stack = False
|
||||
self.exec_stack = False
|
||||
self.exit_calls = []
|
||||
@ -38,7 +40,7 @@
|
||||
self.tail = ''
|
||||
|
||||
is_debug = path.endswith('.debug')
|
||||
@@ -93,6 +101,11 @@
|
||||
@@ -93,6 +101,11 @@ class BinaryInfo:
|
||||
self.exec_stack = True
|
||||
continue
|
||||
|
||||
@ -50,7 +52,7 @@
|
||||
if is_shlib:
|
||||
r = BinaryInfo.exit_call_regex.search(l)
|
||||
if r:
|
||||
@@ -103,6 +116,14 @@
|
||||
@@ -103,6 +116,14 @@ class BinaryInfo:
|
||||
fork_called = True
|
||||
continue
|
||||
|
||||
@ -65,7 +67,7 @@
|
||||
if self.non_pic:
|
||||
self.non_pic = 'TEXTREL' in res[1]
|
||||
|
||||
@@ -263,13 +284,26 @@
|
||||
@@ -272,13 +293,26 @@ class BinariesCheck(AbstractCheck.Abstra
|
||||
continue
|
||||
|
||||
# stripped ?
|
||||
@ -93,7 +95,7 @@
|
||||
if is_shlib:
|
||||
has_lib = True
|
||||
|
||||
@@ -319,6 +353,10 @@
|
||||
@@ -328,6 +362,10 @@ class BinariesCheck(AbstractCheck.Abstra
|
||||
for ec in bin_info.exit_calls:
|
||||
printWarning(pkg, 'shared-lib-calls-exit', fname, ec)
|
||||
|
||||
@ -104,7 +106,7 @@
|
||||
# rpath ?
|
||||
if bin_info.rpath:
|
||||
for p in bin_info.rpath:
|
||||
@@ -504,6 +542,14 @@
|
||||
@@ -513,6 +551,14 @@ with the intended shared libraries only.
|
||||
'ldd-failed',
|
||||
'''Executing ldd on this file failed, all checks could not be run.''',
|
||||
|
||||
@ -119,7 +121,7 @@
|
||||
'executable-stack',
|
||||
'''The binary declares the stack as executable. Executable stack is usually an
|
||||
error as it is only needed if the code contains GCC trampolines or similar
|
||||
@@ -516,6 +562,10 @@
|
||||
@@ -525,6 +571,10 @@ don\'t define a proper .note.GNU-stack s
|
||||
make the stack executable. Usual suspects include use of a non-GNU linker or
|
||||
an old GNU linker version.''',
|
||||
|
||||
@ -130,7 +132,7 @@
|
||||
'shared-lib-calls-exit',
|
||||
'''This library package calls exit() or _exit(), probably in a non-fork()
|
||||
context. Doing so from a library is strongly discouraged - when a library
|
||||
@@ -533,6 +583,12 @@
|
||||
@@ -542,6 +592,12 @@ form, make sure that rpmbuild does not s
|
||||
that use prelink, make sure that prelink does not strip it either, usually by
|
||||
placing a blacklist file in /etc/prelink.conf.d. For more information, see
|
||||
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=256900#49''',
|
||||
|
@ -2,7 +2,7 @@ Index: FilesCheck.py
|
||||
===================================================================
|
||||
--- FilesCheck.py.orig
|
||||
+++ FilesCheck.py
|
||||
@@ -944,6 +944,16 @@ class FilesCheck(AbstractCheck.AbstractC
|
||||
@@ -952,6 +952,16 @@ class FilesCheck(AbstractCheck.AbstractC
|
||||
if res.group(1) != pkg.name:
|
||||
printError(pkg, 'incoherent-logrotate-file', f)
|
||||
|
||||
@ -19,7 +19,7 @@ Index: FilesCheck.py
|
||||
if link != '':
|
||||
ext = compr_regex.search(link)
|
||||
if ext:
|
||||
@@ -1739,6 +1749,24 @@ consequences), or other compiler flags w
|
||||
@@ -1760,6 +1770,24 @@ consequences), or other compiler flags w
|
||||
extraction not working as expected. Verify that the binaries are not
|
||||
unexpectedly stripped and that the intended compiler flags are used.''',
|
||||
|
||||
|
@ -8,11 +8,11 @@ git-svn-id: http://rpmlint.zarb.org/svn/trunk@1863 9bc8b190-ac0f-0410-8968-dc7d1
|
||||
FilesCheck.py | 16 ++++++++++++++++
|
||||
1 files changed, 16 insertions(+), 0 deletions(-)
|
||||
|
||||
Index: rpmlint-1.1/FilesCheck.py
|
||||
Index: rpmlint-1.2/FilesCheck.py
|
||||
===================================================================
|
||||
--- rpmlint-1.1.orig/FilesCheck.py
|
||||
+++ rpmlint-1.1/FilesCheck.py
|
||||
@@ -911,6 +911,12 @@ class FilesCheck(AbstractCheck.AbstractC
|
||||
--- rpmlint-1.2.orig/FilesCheck.py
|
||||
+++ rpmlint-1.2/FilesCheck.py
|
||||
@@ -915,6 +915,12 @@ class FilesCheck(AbstractCheck.AbstractC
|
||||
printError(pkg, 'dir-or-file-in-usr-local', f)
|
||||
elif f.startswith('/var/local/'):
|
||||
printError(pkg, 'dir-or-file-in-var-local', f)
|
||||
@ -25,7 +25,7 @@ Index: rpmlint-1.1/FilesCheck.py
|
||||
elif sub_bin_regex.search(f):
|
||||
printError(pkg, 'subdir-in-bin', f)
|
||||
elif f.startswith('/home/'):
|
||||
@@ -1478,6 +1484,16 @@ for packages to install files in this di
|
||||
@@ -1491,6 +1497,16 @@ for packages to install files in this di
|
||||
'''A file in the package is located in /var/local. It's not permitted
|
||||
for packages to install files in this directory.''',
|
||||
|
||||
|
@ -1,15 +1,34 @@
|
||||
--- Config.py
|
||||
Index: Config.py
|
||||
===================================================================
|
||||
--- Config.py.orig
|
||||
+++ Config.py
|
||||
@@ -115,6 +115,8 @@
|
||||
# List of filters
|
||||
@@ -116,12 +116,23 @@ def getOption(name, default = ""):
|
||||
_filters = []
|
||||
_filters_re = None
|
||||
|
||||
+_filters_non_except = []
|
||||
+_filters_non_except_re = None
|
||||
+
|
||||
+_filters_except = []
|
||||
+_filters_except_re = None
|
||||
|
||||
+
|
||||
def addFilter(s):
|
||||
global _filters
|
||||
@@ -137,8 +139,14 @@
|
||||
global _filters_re
|
||||
+ global _filters_except
|
||||
|
||||
- _filters.append(s)
|
||||
- _filters_re = None
|
||||
+ if len(_filters_except):
|
||||
+ _filters.append(s)
|
||||
+ _filters_re = None
|
||||
+ else:
|
||||
+ _filters_non_except.append(s)
|
||||
+ _filters_non_except_re = None
|
||||
|
||||
def removeFilter(s):
|
||||
global _filters
|
||||
@@ -137,8 +148,14 @@ def removeFilter(s):
|
||||
_scoring = {}
|
||||
|
||||
def setBadness(s, score):
|
||||
@ -24,16 +43,36 @@
|
||||
def badness(s):
|
||||
return _scoring.get(s, 0)
|
||||
|
||||
@@ -146,6 +154,8 @@
|
||||
@@ -146,11 +163,24 @@ _non_named_group_re = re.compile('[^\\](
|
||||
def isFiltered(s):
|
||||
global _filters
|
||||
global _filters_re
|
||||
+ global _filters_except
|
||||
+ global _filters_except_re
|
||||
+ global _filters_non_except
|
||||
+ global _filters_non_except_re
|
||||
|
||||
if _filters_re == None:
|
||||
# no filter
|
||||
@@ -162,7 +172,21 @@
|
||||
- if _filters_re == None:
|
||||
- # no filter
|
||||
- if len(_filters) == 0:
|
||||
- return False
|
||||
+ if _filters_non_except_re == None and len(_filters_non_except):
|
||||
+ _filters_non_except_re = '(?:' + _filters_non_except[0] + ')'
|
||||
+
|
||||
+ for idx in range(1, len(_filters_non_except)):
|
||||
+ # to prevent named group overflow that happen when there is too
|
||||
+ # many () in a single regexp: AssertionError: sorry, but this
|
||||
+ # version only supports 100 named groups
|
||||
+ if '(' in _filters_non_except[idx]:
|
||||
+ _non_named_group_re.subn('(:?', _filters_non_except[idx])
|
||||
+ _filters_non_except_re = _filters_non_except_re + '|(?:' + _filters_non_except[idx] +')'
|
||||
+ _filters_non_except_re = re.compile(_filters_non_except_re)
|
||||
+
|
||||
+ if _filters_re == None and len(_filters):
|
||||
_filters_re = '(?:' + _filters[0] + ')'
|
||||
|
||||
for idx in range(1, len(_filters)):
|
||||
@@ -162,9 +192,27 @@ def isFiltered(s):
|
||||
_filters_re = _filters_re + '|(?:' + _filters[idx] +')'
|
||||
_filters_re = re.compile(_filters_re)
|
||||
|
||||
@ -50,8 +89,15 @@
|
||||
+ _filters_except_re = re.compile(_filters_except_re)
|
||||
+
|
||||
if not no_exception:
|
||||
- if _filters_re.search(s):
|
||||
+
|
||||
+ if _filters_non_except_re and _filters_non_except_re.search(s):
|
||||
return True
|
||||
+ if _filters_except_re and _filters_except_re.search(s):
|
||||
+ return False
|
||||
if _filters_re.search(s):
|
||||
return True
|
||||
+ if _filters_re and _filters_re.search(s):
|
||||
+ return True
|
||||
+
|
||||
return False
|
||||
|
||||
# Config.py ends here
|
||||
|
@ -13,7 +13,7 @@ Index: SpecCheck.py
|
||||
if current_section == 'changelog':
|
||||
for match in AbstractCheck.macro_regex.findall(line):
|
||||
res = re.match('%+', match)
|
||||
@@ -715,6 +719,14 @@ may break short circuit builds.''',
|
||||
@@ -716,6 +720,14 @@ may break short circuit builds.''',
|
||||
'''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.''',
|
||||
|
||||
|
@ -10,7 +10,7 @@ Index: TagsCheck.py
|
||||
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
|
||||
@@ -627,10 +628,12 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
@@ -629,10 +630,12 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
base = is_devel.group(1)
|
||||
dep = None
|
||||
has_so = False
|
||||
@ -24,7 +24,7 @@ Index: TagsCheck.py
|
||||
if has_so:
|
||||
base_or_libs = base + '/' + base + '-libs/lib' + base
|
||||
# try to match *%_isa as well (e.g. "(x86-64)", "(x86-32)")
|
||||
@@ -667,6 +670,15 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
@@ -669,6 +672,15 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
if prov not in (x[0] for x in pkg.provides()):
|
||||
printWarning(pkg, 'no-provides', prov)
|
||||
|
||||
@ -40,7 +40,7 @@ Index: TagsCheck.py
|
||||
# List of words to ignore in spell check
|
||||
ignored_words = set()
|
||||
for pf in pkg.files():
|
||||
@@ -1104,6 +1116,11 @@ instead or require a file in bin or /etc
|
||||
@@ -1106,6 +1118,11 @@ instead or require a file in bin or /etc
|
||||
'no-url-tag',
|
||||
'''The URL tag is missing. Please add a http or ftp link to the project location.''',
|
||||
|
||||
|
@ -2,7 +2,7 @@ Index: TagsCheck.py
|
||||
===================================================================
|
||||
--- TagsCheck.py.orig
|
||||
+++ TagsCheck.py
|
||||
@@ -635,10 +635,10 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
@@ -637,10 +637,10 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
if pkg_config_regex.match(fname) and fname.endswith('.pc'):
|
||||
has_pc = True
|
||||
if has_so:
|
||||
|
@ -1,6 +1,8 @@
|
||||
--- SpecCheck.py
|
||||
Index: SpecCheck.py
|
||||
===================================================================
|
||||
--- SpecCheck.py.orig
|
||||
+++ SpecCheck.py
|
||||
@@ -597,8 +597,8 @@
|
||||
@@ -598,8 +598,8 @@ SPEC file to build a valid RPM package.'
|
||||
("Name:" tag). Either rename your package or the specfile.''',
|
||||
|
||||
'non-utf8-spec-file',
|
||||
|
@ -2,7 +2,7 @@ Index: TagsCheck.py
|
||||
===================================================================
|
||||
--- TagsCheck.py.orig
|
||||
+++ TagsCheck.py
|
||||
@@ -776,7 +776,7 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
@@ -778,7 +778,7 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
if not valid_license:
|
||||
self._unexpanded_macros(pkg, 'License', rpm_license)
|
||||
|
||||
@ -11,7 +11,7 @@ Index: TagsCheck.py
|
||||
if hasattr(rpm, 'RPMTAG_%s' % tag.upper()):
|
||||
url = pkg[getattr(rpm, 'RPMTAG_%s' % tag.upper())]
|
||||
self._unexpanded_macros(pkg, tag, url, is_url = True)
|
||||
@@ -1092,7 +1092,7 @@ once.''',
|
||||
@@ -1094,7 +1094,7 @@ once.''',
|
||||
'''This rpm requires a specific release of another package.''',
|
||||
|
||||
'no-url-tag',
|
||||
|
@ -23,9 +23,9 @@ Index: SpecCheck.py
|
||||
res = prereq_regex.search(line)
|
||||
if res:
|
||||
printError(pkg, 'prereq-use', res.group(2))
|
||||
@@ -756,6 +763,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.''',
|
||||
@@ -758,6 +765,15 @@ in the resulting binary package dependin
|
||||
version (typically < 4.4). Add default attributes using %defattr before it in
|
||||
the %files section, or use per entry %attr's.''',
|
||||
|
||||
+'obsolete-suse-version-check',
|
||||
+'''The specfile contains a comparison of %suse_version against a suse release
|
||||
|
@ -2,7 +2,7 @@ Index: BinariesCheck.py
|
||||
===================================================================
|
||||
--- BinariesCheck.py.orig
|
||||
+++ BinariesCheck.py
|
||||
@@ -197,6 +197,7 @@ usr_lib_exception_regex = re.compile(Con
|
||||
@@ -206,6 +206,7 @@ usr_lib_exception_regex = re.compile(Con
|
||||
srcname_regex = re.compile('(.*?)-[0-9]')
|
||||
invalid_dir_ref_regex = re.compile('/(home|tmp)(\W|$)')
|
||||
ocaml_mixed_regex = re.compile('^Caml1999X0\d\d$')
|
||||
@ -10,7 +10,7 @@ Index: BinariesCheck.py
|
||||
|
||||
def dir_base(path):
|
||||
res = path_regex.search(path)
|
||||
@@ -269,7 +270,7 @@ class BinariesCheck(AbstractCheck.Abstra
|
||||
@@ -278,7 +279,7 @@ class BinariesCheck(AbstractCheck.Abstra
|
||||
# arch dependent packages only from here on
|
||||
|
||||
# in /usr/share ?
|
||||
|
@ -2,7 +2,7 @@ Index: TagsCheck.py
|
||||
===================================================================
|
||||
--- TagsCheck.py.orig
|
||||
+++ TagsCheck.py
|
||||
@@ -809,7 +809,7 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
@@ -811,7 +811,7 @@ class TagsCheck(AbstractCheck.AbstractCh
|
||||
printWarning(pkg, 'no-url-tag')
|
||||
|
||||
obs_names = [x[0] for x in pkg.obsoletes()]
|
||||
|
Loading…
Reference in New Issue
Block a user