[csw-devel] SF.net SVN: gar:[19276] csw/mgar/gar/v2-yann/lib/python

chninkel at users.sourceforge.net chninkel at users.sourceforge.net
Sat Sep 22 18:15:20 CEST 2012


Revision: 19276
          http://gar.svn.sourceforge.net/gar/?rev=19276&view=rev
Author:   chninkel
Date:     2012-09-22 16:15:20 +0000 (Sat, 22 Sep 2012)
Log Message:
-----------
pep8 compliance fixes

Modified Paths:
--------------
    csw/mgar/gar/v2-yann/lib/python/dependency_checks.py
    csw/mgar/gar/v2-yann/lib/python/inspective_package.py

Modified: csw/mgar/gar/v2-yann/lib/python/dependency_checks.py
===================================================================
--- csw/mgar/gar/v2-yann/lib/python/dependency_checks.py	2012-09-22 13:46:13 UTC (rev 19275)
+++ csw/mgar/gar/v2-yann/lib/python/dependency_checks.py	2012-09-22 16:15:20 UTC (rev 19276)
@@ -29,10 +29,11 @@
 )
 
 DEPENDENCY_FILENAME_REGEXES = (
-    (r".*\.pl$",   (u"CSWperl",)),
-    (r".*\.pm$",   (u"CSWperl",)),
-    (r".*\.py$",   (u"CSWpython",)),
-    (r".*\.rb$",   (u"CSWruby", u"CSWruby18", u"CSWruby191", u"CSWlibruby1-9-1-1")),
+    (r".*\.pl$", (u"CSWperl",)),
+    (r".*\.pm$", (u"CSWperl",)),
+    (r".*\.py$", (u"CSWpython",)),
+    (r".*\.rb$", (u"CSWruby", u"CSWruby18",
+                  u"CSWruby191", u"CSWlibruby1-9-1-1")),
     (r".*\.elc?$", (u"CSWemacscommon",)),
     (r"/opt/csw/apache2/", (u"CSWapache2",)),
 )
@@ -40,9 +41,12 @@
 PREFERRED_DIRECTORY_PROVIDERS = set([u"CSWcommon"])
 
 BASE_SOLARIS_LIBRARIES = (
-     "libsocket.so.1", "libnsl.so.1", "libdl.so.1", "librt.so.1", "libresolv.so.2", "libpthread.so.1",
-     # linked by default with C++, see "Default C++ Libraries" in Solaris Studio C++ User'sGuide
-     "libCstd.so.1", "libCrun.so.1", "libm.so.1", "libm.so.2", "libw.so.1", "libcx.so.1", "libc.so.1", "libC.so.3", "libC.so.5",
+     "libsocket.so.1", "libnsl.so.1", "libdl.so.1", "librt.so.1",
+     "libresolv.so.2", "libpthread.so.1",
+     # linked by default with C++, see "Default C++ Libraries"
+     # in Solaris Studio C++ User's Guide
+     "libCstd.so.1", "libCrun.so.1", "libm.so.1", "libm.so.2",
+     "libw.so.1", "libcx.so.1", "libc.so.1", "libC.so.3", "libC.so.5",
 )
 
 ALLOWED_VERSION_DEPENDENCIES = {
@@ -61,8 +65,8 @@
 
 def ProcessSoname(
     ldd_emulator,
-    soname, path_and_pkg_by_basename, binary_info, isalist, binary_path, logger,
-    error_mgr,
+    soname, path_and_pkg_by_basename, binary_info, isalist, binary_path,
+    logger, error_mgr,
     pkgname, messenger):
   """This is not an ideal name for this function.
 
@@ -163,59 +167,69 @@
     for soname in binary_info["needed sonames"]:
       orphan_sonames_tmp = ProcessSoname(
           ldd_emulator,
-          soname, path_and_pkg_by_basename, binary_info, isalist, binary_path, logger,
-          error_mgr,
+          soname, path_and_pkg_by_basename, binary_info, isalist, binary_path,
+          logger, error_mgr,
           pkgname, messenger)
       orphan_sonames.extend(orphan_sonames_tmp)
 
     ldd_info = pkg_data['ldd_info'][binary_info["path"]]
     for ldd_response in ldd_info:
-      if ldd_response['state'] == 'soname-unused' and ldd_response['soname'] not in BASE_SOLARIS_LIBRARIES:
+      if (ldd_response['state'] == 'soname-unused'
+          and ldd_response['soname'] not in BASE_SOLARIS_LIBRARIES):
         messenger.Message(
-          "Binary %s links to library %s but doesn't seem to use any of its symbols. "
-          "It usually happens because superfluous libraries were added to the linker options, "
-          "either because of the configure script itself or because of the \"pkg-config --libs\""
-          " output of one the dependency."
+          "Binary %s links to library %s but doesn't seem to use any"
+          " of its symbols. It usually happens because superfluous"
+          " libraries were added to the linker options, either because"
+          " of the configure script itself or because of the"
+          " \"pkg-config --libs\" output of one the dependency."
           % ("/" + binary_info["path"], ldd_response['soname']))
         error_mgr.ReportError(
             pkgname, "soname-unused",
-            "%s is needed by %s but never used" % (ldd_response['soname'], "/" + binary_info["path"]))
+            "%s is needed by %s but never used"
+             % (ldd_response['soname'], "/" + binary_info["path"]))
 
     # Even when direct binding is enabled, some symbols might not be
     # directly bound because the library explicitely requested the symbol
     # not to be drectly bound to.
-    # For example, libc.so.1 does it for symbol sigaction, free, malloc and realloc
-    # So we consider that direct binding is enabled if at least one symbol is directly
-    # bound to because that definitely means that -B direct or -z direct was used.
-    directly_bound = set()
-    for syminfo in pkg_data["binaries_elf_info"][binary_info["path"]]['symbol table']:
+    # For example, libc.so.1 does it for symbol sigaction, free, malloc...
+    # So we consider that direct binding is enabled if at least one
+    # symbol is directly bound to because that definitely means that
+    # -B direct or -z direct was used.
+    binary_elf_info = pkg_data["binaries_elf_info"][binary_info["path"]]
+    db_libs = set()
+    for syminfo in binary_elf_info['symbol table']:
       if (syminfo['shndx'] == 'UNDEF' and syminfo['flags']
           and 'D' in syminfo['flags'] and 'B' in syminfo['flags']):
-          directly_bound.add(syminfo['soname'])
-    not_directly_bound = directly_bound.symmetric_difference(binary_info["needed sonames"])
+          db_libs.add(syminfo['soname'])
+    no_db_libs = db_libs.symmetric_difference(binary_info["needed sonames"])
 
-    if not_directly_bound:
+    if no_db_libs:
       messenger.Message(
-        "No symbol of binary %s is directly bound against the following libraries: %s. "
-        "Please make sure the binaries are compiled using the \"-Bdirect\" linker option."
-        % ("/" + binary_info["path"], ", ".join(not_directly_bound)))
-      for soname in not_directly_bound:
+        "No symbol of binary %s is directly bound against the following"
+        " libraries: %s. Please make sure the binaries are compiled using"
+        " the \"-Bdirect\" linker option."
+        % ("/" + binary_info["path"], ", ".join(no_db_libs)))
+      for soname in no_db_libs:
         error_mgr.ReportError(
           pkgname, "no-direct-binding",
-          "%s is not directly bound to soname %s" % ("/" + binary_info["path"], soname))
+          "%s is not directly bound to soname %s"
+           % ("/" + binary_info["path"], soname))
 
 
-    for version_dep in pkg_data["binaries_elf_info"][binary_info["path"]]['version needed']:
+    for version_dep in binary_elf_info['version needed']:
       if (version_dep['soname'] in ALLOWED_VERSION_DEPENDENCIES and
-        not version_dep['version'] in ALLOWED_VERSION_DEPENDENCIES[version_dep['soname']]):
+          not version_dep['version'] in
+          ALLOWED_VERSION_DEPENDENCIES[version_dep['soname']]):
         messenger.Message(
-          "Binary %s requires interface version %s in library %s which is only available "
-          "in recent Solaris releases."
-          % ("/" + binary_info["path"], version_dep['version'], version_dep['soname']))
+          "Binary %s requires interface version %s in library %s which is"
+          " only available in recent Solaris releases."
+          % ("/" + binary_info["path"], version_dep['version'],
+             version_dep['soname']))
         error_mgr.ReportError(
           pkgname, "forbidden-version-interface-dependencies",
           "%s requires forbidden interface version %s in library %s"
-          % ("/" + binary_info["path"], version_dep['version'], version_dep['soname']))
+          % ("/" + binary_info["path"], version_dep['version'],
+             version_dep['soname']))
 
 
   orphan_sonames = set(orphan_sonames)
@@ -262,8 +276,8 @@
       needed_dirs.add(base_dir)
   for needed_dir in needed_dirs:
     reason_group = []
-    # TODO: The preferred directory providers should not depend on other packages to
-    # provide directories.
+    # TODO: The preferred directory providers should not depend on other
+    # packages to provide directories.
     if pkgname not in PREFERRED_DIRECTORY_PROVIDERS:
       # If the path is provided by CSWcommon or other preferred package, don't
       # mention other packages.
@@ -277,7 +291,8 @@
         if not pkg_by_path[needed_dir]:
           # There's no sense in reporting '/' and ''.
           if needed_dir and needed_dir != '/':
-            error_mgr.ReportError(pkgname, "base-dir-not-found", repr(needed_dir))
+            error_mgr.ReportError(pkgname, "base-dir-not-found",
+                                  repr(needed_dir))
         elif len(pkg_by_path[needed_dir]) < 5:
           pkgs_to_mention = pkg_by_path[needed_dir]
         else:
@@ -289,7 +304,8 @@
       if reason_group:
         req_pkgs_reasons.append(reason_group)
     else:
-      error_mgr.ReportError(pkgname, "base-dir-not-provided-by-any-package", needed_dir)
+      error_mgr.ReportError(pkgname, "base-dir-not-provided-by-any-package",
+                            needed_dir)
   return req_pkgs_reasons
 
 
@@ -303,6 +319,7 @@
         error_mgr.GetPathsAndPkgnamesByBasename(basename))
   return path_and_pkg_by_basename
 
+
 def GetPkgByFullPath(error_mgr, logger, paths_to_verify, pkg_by_path):
   """Resolves a list of paths to a mapping between paths and packages.
 
@@ -313,11 +330,13 @@
   for path in paths_to_verify:
     if path not in pkg_by_path:
       result = error_mgr.GetPkgByPath(path)
-      # logger.warning("error_mgr.GetPkgByPath(%s) => %s", repr(path), repr(result))
+      # logger.warning("error_mgr.GetPkgByPath(%s) => %s", repr(path),
+      #                repr(result))
       pkg_by_path[path] = result
   # logger.warning("New paths: %s" % pprint.pformat(pkg_by_path))
   return pkg_by_path
 
+
 def SuggestLibraryPackage(error_mgr, messenger,
     pkgname, catalogname,
     description,

Modified: csw/mgar/gar/v2-yann/lib/python/inspective_package.py
===================================================================
--- csw/mgar/gar/v2-yann/lib/python/inspective_package.py	2012-09-22 13:46:13 UTC (rev 19275)
+++ csw/mgar/gar/v2-yann/lib/python/inspective_package.py	2012-09-22 16:15:20 UTC (rev 19276)
@@ -35,7 +35,7 @@
     return {}
   file_info = {
       "path": StripRe(file_path, ROOT_RE),
-      "mime_type": file_magic.GetFileMimeType(full_path)
+      "mime_type": file_magic.GetFileMimeType(full_path),
   }
   if base_dir:
     file_info["path"] = os.path.join(base_dir, file_info["path"])
@@ -69,16 +69,17 @@
             "Error in hachoir_parser processing %s: %r", file_path, e)
   return file_info
 
+
 def ShellCommand(args, env=None):
-      logging.debug("Running: %s", args)
-      proc = subprocess.Popen(args,
-                              stdout=subprocess.PIPE,
-                              stderr=subprocess.PIPE,
-                              env=env)
-      stdout, stderr = proc.communicate()
-      retcode = proc.wait()
+  logging.debug("Running: %s", args)
+  proc = subprocess.Popen(args,
+                          stdout=subprocess.PIPE,
+                          stderr=subprocess.PIPE,
+                          env=env)
+  stdout, stderr = proc.communicate()
+  retcode = proc.wait()
 
-      return retcode, stdout, stderr
+  return retcode, stdout, stderr
 
 
 class InspectivePackage(package.DirectoryFormatPackage):
@@ -164,7 +165,8 @@
     return os.path.exists(os.path.join(self.directory, "reloc"))
 
   def GetFilesDir(self):
-    """Returns the subdirectory in which files, are either "reloc" or "root"."""
+    """Returns the subdirectory in which files are,
+       either "reloc" or "root"."""
     if self.RelocPresent():
       return "reloc"
     else:
@@ -185,9 +187,11 @@
       if basedir:
         binary_in_tmp_dir = binary_in_tmp_dir[len(basedir):]
         binary_in_tmp_dir = binary_in_tmp_dir.lstrip("/")
-      binary_abs_path = os.path.join(self.directory, self.GetFilesDir(), binary_in_tmp_dir)
+      binary_abs_path = os.path.join(self.directory, self.GetFilesDir(),
+                                     binary_in_tmp_dir)
       binary_base_name = os.path.basename(binary_in_tmp_dir)
-      retcode, stdout, stderr = ShellCommand([common_constants.DUMP_BIN, "-Lv", binary_abs_path], env)
+      args = [common_constants.DUMP_BIN, "-Lv", binary_abs_path]
+      retcode, stdout, stderr = ShellCommand(args, env)
       binary_data = ldd_emul.ParseDumpOutput(stdout)
       binary_data["path"] = binary
       if basedir:
@@ -240,12 +244,14 @@
     """Returns various informations symbol and versions present in elf header
 
     To do this we parse output lines from elfdump -syv, it's the
-    only command that will give us all informations we need on symbols and versions.
+    only command that will give us all informations we need on
+    symbols and versions.
+
     We will analyse 3 sections:
-     - version section: contains soname needed, version interface required for each soname,
-                        and version definition
-     - symbol table section: contains list of symbol and soname/version interface providing it
-                             (the latter is an index in the version section)
+     - version section: contains soname needed, version interface required
+                        for each soname, and version definition
+     - symbol table section: contains list of symbol and soname/version
+                             interface providing it
      - syminfo section: contains special linking flags for each symbol
     """
     binaries = self.ListBinaries()
@@ -266,7 +272,8 @@
                      'version needed': []}
 
       # The list of fields we want to retrieve in the elfdump output by section
-      # the key is the original field name and the value the destination field name
+      # the key is the original field name
+      # the value is the destination field name
       elf_fields = {'version definition': {
                       'version': 'version',
                       'dependency': 'dependency',
@@ -323,9 +330,9 @@
 
       binary_info['symbol table'] = symbols.values()
       binary_info['symbol table'].sort(key=lambda m: m['symbol'])
-      # To not rely of the section order output of elfdump, we resolve symbol version
-      # informations here after having parsed all elfdump output
-      self._ResolveSymbolsVersionInfo (binary_info)
+      # To not rely of the section order output of elfdump, we resolve
+      # symbol version informations here after having parsed all output
+      self._ResolveSymbolsVersionInfo(binary_info)
 
       binaries_elf_info[binary] = binary_info
 
@@ -345,11 +352,13 @@
       if retcode:
         uname_info = os.uname()
         if (uname_info[2] == '5.9' and uname_info[4] == 'i86pc' and
-            '/amd64/' in binary_abspath and 'has wrong class or data encoding' in stderr):
+            '/amd64/' in binary_abspath and
+            'has wrong class or data encoding' in stderr):
           # we are trying to analyze a 64 bits binary on a Solaris 9 x86
           # which exists only in 32 bits, that's not possible
           # we ignore the error and return no information as it is likely
-          # that the ldd infos will be the same on the 32 bits binaries analyzed
+          # that the ldd infos will be the same on the 32 bits binaries
+          # analyzed
           ldd_output[binary] = []
           continue
         else:
@@ -370,19 +379,21 @@
     if not m:
       return None
     fields = line.split()
-    sym = { 'address': fields[0], 'type': fields[1], 'name': fields[2] }
+    sym = {'address': fields[0], 'type': fields[1], 'name': fields[2]}
     return sym
 
   def _ResolveSymbolsVersionInfo(self, binary_info):
 
-    version_info = binary_info['version definition'] + binary_info['version needed']
+    version_info = (binary_info['version definition']
+                    + binary_info['version needed'])
 
     for sym_info in binary_info['symbol table']:
-      # sym_info version field is an 1-based index on the version information table
+      # sym_info version field is an 1-based index on the version
+      # information table
       # we don't care about 0 and 1 values:
       #  0 is for external symbol with no version information available
-      #  1 is for a symbol defined by the binary and not binded to a version interface
-      #    but we removed that (useless) entry from the version definition table
+      #  1 is for a symbol defined by the binary and not binded
+      #    to a version interface
       version_index = int(sym_info['version']) - 2
       if version_index >= 0:
         version = version_info[version_index]
@@ -392,27 +403,32 @@
       else:
         sym_info['version'] = None
 
-      # we make sure these fields are present even if the syminfo section is not
+      # we make sure these fields are present
+      # even if the syminfo section is not
       sym_info.setdefault('soname')
       sym_info.setdefault('flags')
 
-
   def _ParseElfdumpLine(self, line, section=None):
 
     headers_re = (
       r"""
-       (?P<section>Version\sNeeded|Symbol\sTable     # Section header
+       (?P<section>Version\sNeeded|Symbol\sTable  # Section header
                   |Version\sDefinition|Syminfo)
                    \sSection:
         \s+(?:\.SUNW_version|\.dynsym
              |\.SUNW_syminfo|.symtab)\s*$
-       |\s*(?:index\s+)?version\s+dependency\s*$     # Version needed header
-       |\s*(?:index\s+)?file\s+version\s*$           # Version definition header
-       |\s*index\s*value\s+size\s+type\s+bind        # Symbol table header
+
+       |\s*(?:index\s+)?version\s+dependency\s*$  # Version needed header
+
+       |\s*(?:index\s+)?file\s+version\s*$        # Version definition header
+
+       |\s*index\s*value\s+size\s+type\s+bind     # Symbol table header
         \s+oth\s+ver\s+shndx\s+name\s*$
-       |\s*index\s+flags\s+bound\sto\s+symbol\s*$     # Syminfo header
-       |\s*$                                         # There is always a blank
-                                                     # line before a new section
+
+       |\s*index\s+flags\s+bound\sto\s+symbol\s*$ # Syminfo header
+
+       |\s*$                                      # There is always a blank
+                                                  # line before a new section
        """)
 
     re_by_section = {
@@ -483,17 +499,22 @@
                      r'with STV_PROTECTED visibility$')
     sizes_differ = (r'^\trelocation \S+ sizes differ: '
                     r'(?P<sizes_differ_symbol>\S+)$')
-    sizes_info = (r'^\t\t\(file (?P<sizediff_file1>\S+) size=(?P<size1>0x\w+); '
+    sizes_info = (r'^\t\t\(file (?P<sizediff_file1>\S+)'
+                   ' size=(?P<size1>0x\w+); '
                   r'file (?P<sizediff_file2>\S+) size=(?P<size2>0x\w+)\)$')
     sizes_one_used = (r'^\t\t(?P<sizediffused_file>\S+) size used; '
                       r'possible insufficient data copied$')
-    unreferenced_object = (r'^\s*unreferenced object=(?P<object>.*); unused dependency of (?P<binary>.*)$')
+    unreferenced_object = (r'^\s*unreferenced object=(?P<object>.*);'
+                            ' unused dependency of (?P<binary>.*)$')
     unused_object = (r'^\s*unused object=.*$')
-    unused_search_path = (r'^\s*unused search path=.*  \(RUNPATH/RPATH from file .*\)$')
+    unused_search_path = (r'^\s*unused search path=.*'
+                           '  \(RUNPATH/RPATH from file .*\)$')
     blank_line = (r'^\s*$')
     common_re = (r"(%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s)"
-                 % (found_re, symbol_not_found_re, only_so, version_so, stv_protected, sizes_differ, sizes_info,
-                    sizes_one_used, unreferenced_object, unused_object, unused_search_path, blank_line))
+                 % (found_re, symbol_not_found_re, only_so, version_so,
+                    stv_protected, sizes_differ, sizes_info,
+                    sizes_one_used, unreferenced_object, unused_object,
+                    unused_search_path, blank_line))
     m = re.match(common_re, line)
     response = None
     if m:
@@ -526,7 +547,8 @@
         response["path"] = None
         response["symbol"] = None
       elif d["relocation_symbol"]:
-        response["state"] = 'relocation-bound-to-a-symbol-with-STV_PROTECTED-visibility'
+        response["state"] = ("relocation-bound-to-a-symbol"
+                             "-with-STV_PROTECTED-visibility")
         response["soname"] = None
         response["path"] = d["relocation_path"]
         response["symbol"] = d["relocation_symbol"]
@@ -618,9 +640,9 @@
           pkgname, catalogname = fields[0:2]
           obsoleted_by.append((pkgname, catalogname))
 
-    return { "syntax_ok": obsoleted_syntax_ok,
-             "obsoleted_by": obsoleted_by,
-             "has_obsolete_info": has_obsolete_info }
+    return {"syntax_ok": obsoleted_syntax_ok,
+            "obsoleted_by": obsoleted_by,
+            "has_obsolete_info": has_obsolete_info}
 
 
 class FileMagic(object):
@@ -655,7 +677,7 @@
     for i in xrange(10):
       mime = self.magic_cookie.file(full_path)
       if mime:
-        break;
+        break
       else:
         # Returned mime is null. Re-initializing the cookie and trying again.
         logging.error("magic_cookie.file(%s) returned None. Retrying.",
@@ -675,6 +697,7 @@
 
   # The presence of this method makes it explicit that we want an inspective
   # version of the directory format package.
+
   def GetInspectivePkg(self):
     return self.GetDirFormatPkg()
 

This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the devel mailing list