File suse-debuginfo.diff of Package rpmlint

--- BinariesCheck.py
+++ BinariesCheck.py
@@ -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|$)')
+    debuginfo_regex=re.compile('^\s+\[\s*\d+\]\s+\.debug_.*\s+')
+    symtab_regex=re.compile('^\s+\[\s*\d+\]\s+\.symtab\s+')
 
     def __init__(self, pkg, path, file, is_ar, is_shlib):
         self.readelf_error = False
@@ -53,6 +55,8 @@
         self.exec_stack = False
         self.exit_calls = []
         fork_called = False
+        self.debuginfo = 0
+        self.symtab=0
         self.tail = ''
 
         is_debug = BinaryInfo.debug_file_regex.search(path)
@@ -105,6 +109,14 @@
                         fork_called = True
                         continue
 
+                if BinaryInfo.debuginfo_regex.search(l):
+                    self.debuginfo=1
+                    continue
+
+                if BinaryInfo.symtab_regex.search(l):
+                    self.symtab=1
+                    continue
+
             if self.non_pic:
                 self.non_pic = BinaryInfo.non_pic_regex.search(res[1])
 
@@ -260,6 +272,17 @@
                         bin_info = BinaryInfo(
                             pkg, pkgfile.path, fname, is_ar, is_shlib)
 
+                        # stripped static library
+                        if is_ar:
+                            if bin_info.readelf_error:
+                                pass
+                            elif not bin_info.symtab:
+                                printError(pkg, 'static-library-without-symtab', fname)
+                            elif not bin_info.debuginfo and \
+                                    (os.environ.get('BUILD_IS_RUNNING', None) == None or \
+                                         os.environ.get('BUILD_DEBUG_FLAGS','').find('-g') != -1):
+                                printWarning(pkg, 'static-library-without-debuginfo', fname)
+
                         # so name in library
                         if is_shlib:
                             has_lib = True
@@ -491,6 +514,14 @@
 'ldd-failed',
 '''Executing ldd on this file failed, all checks could not be run.''',
 
+'static-library-without-symtab',
+'''The static library doesn't contain any symbols and therefore can't be linked
+against. This may indicated that it was strip.''',
+
+'static-library-without-debuginfo',
+'''The static library doesn't contain any debuginfo. Binaries linking against
+this static library can't be properly debugged.''',
+
 '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
openSUSE Build Service is sponsored by