rpms/rpmlint/FC-5 rpmlint-0.78-svn-fixes.patch, NONE, 1.1 rpmlint.config, 1.1, 1.2 rpmlint.spec, 1.25, 1.26

Ville Skytta (scop) fedora-extras-commits at redhat.com
Sun Oct 15 08:22:26 UTC 2006


Author: scop

Update of /cvs/extras/rpms/rpmlint/FC-5
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv11554/FC-5

Modified Files:
	rpmlint.config rpmlint.spec 
Added Files:
	rpmlint-0.78-svn-fixes.patch 
Log Message:
* Sun Oct 15 2006 Ville Skyttä <ville.skytta at iki.fi> - 0.78-2
- Accumulated bugfixes since 0.78: #209876, #209889, #210110, 210261.
- Filter messages about gpg-pubkeys for now.


rpmlint-0.78-svn-fixes.patch:

--- NEW FILE rpmlint-0.78-svn-fixes.patch ---
Index: TagsCheck.py
===================================================================
--- TagsCheck.py	(revision 1282)
+++ TagsCheck.py	(revision 1289)
@@ -595,7 +595,7 @@
                 if not ret:
                     printWarning(pkg, 'no-version-in-last-changelog')
                 elif version and release:
-                    srpm=pkg[rpm.RPMTAG_SOURCERPM]
+                    srpm = pkg[rpm.RPMTAG_SOURCERPM] or ''
                     # only check when source name correspond to name
                     if srpm[0:-8] == '%s-%s-%s' % (name, version, release):
                         expected=version + '-' + release
Index: FilesCheck.py
===================================================================
--- FilesCheck.py	(revision 1282)
+++ FilesCheck.py	(revision 1289)
@@ -228,8 +228,12 @@
 text_characters = "".join(map(chr, range(32, 127)) + list("\n\r\t\b"))
 _null_trans = string.maketrans("", "")
 
-def istextfile(f):
-    s=open(f).read(512)
+def istextfile(f, pkg):
+    try:
+        s = open(f).read(512)
+    except Exception, e: # eg. https://bugzilla.redhat.com/209876
+        printWarning(pkg, 'read-error', e)
+        return 0
 
     if "\0" in s:
         return 0
@@ -589,7 +593,7 @@
             if stat.S_ISREG(mode):
                 path=pkg.dirName() + '/' + f
                 if os.access(path, os.R_OK):
-                    if istextfile(path):
+                    if istextfile(path, pkg):
                         line=open(path).readline()
                         res=None
                         # ignore perl module shebang -- TODO: disputed...
@@ -917,6 +921,12 @@
 packaged as arch dependent, or something else.  Verify what the case is, and
 if there's no way to produce useful debuginfo out of it, disable creation of
 the debuginfo package.''',
+
+'read-error',
+'''This file could not be read.  A reason for this could be that the info about
+it in the rpm header indicates that it is supposed to be a readable normal file
+but it actually is not in the filesystem.  Because of this, some checks will
+be skipped.''',
 )
 
 # FilesCheck.py ends here
Index: Pkg.py
===================================================================
--- Pkg.py	(revision 1282)
+++ Pkg.py	(revision 1289)
@@ -58,17 +58,21 @@
 
 # utilities
 
+var_regex=re.compile('^(.*)\${?(\w+)}?(.*)$')
+
 def shell_var_value(var, script):
-    assign_regex=re.compile(re.escape(var) + '\s*=\s*(.+)\s*(#.*)*$',
+    assign_regex=re.compile('\\b' + re.escape(var) + '\s*=\s*(.+)\s*(#.*)*$',
                             re.MULTILINE)
     res=assign_regex.search(script)
     if res:
+        res2 = var_regex.search(res.group(1))
+        if res2:
+            if res2.group(2) == var: # infinite loop
+                return None
         return substitute_shell_vars(res.group(1), script)
     else:
         return None
 
-var_regex=re.compile('^(.*)\${?([^}]+)}?(.*)$')
-
 def substitute_shell_vars(val, script):
     res=var_regex.search(val)
     if res:
Index: rpmlint.py
===================================================================
--- rpmlint.py	(revision 1282)
+++ rpmlint.py	(revision 1289)
@@ -98,6 +98,8 @@
                     f=os.path.abspath(os.path.join(d, i))
                     st=os.stat(f)
                     if stat.S_ISREG(st[stat.ST_MODE]):
+                        if f[-4:] != '.rpm' and f[-4:] != '.spm':
+                            continue
                         try:
                             pkg=Pkg.Pkg(f, extract_dir)
                             runChecks(pkg)
Index: BinariesCheck.py
===================================================================
--- BinariesCheck.py	(revision 1282)
+++ BinariesCheck.py	(revision 1289)
@@ -32,7 +32,7 @@
     undef_regex=re.compile('^undefined symbol:\s+(\S+)')
     debug_file_regex=re.compile('\.debug$')
 
-    def __init__(self, pkg, path, file):
+    def __init__(self, pkg, path, file, is_ar):
         self.objdump_error=0
         self.needed=[]
         self.rpath=[]
@@ -75,7 +75,7 @@
 
         # undefined symbol check makes sense only for installed packages
         # skip debuginfo: https://bugzilla.redhat.com/190599
-        if not is_debug and isinstance(pkg, Pkg.InstalledPkg):
+        if not is_ar and not is_debug and isinstance(pkg, Pkg.InstalledPkg):
             # We could do this with objdump, but it's _much_ simpler with ldd.
             res = Pkg.getstatusoutput(('env', 'LC_ALL=C', 'ldd', '-d', '-r', path))
             if not res[0]:
@@ -89,7 +89,6 @@
 path_regex=re.compile('(.*/)([^/]+)')
 numeric_dir_regex=re.compile('/usr(?:/share)/man/man./(.*)\.[0-9](?:\.gz|\.bz2)')
 versioned_dir_regex=re.compile('[^.][0-9]')
-binary_regex=re.compile('ELF|current ar archive')
 usr_share=re.compile('^/usr/share/')
 etc=re.compile('^/etc/')
 not_stripped=re.compile('not stripped')
@@ -137,7 +136,7 @@
         binary_in_usr_lib=0
         has_usr_lib_file=0
 
-        res=srcname_regex.search(pkg[rpm.RPMTAG_SOURCERPM])
+        res = srcname_regex.search(pkg[rpm.RPMTAG_SOURCERPM] or '')
         if res:
             multi_pkg=(pkg.name != res.group(1))
         else:
@@ -149,7 +148,9 @@
                 break
 
         for i in info:
-            is_binary=binary_regex.search(i[1])
+            is_elf = string.find(i[1], 'ELF') != -1
+            is_ar = string.find(i[1], 'current ar archive') != -1
+            is_binary = is_elf or is_ar
 
             if is_binary:
                 binary=binary+1
@@ -175,7 +176,7 @@
                             printWarning(pkg, 'unstripped-binary-or-object', i[0])
 
                         # inspect binary file
-                        bin_info=BinaryInfo(pkg, pkg.dirName()+i[0], i[0])
+                        bin_info=BinaryInfo(pkg, pkg.dirName()+i[0], i[0], is_ar)
 
                         # so name in library
                         if so_regex.search(i[0]):
Index: I18NCheck.py
===================================================================
--- I18NCheck.py	(revision 1282)
+++ I18NCheck.py	(revision 1289)
@@ -99,7 +99,7 @@
         locales=[]                      # list of locales for this packages
         webapp=False
 
-        i18n_tags = pkg[HEADER_I18NTABLE]
+        i18n_tags = pkg[HEADER_I18NTABLE] or ()
         #i18n_files = pkg.langFiles()
 
         for i in i18n_tags:
Index: InitScriptCheck.py
===================================================================
--- InitScriptCheck.py	(revision 1282)
+++ InitScriptCheck.py	(revision 1289)
@@ -71,7 +71,10 @@
                 lsb_tags = {}
                 # check common error in file content
                 fd=open(pkg.dirName() + '/' + f, 'r')
-                for line in fd.readlines():
+                content = fd.readlines()
+                fd.close()
+                content_str = "".join(content)
+                for line in content:
                     line = line[:-1] # chomp
                     # TODO check if there is only one line like this
                     if line.startswith('### BEGIN INIT INFO'):
@@ -131,7 +134,7 @@
                         if name != basename:
                             error=1
                             if name[0] == '$':
-                                value=Pkg.substitute_shell_vars(name, line)
+                                value = Pkg.substitute_shell_vars(name, content_str)
                                 if value == basename:
                                     error=0
                             if error:


Index: rpmlint.config
===================================================================
RCS file: /cvs/extras/rpms/rpmlint/FC-5/rpmlint.config,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- rpmlint.config	29 Jun 2006 20:29:39 -0000	1.1
+++ rpmlint.config	15 Oct 2006 08:22:26 -0000	1.2
@@ -55,3 +55,4 @@
 addFilter("-debuginfo no-documentation")
 addFilter("-debuginfo [^ ]+ /usr/lib/debug/")
 addFilter("non-standard-dir-in-usr libexec")
+addFilter(" gpg-pubkey ")


Index: rpmlint.spec
===================================================================
RCS file: /cvs/extras/rpms/rpmlint/FC-5/rpmlint.spec,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- rpmlint.spec	23 Sep 2006 21:37:34 -0000	1.25
+++ rpmlint.spec	15 Oct 2006 08:22:26 -0000	1.26
@@ -1,6 +1,6 @@
 Name:           rpmlint
 Version:        0.78
-Release:        1%{?dist}
+Release:        2%{?dist}
 Summary:        Tool for checking common errors in RPM packages
 
 Group:          Development/Tools
@@ -10,6 +10,7 @@
 Source1:        %{name}.config
 Patch0:         %{name}-0.78-distregex.patch
 Patch1:         %{name}-0.77-compile.patch
+Patch2:         %{name}-0.78-svn-fixes.patch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
 BuildArch:      noarch
@@ -31,6 +32,7 @@
 %setup -q
 %patch0
 %patch1
+%patch2
 sed -i -e /MenuCheck/d Config.py
 
 
@@ -65,6 +67,10 @@
 
 
 %changelog
+* Sun Oct 15 2006 Ville Skyttä <ville.skytta at iki.fi> - 0.78-2
+- Accumulated bugfixes since 0.78: #209876, #209889, #210110, 210261.
+- Filter messages about gpg-pubkeys for now.
+
 * Sun Sep 24 2006 Ville Skyttä <ville.skytta at iki.fi> - 0.78-1
 - 0.78, fixes #198605, #198616, #198705, #198707, #200032, #206383.
 - /etc/profile.d/* filtering no longer needed.




More information about the scm-commits mailing list