[csw-devel] SF.net SVN: gar:[7753] csw/mgar/gar/v2-checkpkg/bin

wahwah at users.sourceforge.net wahwah at users.sourceforge.net
Sun Dec 27 15:23:14 CET 2009


Revision: 7753
          http://gar.svn.sourceforge.net/gar/?rev=7753&view=rev
Author:   wahwah
Date:     2009-12-27 14:23:13 +0000 (Sun, 27 Dec 2009)

Log Message:
-----------
mGAR v2-checkpkg: Handling self-provided dependencies, added more tests and test data

Modified Paths:
--------------
    csw/mgar/gar/v2-checkpkg/bin/checkpkg.d/checkpkg-libs.py
    csw/mgar/gar/v2-checkpkg/bin/checkpkg.d/checkpkg.py
    csw/mgar/gar/v2-checkpkg/bin/checkpkg.d/checkpkg_test.py
    csw/mgar/gar/v2-checkpkg/bin/mkpackage

Added Paths:
-----------
    csw/mgar/gar/v2-checkpkg/bin/checkpkg.d/checkpkg_test_data_CSWmysql51.py
    csw/mgar/gar/v2-checkpkg/bin/checkpkg.d/checkpkg_test_data_CSWmysql51client.py
    csw/mgar/gar/v2-checkpkg/bin/checkpkg.d/checkpkg_test_data_CSWmysql51rt.py

Modified: csw/mgar/gar/v2-checkpkg/bin/checkpkg.d/checkpkg-libs.py
===================================================================
--- csw/mgar/gar/v2-checkpkg/bin/checkpkg.d/checkpkg-libs.py	2009-12-26 21:18:41 UTC (rev 7752)
+++ csw/mgar/gar/v2-checkpkg/bin/checkpkg.d/checkpkg-libs.py	2009-12-27 14:23:13 UTC (rev 7753)
@@ -14,11 +14,11 @@
 import sys
 
 DUMP_BIN = "/usr/ccs/bin/dump"
-NEEDED_SONAMES = "needed sonames"
 RUNPATH = "runpath"
-TYPICAL_DEPENDENCIES = set(["CSWcommon", "CSWcswclassutils"])
+SONAME = "soname"
 
 def main():
+  errors = []
   options, args = checkpkg.GetOptions()
   if options.debug:
     logging.basicConfig(level=logging.DEBUG)
@@ -32,22 +32,32 @@
     checkers.append(checker)
   binaries = []
   binaries_by_pkgname = {}
+  sonames_by_pkgname = {}
+  pkg_by_any_filename = {}
   for checker in checkers:
     pkg_binary_paths = checker.ListBinaries()
     binaries_base = [os.path.split(x)[1] for x in pkg_binary_paths]
     binaries_by_pkgname[checker.pkgname] = binaries_base
     binaries.extend(pkg_binary_paths)
+    for f in checker.GetAllFilenames():
+    	pkg_by_any_filename[f] = checker.pkgname
   # Making the binaries unique
   binaries = set(binaries)
   ws_re = re.compile(r"\s+")
 
+  # TODO: map from binaries_by_pkgname to sonames_by_pkgname
+  #
+  # Essentially, we must look at libfoo.so.1.2.3 and map it to libfoo.so.1,
+  # whatever soname it has
+
   # man ld.so.1 for more info on this hack
   env = copy.copy(os.environ)
   env["LD_NOAUXFLTR"] = "1"
   needed_sonames_by_binary = {}
+  filenames_by_soname = {}
   # Assembling a data structure with the data about binaries.
   # {
-  #   <binary1 name>: { NEEDED_SONAMES: [...],
+  #   <binary1 name>: { checkpkg.NEEDED_SONAMES: [...],
   #                     RUNPATH:        [...]},
   #   <binary2 name>: ...,
   #   ...
@@ -69,15 +79,19 @@
       if len(fields) < 3:
         continue
       if fields[1] == "NEEDED":
-        if NEEDED_SONAMES not in binary_data:
-          binary_data[NEEDED_SONAMES] = []
-        binary_data[NEEDED_SONAMES].append(fields[2])
+        if checkpkg.NEEDED_SONAMES not in binary_data:
+          binary_data[checkpkg.NEEDED_SONAMES] = []
+        binary_data[checkpkg.NEEDED_SONAMES].append(fields[2])
       elif fields[1] == "RUNPATH":
         if RUNPATH not in binary_data:
           binary_data[RUNPATH] = []
         binary_data[RUNPATH].extend(fields[2].split(":"))
         # Adding the default runtime path search option.
         binary_data[RUNPATH].append("/usr/lib")
+      elif fields[1] == "SONAME":
+        binary_data[SONAME] = fields[2]
+    if SONAME in binary_data:
+      filenames_by_soname[binary_data[SONAME]] = binary_base_name
   # TODO: make it a unit test
   # print needed_sonames_by_binary
 
@@ -89,7 +103,7 @@
   needed_sonames = set()
   binaries_by_soname = {}
   for binary_name, data in needed_sonames_by_binary.iteritems():
-    for soname in data[NEEDED_SONAMES]:
+    for soname in data[checkpkg.NEEDED_SONAMES]:
       needed_sonames.add(soname)
       if soname not in runpath_by_needed_soname:
         runpath_by_needed_soname[soname] = []
@@ -104,79 +118,102 @@
   lines_by_soname = {}
   for soname in needed_sonames:
     try:
+      # This is the critical part of the algorithm: it iterates over the
+      # runpath and finds the first matching one.
+      # 
+      # TODO: Expand $ISALIST to whatever the 'isalist' command outputs for
+      # better matching.
       for runpath in runpath_by_needed_soname[soname]:
-        if runpath in pkgmap.GetPkgmapLineByBasename(soname):
-          # logging.debug("%s found in %s", runpath, pkgmap.GetPkgmapLineByBasename(soname))
-          # logging.debug("line found: %s", repr(pkgmap.GetPkgmapLineByBasename(soname)[runpath]))
-          lines_by_soname[soname] = pkgmap.GetPkgmapLineByBasename(soname)[runpath]
+      	soname_runpath_data = pkgmap.GetPkgmapLineByBasename(soname)
+        if runpath in soname_runpath_data:
+          lines_by_soname[soname] = soname_runpath_data[runpath]
           break
     except KeyError, e:
-      logging.debug("KeyError: %s", soname, e)
-  pkgs_by_soname = {}
+      logging.debug("couldn't find %s in the needed sonames list: %s",
+                    soname, e)
+  pkgs_by_filename = {}
   for soname, line in lines_by_soname.iteritems():
     # TODO: Find all the packages, not just the last field.
     fields = re.split(ws_re, line.strip())
     # For now, we'll assume that the last field is the package.
     pkgname = fields[-1]
-    pkgs_by_soname[soname] = pkgname
+    pkgs_by_filename[soname] = pkgname
 
   # A shared object dependency/provisioning report, plus checking.
   if needed_sonames:
     print "Analysis of sonames needed by the package set:"
     for soname in needed_sonames:
-      if soname in needed_sonames_by_binary:
+      if soname in filenames_by_soname:
         print "%s is provided by the package itself" % soname
       elif soname in lines_by_soname:
         print ("%s is required by %s and provided by %s" 
                % (soname,
                   binaries_by_soname[soname],
-                  repr(pkgs_by_soname[soname])))
+                  repr(pkgs_by_filename[soname])))
       else:
         print ("%s is required by %s, but we don't know what provides it."
                % (soname, binaries_by_soname[soname]))
-        result_ok = False
+        errors.append(checkpkg.Error("%s is required by %s, but we don't know what provides it."
+                                     % (soname, binaries_by_soname[soname])))
     print
 
+  # Data needed for this section:
+  # - pkgname
+  # - declared dependencies
+  # - binaries_by_pkgname
+  # - needed_sonames_by_binary
+  # - pkgs_by_filename
   dependent_pkgs = {}
   for checker in checkers:
     orphan_sonames = set()
     pkgname = checker.pkgname
-    # logging.debug("Reporting package %s", pkgname)
+    print "%s:" % pkgname
     declared_dependencies = checker.GetDependencies()
-    so_dependencies = set()
-    for binary in binaries_by_pkgname[pkgname]:
-      if binary in needed_sonames_by_binary:
-        for soname in needed_sonames_by_binary[binary][NEEDED_SONAMES]:
-          if soname in pkgs_by_soname:
-            so_dependencies.add(pkgs_by_soname[soname])
-          else:
-            orphan_sonames.add(soname)
-      else:
-        logging.warn("%s not found in needed_sonames_by_binary (%s)",
-                     binary, needed_sonames_by_binary.keys())
-    declared_dependencies_set = set(declared_dependencies)
-    missing_deps = so_dependencies.difference(declared_dependencies_set)
+    missing_deps, surplus_deps, orphan_sonames = checkpkg.AnalyzeDependencies(
+        pkgname,
+        declared_dependencies,
+        binaries_by_pkgname,
+        needed_sonames_by_binary,
+        pkgs_by_filename,
+        filenames_by_soname,
+        pkg_by_any_filename)
+
+    save_testing_data = True
+    if save_testing_data:
+      test_fd = open("/var/tmp/checkpkg-dep-testing-data-%s.py" % pkgname, "w")
+      sanitized_pkgname = pkgname.replace("-", "_")
+      print >>test_fd, "# Testing data for %s" % pkgname
+      print >>test_fd, "DATA_PKGNAME =" % sanitized_pkgname, repr(pkgname)
+      print >>test_fd, "DATA_DECLARED_DEPENDENCIES =" % sanitized_pkgname, repr(declared_dependencies)
+      print >>test_fd, "DATA_BINARIES_BY_PKGNAME =" % sanitized_pkgname, repr(binaries_by_pkgname)
+      print >>test_fd, "DATA_NEEDED_SONAMES_BY_BINARY =" % sanitized_pkgname, repr(needed_sonames_by_binary)
+      print >>test_fd, "DATA_PKGS_BY_FILENAME =" % sanitized_pkgname, repr(pkgs_by_filename)
+      print >>test_fd, "DATA_FILENAMES_BY_SONAME =" % sanitized_pkgname, repr(filenames_by_soname)
+      print >>test_fd, "DATA_PKG_BY_ANY_FILENAME =" % sanitized_pkgname, repr(pkg_by_any_filename)
+      test_fd.close()
+
     if missing_deps:
       print "SUGGESTION: you may want to add some or all of the following as depends:"
       print "   (Feel free to ignore SUNW or SPRO packages)"
       for dep_pkgname in sorted(missing_deps):
         print ">", dep_pkgname
-    
-    surplus_dependencies = declared_dependencies_set.difference(so_dependencies)
-    surplus_dependencies = surplus_dependencies.difference(TYPICAL_DEPENDENCIES)
-    if surplus_dependencies:
+    if surplus_deps:
       print "The following packages might be unnecessary dependencies:"
-      for dep_pkgname in surplus_dependencies:
-        print "  ", dep_pkgname
+      for dep_pkgname in surplus_deps:
+        print "? ", dep_pkgname
     if orphan_sonames:
       print "The following sonames don't belong to any package:"
       for soname in sorted(orphan_sonames):
-        print "  ", soname
+        errors.append(checkpkg.Error("The following soname does't belong to "
+                                     "any package: %s" % soname))
+        print "! ", soname
 
-  if result_ok:
+  if errors:
+    for error in errors:
+      logging.error(error)
+    sys.exit(1)
+  else:
     sys.exit(0)
-  else:
-    sys.exit(1)
 
 
 if __name__ == '__main__':

Modified: csw/mgar/gar/v2-checkpkg/bin/checkpkg.d/checkpkg.py
===================================================================
--- csw/mgar/gar/v2-checkpkg/bin/checkpkg.d/checkpkg.py	2009-12-26 21:18:41 UTC (rev 7752)
+++ csw/mgar/gar/v2-checkpkg/bin/checkpkg.d/checkpkg.py	2009-12-27 14:23:13 UTC (rev 7753)
@@ -14,6 +14,9 @@
 
 SYSTEM_PKGMAP = "/var/sadm/install/contents"
 WS_RE = re.compile(r"\s+")
+NEEDED_SONAMES = "needed sonames"
+# Don't report these as unnecessary.
+TYPICAL_DEPENDENCIES = set(["CSWcommon", "CSWcswclassutils", "CSWisaexec"])
 
 class Error(Exception):
   pass
@@ -51,6 +54,11 @@
     self.pkgname = pkgname
     self.pkgpath = os.path.join(self.extractdir, self.pkgname)
 
+  def CheckPkgpathExists(self):
+    if not os.path.isdir(self.pkgpath):
+      raise PackageError("%s does not exist or is not a directory"
+                         % self.pkgpath)
+
   def ListBinaries(self):
     # #########################################
     # # find all executables and dynamic libs,and list their filenames.
@@ -63,10 +71,8 @@
     # 
     #   find $1 -print | xargs file |grep ELF |nawk -F: '{print $1}'
     # }
+    self.CheckPkgpathExists()
     find_tmpl = "find %s -print | xargs file | grep ELF | nawk -F: '{print $1}'"
-    if not os.path.isdir(self.pkgpath):
-      raise PackageError("%s does not exist or is not a directory"
-                         % self.pkgpath)
     find_proc = subprocess.Popen(find_tmpl % self.pkgpath,
                                  shell=True, stdout=subprocess.PIPE)
     stdout, stderr = find_proc.communicate()
@@ -75,6 +81,13 @@
       logging.error("The find command returned an error.")
     return stdout.splitlines()
 
+  def GetAllFilenames(self):
+    self.CheckPkgpathExists()
+    file_basenames = []
+    for root, dirs, files in os.walk(self.pkgpath):
+    	file_basenames.extend(files)
+    return file_basenames
+
   def GetDependencies(self):
     fd = open(os.path.join(self.pkgpath, "install", "depend"), "r")
     depends = {}
@@ -150,3 +163,69 @@
     for row in c:
       lines[row[0]] = row[1]
     return lines
+
+def SharedObjectDependencies(pkgname,
+                             binaries_by_pkgname,
+                             needed_sonames_by_binary,
+                             pkgs_by_soname,
+                             filenames_by_soname,
+                             pkg_by_any_filename):
+  so_dependencies = set()
+  orphan_sonames = set()
+  self_provided = set()
+  for binary in binaries_by_pkgname[pkgname]:
+    if binary in needed_sonames_by_binary:
+      for soname in needed_sonames_by_binary[binary][NEEDED_SONAMES]:
+        if soname in filenames_by_soname:
+          filename = filenames_by_soname[soname]
+          pkg = pkg_by_any_filename[filename]
+          self_provided.add(soname)
+          so_dependencies.add(pkg)
+        elif soname in pkgs_by_soname:
+          so_dependencies.add(pkgs_by_soname[soname])
+        else:
+          orphan_sonames.add(soname)
+    else:
+      logging.warn("%s not found in needed_sonames_by_binary (%s)",
+                   binary, needed_sonames_by_binary.keys())
+  return so_dependencies, self_provided, orphan_sonames
+
+
+def AnalyzeDependencies(pkgname,
+                        declared_dependencies,
+                        binaries_by_pkgname,
+                        needed_sonames_by_binary,
+                        pkgs_by_soname,
+                        filenames_by_soname,
+                        pkg_by_any_filename):
+    """
+    missing_deps, surplus_deps, orphan_sonames = checkpkg.AnalyzeDependencies(...)
+    """
+    so_dependencies, self_provided, orphan_sonames = SharedObjectDependencies(
+        pkgname,
+        binaries_by_pkgname,
+        needed_sonames_by_binary,
+        pkgs_by_soname,
+        filenames_by_soname,
+        pkg_by_any_filename)
+    guessed_deps = set()
+    patterns = (
+        (r".*\.py", u"CSWpython"),
+        (r".*\.pl", u"CSWperl"),
+        (r".*\.rb", u"CSWruby"),
+    )
+    for pattern, dep_pkgname in patterns:
+      # If any file name matches, add the dep, go to the next pattern/pkg
+      # combination.
+      tmp_re = re.compile("^%s$" % pattern)
+      for f in pkg_by_any_filename:
+        if re.match(tmp_re, f):
+          if pkgname == pkg_by_any_filename[f]:
+            guessed_deps.add(dep_pkgname)
+            break
+    auto_dependencies = so_dependencies.union(guessed_deps)
+    declared_dependencies_set = set(declared_dependencies)
+    missing_deps = auto_dependencies.difference(declared_dependencies_set)
+    surplus_deps = declared_dependencies_set.difference(auto_dependencies)
+    surplus_deps = surplus_deps.difference(TYPICAL_DEPENDENCIES)
+    return missing_deps, surplus_deps, orphan_sonames

Modified: csw/mgar/gar/v2-checkpkg/bin/checkpkg.d/checkpkg_test.py
===================================================================
--- csw/mgar/gar/v2-checkpkg/bin/checkpkg.d/checkpkg_test.py	2009-12-26 21:18:41 UTC (rev 7752)
+++ csw/mgar/gar/v2-checkpkg/bin/checkpkg.d/checkpkg_test.py	2009-12-27 14:23:13 UTC (rev 7753)
@@ -1,8 +1,83 @@
 #!/opt/csw/bin/python2.6
+# $Id$
 
 import unittest
+import checkpkg
+import checkpkg_test_data_CSWmysql51rt as d1
+import checkpkg_test_data_CSWmysql51client as d2
+import checkpkg_test_data_CSWmysql51 as d3
 
+class DependenciesUnitTest_1(unittest.TestCase):
 
+  def setUp(self):
+    self.missing_deps, self.surplus_deps, self.orphan_sonames = checkpkg.AnalyzeDependencies(
+        d1.DATA_PKGNAME,
+        d1.DATA_DECLARED_DEPENDENCIES,
+        d1.DATA_BINARIES_BY_PKGNAME,
+        d1.DATA_NEEDED_SONAMES_BY_BINARY,
+        d1.DATA_PKGS_BY_FILENAME,
+        d1.DATA_FILENAMES_BY_SONAME,
+        d1.DATA_PKG_BY_ANY_FILENAME,
+    )
 
+  def testSurplusDeps(self):
+    # set(['CSWmysql51rt', 'CSWosslrt', 'CSWncurses', 'CSWzlib'])
+    self.assertEquals(set([]), self.surplus_deps)
+
+  def testOrphanSonames(self):
+    self.assertEquals(set([]), self.orphan_sonames)
+
+  def testMissingDeps(self):
+    # expected = set([u'SUNWlmsx', u'SUNWlibCx', u'CSWosslrt', u'SUNWcsl', u'SUNWcslx'])
+    self.assertEquals(set([u'SUNWlibC', u'SUNWcsl', u'SUNWlibms']), self.missing_deps)
+
+
+class DependenciesUnitTest_2(unittest.TestCase):
+
+  def setUp(self):
+    self.missing_deps, self.surplus_deps, self.orphan_sonames = checkpkg.AnalyzeDependencies(
+        d2.DATA_PKGNAME,
+        d2.DATA_DECLARED_DEPENDENCIES,
+        d2.DATA_BINARIES_BY_PKGNAME,
+        d2.DATA_NEEDED_SONAMES_BY_BINARY,
+        d2.DATA_PKGS_BY_FILENAME,
+        d2.DATA_FILENAMES_BY_SONAME,
+        d2.DATA_PKG_BY_ANY_FILENAME,
+    )
+
+  def testSurplusDeps(self):
+    self.assertEquals(set([]), self.surplus_deps)
+
+  def testOrphanSonames(self):
+    self.assertEquals(set([]), self.orphan_sonames)
+
+  def testMissingDeps(self):
+    self.assertEquals(set([u'SUNWlibC', u'SUNWcsl', u'SUNWlibms']), self.missing_deps)
+
+
+class DependenciesUnitTest_3(unittest.TestCase):
+
+  def setUp(self):
+    self.missing_deps, self.surplus_deps, self.orphan_sonames = checkpkg.AnalyzeDependencies(
+        d3.DATA_PKGNAME,
+        d3.DATA_DECLARED_DEPENDENCIES,
+        d3.DATA_BINARIES_BY_PKGNAME,
+        d3.DATA_NEEDED_SONAMES_BY_BINARY,
+        d3.DATA_PKGS_BY_FILENAME,
+        d3.DATA_FILENAMES_BY_SONAME,
+        d3.DATA_PKG_BY_ANY_FILENAME,
+    )
+
+  def testSurplusDeps(self):
+    self.assertEquals(set([u'CSWmysql51client']), self.surplus_deps)
+
+  def testOrphanSonames(self):
+    self.assertEquals(set([]), self.orphan_sonames)
+
+  def testMissingDeps(self):
+    expected = set(['CSWmysql51rt', u'SUNWcsl', u'SUNWlibms', u'SUNWlibC'])
+    self.assertEquals(expected, self.missing_deps)
+
+
 if __name__ == '__main__':
 	unittest.main()

Added: csw/mgar/gar/v2-checkpkg/bin/checkpkg.d/checkpkg_test_data_CSWmysql51.py
===================================================================
--- csw/mgar/gar/v2-checkpkg/bin/checkpkg.d/checkpkg_test_data_CSWmysql51.py	                        (rev 0)
+++ csw/mgar/gar/v2-checkpkg/bin/checkpkg.d/checkpkg_test_data_CSWmysql51.py	2009-12-27 14:23:13 UTC (rev 7753)
@@ -0,0 +1,9 @@
+# Testing data for CSWmysql51
+# $Id$
+DATA_PKGNAME = 'CSWmysql51'
+DATA_DECLARED_DEPENDENCIES = {'CSWcswclassutils': 'CSWcswclassutils cswclassutils - CSW class action utilities ', 'CSWcommon': 'CSWcommon common - common files and dirs for CSW packages ', 'CSWmysql51client': 'CSWmysql51client mysql51client - MySQL 5.1 client binaries ', 'CSWisaexec': 'CSWisaexec isaexec - sneaky wrapper around Sun isaexec ', 'CSWzlib': 'CSWzlib zlib - Zlib Data Compression Library ', 'CSWosslrt': 'CSWosslrt openssl_rt - Openssl runtime libraries '}
+DATA_BINARIES_BY_PKGNAME = {'CSWmysql51': ['mysqlslap', 'resolve_stack_dump', 'mysql_tzinfo_to_sql', 'resolveip', 'mysql_waitpid', 'my_print_defaults', 'mysql_upgrade', 'innochecksum', 'myisam_ftdump', 'myisamchk', 'mysqltest', 'resolve_stack_dump', 'mysql_waitpid', 'resolveip', 'my_print_defaults', 'mysqlslap', 'myisamchk', 'innochecksum', 'mysqltest', 'myisam_ftdump', 'mysql_upgrade', 'mysql_tzinfo_to_sql', 'mysqlmanager', 'mysqld', 'mysqlmanager', 'mysqld'], 'CSWmysql51rt': ['libmysqlclient_r.so.16.0.0', 'ha_example.so.0.0.0', 'ha_innodb_plugin.so.0.0.0', 'libmysqlclient.so.16.0.0', 'libmysqlclient_r.so.16.0.0', 'ha_example.so.0.0.0', 'ha_innodb_plugin.so.0.0.0', 'libmysqlclient.so.16.0.0'], 'CSWmysql51test': ['my_safe_process'], 'CSWmysql51client': ['myisampack', 'mysql_client_test', 'mysql', 'mysqlimport', 'mysqladmin', 'mysqldump', 'mysqlbinlog', 'mysqlcheck', 'mysqlshow', 'replace', 'myisamlog', 'perror', 'myisampack', 'mysqldump', 'perror', 'mysqlcheck', 'mysql', 're
 place', 'mysqladmin', 'mysqlimport', 'mysqlbinlog', 'mysql_client_test', 'mysqlshow', 'myisamlog'], 'CSWmysql51bench': [], 'CSWmysql51devel': []}
+DATA_NEEDED_SONAMES_BY_BINARY = {'ha_example.so.0.0.0': {'runpath': ['/opt/csw/lib/$ISALIST', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST/mysql', '/opt/studio/SOS11/SUNWspro/lib/rw7', '/opt/studio/SOS11/SUNWspro/lib/v8', '/opt/studio/SOS11/SUNWspro/lib', '/opt/SUNWspro/lib/v8', '/opt/SUNWspro/lib', '/usr/ccs/lib', '/lib', '/usr/lib', '/usr/lib', '/opt/csw/lib/$ISALIST', '/opt/csw/lib/64', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib/64', '/opt/csw/mysql51/lib/64/$ISALIST/mysql', '/opt/studio/SOS11/SUNWspro/lib/rw7/v9', '/opt/studio/SOS11/SUNWspro/lib/v9', '/opt/SUNWspro/lib/v9', '/usr/ccs/lib/sparcv9', '/lib/sparcv9', '/usr/lib/sparcv9', '/usr/lib'], 'soname': 'ha_example.so.0', 'needed sonames': ['libpthread.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libCstd.so.1', 'libCrun.so.1', 'libpthread.so.1', 'librt.so.1', 'libresolv.so.2', 'li
 bc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libCstd.so.1', 'libCrun.so.1']}, 'mysql_waitpid': {'runpath': ['/opt/csw/lib/$ISALIST', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST/mysql', '/usr/lib', '/opt/csw/lib/$ISALIST', '/opt/csw/lib/64', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib/64', '/opt/csw/mysql51/lib/64/$ISALIST/mysql', '/usr/lib'], 'needed sonames': ['libz.so.1', 'libpthread.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libthread.so.1', 'libz.so.1', 'libpthread.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libthread.so.1']}, 'replace': {'runpath': ['/opt/csw/lib/$ISALIST', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST/mysql', '/usr/lib', '/opt/csw/lib/$ISALIST', '/opt/csw/lib/64', '/opt/csw
 /mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib/64', '/opt/csw/mysql51/lib/64/$ISALIST/mysql', '/usr/lib'], 'needed sonames': ['libz.so.1', 'libpthread.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libthread.so.1', 'libz.so.1', 'libpthread.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libthread.so.1']}, 'myisamchk': {'runpath': ['/opt/csw/lib/$ISALIST', '/opt/csw/lib/64', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib/64', '/opt/csw/mysql51/lib/64/$ISALIST/mysql', '/usr/lib', '/opt/csw/lib/$ISALIST', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST/mysql', '/usr/lib'], 'needed sonames': ['libz.so.1', 'libpthread.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libthread.so.1', 'libz.so.1', 'libpthread.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.
 so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libthread.so.1']}, 'mysqldump': {'runpath': ['/opt/csw/lib/$ISALIST', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST/mysql', '/opt/csw/mysql51/lib/mysql', '/usr/lib', '/opt/csw/lib/$ISALIST', '/opt/csw/lib/64', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib/64', '/opt/csw/mysql51/lib/64/$ISALIST/mysql', '/opt/csw/mysql51/lib/64/mysql', '/usr/lib'], 'needed sonames': ['libpthread.so.1', 'libmysqlclient.so.16', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libssl.so.0.9.8', 'libcrypto.so.0.9.8', 'libz.so.1', 'libthread.so.1', 'libpthread.so.1', 'libmysqlclient.so.16', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libssl.so.0.9.8', 'libcrypto.so.0.9.8', 'libz.so.1', 'libthread.so.1']}, 'mysql': {'runpath': ['/opt/csw/lib/$ISALIST', '/opt/csw/lib/64', '/op
 t/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib/64', '/opt/csw/mysql51/lib/64/$ISALIST/mysql', '/opt/csw/mysql51/lib/64/mysql', '/opt/studio/SOS11/SUNWspro/lib/rw7/v9', '/opt/studio/SOS11/SUNWspro/lib/v9', '/opt/SUNWspro/lib/v9', '/usr/ccs/lib/sparcv9', '/lib/sparcv9', '/usr/lib/sparcv9', '/usr/lib', '/opt/csw/lib/$ISALIST', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST/mysql', '/opt/csw/mysql51/lib/mysql', '/opt/studio/SOS11/SUNWspro/lib/rw7', '/opt/studio/SOS11/SUNWspro/lib/v8', '/opt/studio/SOS11/SUNWspro/lib', '/opt/SUNWspro/lib/v8', '/opt/SUNWspro/lib', '/usr/ccs/lib', '/lib', '/usr/lib', '/usr/lib'], 'needed sonames': ['libncursesw.so.5', 'libpthread.so.1', 'libmysqlclient.so.16', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libssl.so.0.9.8', 'libcrypto.so.0.9.8', 'libz.so.1', 'libCstd.so.1', 'libCrun.so.1', 'libthread.so.1', 'libncursesw.so.5', '
 libpthread.so.1', 'libmysqlclient.so.16', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libssl.so.0.9.8', 'libcrypto.so.0.9.8', 'libz.so.1', 'libCstd.so.1', 'libCrun.so.1', 'libthread.so.1']}, 'myisam_ftdump': {'runpath': ['/opt/csw/lib/$ISALIST', '/opt/csw/lib/64', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib/64', '/opt/csw/mysql51/lib/64/$ISALIST/mysql', '/usr/lib', '/opt/csw/lib/$ISALIST', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST/mysql', '/usr/lib'], 'needed sonames': ['libz.so.1', 'libpthread.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libthread.so.1', 'libz.so.1', 'libpthread.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libthread.so.1']}, 'myisamlog': {'runpath': ['/opt/csw/lib/$ISALIST', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISA
 LIST', '/opt/csw/mysql51/lib', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST/mysql', '/usr/lib', '/opt/csw/lib/$ISALIST', '/opt/csw/lib/64', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib/64', '/opt/csw/mysql51/lib/64/$ISALIST/mysql', '/usr/lib'], 'needed sonames': ['libz.so.1', 'libpthread.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libthread.so.1', 'libz.so.1', 'libpthread.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libthread.so.1']}, 'mysqlimport': {'runpath': ['/opt/csw/lib/$ISALIST', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST/mysql', '/opt/csw/mysql51/lib/mysql', '/usr/lib', '/opt/csw/lib/$ISALIST', '/opt/csw/lib/64', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib/64', '/opt/csw/mysql51/lib/64/$ISALIST/mysql', '/opt/csw/mysql51/lib/64/mysql', '/usr/lib'], 'needed soname
 s': ['libpthread.so.1', 'libmysqlclient_r.so.16', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libssl.so.0.9.8', 'libcrypto.so.0.9.8', 'libz.so.1', 'libthread.so.1', 'libpthread.so.1', 'libmysqlclient_r.so.16', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libssl.so.0.9.8', 'libcrypto.so.0.9.8', 'libz.so.1', 'libthread.so.1']}, 'mysqlcheck': {'runpath': ['/opt/csw/lib/$ISALIST', '/opt/csw/lib/64', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib/64', '/opt/csw/mysql51/lib/64/$ISALIST/mysql', '/opt/csw/mysql51/lib/64/mysql', '/usr/lib', '/opt/csw/lib/$ISALIST', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST/mysql', '/opt/csw/mysql51/lib/mysql', '/usr/lib'], 'needed sonames': ['libpthread.so.1', 'libmysqlclient.so.16', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1',
  'libssl.so.0.9.8', 'libcrypto.so.0.9.8', 'libz.so.1', 'libthread.so.1', 'libpthread.so.1', 'libmysqlclient.so.16', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libssl.so.0.9.8', 'libcrypto.so.0.9.8', 'libz.so.1', 'libthread.so.1']}, 'mysqlmanager': {'runpath': ['/opt/csw/lib/$ISALIST', '/opt/csw/lib/64', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib/64', '/opt/csw/mysql51/lib/64/$ISALIST/mysql', '/opt/studio/SOS11/SUNWspro/lib/rw7/v9', '/opt/studio/SOS11/SUNWspro/lib/v9', '/opt/SUNWspro/lib/v9', '/usr/ccs/lib/sparcv9', '/lib/sparcv9', '/usr/lib/sparcv9', '/usr/lib', '/opt/csw/lib/$ISALIST', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST/mysql', '/opt/studio/SOS11/SUNWspro/lib/rw7', '/opt/studio/SOS11/SUNWspro/lib/v8', '/opt/studio/SOS11/SUNWspro/lib', '/opt/SUNWspro/lib/v8', '/opt/SUNWspro/lib', '/usr/ccs/lib', '/lib', '/usr/lib', '/usr/lib'], 'ne
 eded sonames': ['libpthread.so.1', 'libssl.so.0.9.8', 'libcrypto.so.0.9.8', 'libz.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libCstd.so.1', 'libCrun.so.1', 'libthread.so.1', 'libpthread.so.1', 'libssl.so.0.9.8', 'libcrypto.so.0.9.8', 'libz.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libCstd.so.1', 'libCrun.so.1', 'libthread.so.1']}, 'mysqladmin': {'runpath': ['/opt/csw/lib/$ISALIST', '/opt/csw/lib/64', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib/64', '/opt/csw/mysql51/lib/64/$ISALIST/mysql', '/opt/csw/mysql51/lib/64/mysql', '/opt/studio/SOS11/SUNWspro/lib/rw7/v9', '/opt/studio/SOS11/SUNWspro/lib/v9', '/opt/SUNWspro/lib/v9', '/usr/ccs/lib/sparcv9', '/lib/sparcv9', '/usr/lib/sparcv9', '/usr/lib', '/opt/csw/lib/$ISALIST', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST/mysql', '/opt/csw/
 mysql51/lib/mysql', '/opt/studio/SOS11/SUNWspro/lib/rw7', '/opt/studio/SOS11/SUNWspro/lib/v8', '/opt/studio/SOS11/SUNWspro/lib', '/opt/SUNWspro/lib/v8', '/opt/SUNWspro/lib', '/usr/ccs/lib', '/lib', '/usr/lib', '/usr/lib'], 'needed sonames': ['libpthread.so.1', 'libmysqlclient.so.16', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libssl.so.0.9.8', 'libcrypto.so.0.9.8', 'libz.so.1', 'libCstd.so.1', 'libCrun.so.1', 'libthread.so.1', 'libpthread.so.1', 'libmysqlclient.so.16', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libssl.so.0.9.8', 'libcrypto.so.0.9.8', 'libz.so.1', 'libCstd.so.1', 'libCrun.so.1', 'libthread.so.1']}, 'mysqlshow': {'runpath': ['/opt/csw/lib/$ISALIST', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST/mysql', '/opt/csw/mysql51/lib/mysql', '/usr/lib', '/opt/csw/lib/$ISALIST', '/opt/csw/lib/64', '/op
 t/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib/64', '/opt/csw/mysql51/lib/64/$ISALIST/mysql', '/opt/csw/mysql51/lib/64/mysql', '/usr/lib'], 'needed sonames': ['libpthread.so.1', 'libmysqlclient.so.16', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libssl.so.0.9.8', 'libcrypto.so.0.9.8', 'libz.so.1', 'libthread.so.1', 'libpthread.so.1', 'libmysqlclient.so.16', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libssl.so.0.9.8', 'libcrypto.so.0.9.8', 'libz.so.1', 'libthread.so.1']}, 'libmysqlclient.so.16.0.0': {'runpath': ['/opt/csw/lib/$ISALIST', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST/mysql', '/usr/lib', '/opt/csw/lib/$ISALIST', '/opt/csw/lib/64', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib/64', '/opt/csw/mysql51/lib/64/$ISALIST/mysql', '/usr/lib'], 'soname': 'libmysqlclient.so.16', 'needed sonam
 es': ['librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libssl.so.0.9.8', 'libcrypto.so.0.9.8', 'libz.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libssl.so.0.9.8', 'libcrypto.so.0.9.8', 'libz.so.1']}, 'mysql_upgrade': {'runpath': ['/opt/csw/lib/$ISALIST', '/opt/csw/lib/64', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib/64', '/opt/csw/mysql51/lib/64/$ISALIST/mysql', '/opt/csw/mysql51/lib/64/mysql', '/usr/lib', '/opt/csw/lib/$ISALIST', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST/mysql', '/opt/csw/mysql51/lib/mysql', '/usr/lib'], 'needed sonames': ['libpthread.so.1', 'libmysqlclient.so.16', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libssl.so.0.9.8', 'libcrypto.so.0.9.8', 'libz.so.1', 'libthread.so.1', 'libpthread.so.1', 'libmysqlclient.so.16', 'librt
 .so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libssl.so.0.9.8', 'libcrypto.so.0.9.8', 'libz.so.1', 'libthread.so.1']}, 'innochecksum': {'runpath': ['/opt/csw/lib/$ISALIST', '/opt/csw/lib/64', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib/64', '/opt/csw/mysql51/lib/64/$ISALIST/mysql', '/usr/lib', '/opt/csw/lib/$ISALIST', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST/mysql', '/usr/lib'], 'needed sonames': ['libz.so.1', 'libpthread.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libthread.so.1', 'libz.so.1', 'libpthread.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libthread.so.1']}, 'mysqlbinlog': {'runpath': ['/opt/csw/lib/$ISALIST', '/opt/csw/lib/64', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib/64', '/opt/csw/mysql51/lib/64/$ISALIST/mysql', 
 '/opt/csw/mysql51/lib/64/mysql', '/opt/studio/SOS11/SUNWspro/lib/rw7/v9', '/opt/studio/SOS11/SUNWspro/lib/v9', '/opt/SUNWspro/lib/v9', '/usr/ccs/lib/sparcv9', '/lib/sparcv9', '/usr/lib/sparcv9', '/usr/lib', '/opt/csw/lib/$ISALIST', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST/mysql', '/opt/csw/mysql51/lib/mysql', '/opt/studio/SOS11/SUNWspro/lib/rw7', '/opt/studio/SOS11/SUNWspro/lib/v8', '/opt/studio/SOS11/SUNWspro/lib', '/opt/SUNWspro/lib/v8', '/opt/SUNWspro/lib', '/usr/ccs/lib', '/lib', '/usr/lib', '/usr/lib'], 'needed sonames': ['libpthread.so.1', 'libmysqlclient.so.16', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libssl.so.0.9.8', 'libcrypto.so.0.9.8', 'libz.so.1', 'libCstd.so.1', 'libCrun.so.1', 'libthread.so.1', 'libpthread.so.1', 'libmysqlclient.so.16', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libs
 sl.so.0.9.8', 'libcrypto.so.0.9.8', 'libz.so.1', 'libCstd.so.1', 'libCrun.so.1', 'libthread.so.1']}, 'myisampack': {'runpath': ['/opt/csw/lib/$ISALIST', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST/mysql', '/usr/lib', '/opt/csw/lib/$ISALIST', '/opt/csw/lib/64', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib/64', '/opt/csw/mysql51/lib/64/$ISALIST/mysql', '/usr/lib'], 'needed sonames': ['libz.so.1', 'libpthread.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libthread.so.1', 'libz.so.1', 'libpthread.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libthread.so.1']}, 'my_safe_process': {'runpath': ['/opt/csw/lib/$ISALIST', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST/mysql', '/opt/studio/SOS11/SUNWspro/lib/rw7', '/opt/studi
 o/SOS11/SUNWspro/lib/v8', '/opt/studio/SOS11/SUNWspro/lib', '/opt/SUNWspro/lib/v8', '/opt/SUNWspro/lib', '/usr/ccs/lib', '/lib', '/usr/lib', '/usr/lib'], 'needed sonames': ['libpthread.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libCstd.so.1', 'libCrun.so.1', 'libthread.so.1']}, 'my_print_defaults': {'runpath': ['/opt/csw/lib/$ISALIST', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST/mysql', '/usr/lib', '/opt/csw/lib/$ISALIST', '/opt/csw/lib/64', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib/64', '/opt/csw/mysql51/lib/64/$ISALIST/mysql', '/usr/lib'], 'needed sonames': ['libz.so.1', 'libpthread.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libthread.so.1', 'libz.so.1', 'libpthread.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libthread.so
 .1']}, 'mysql_tzinfo_to_sql': {'runpath': ['/opt/csw/lib/$ISALIST', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST/mysql', '/opt/studio/SOS11/SUNWspro/lib/rw7', '/opt/studio/SOS11/SUNWspro/lib/v8', '/opt/studio/SOS11/SUNWspro/lib', '/opt/SUNWspro/lib/v8', '/opt/SUNWspro/lib', '/usr/ccs/lib', '/lib', '/usr/lib', '/usr/lib', '/opt/csw/lib/$ISALIST', '/opt/csw/lib/64', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib/64', '/opt/csw/mysql51/lib/64/$ISALIST/mysql', '/opt/studio/SOS11/SUNWspro/lib/rw7/v9', '/opt/studio/SOS11/SUNWspro/lib/v9', '/opt/SUNWspro/lib/v9', '/usr/ccs/lib/sparcv9', '/lib/sparcv9', '/usr/lib/sparcv9', '/usr/lib'], 'needed sonames': ['libz.so.1', 'libpthread.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libCstd.so.1', 'libCrun.so.1', 'libthread.so.1', 'libz.so.1', 'libpthread.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', '
 libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libCstd.so.1', 'libCrun.so.1', 'libthread.so.1']}, 'mysqld': {'runpath': ['/opt/csw/lib/$ISALIST', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST/mysql', '/opt/studio/SOS11/SUNWspro/lib/rw7', '/opt/studio/SOS11/SUNWspro/lib/v8', '/opt/studio/SOS11/SUNWspro/lib', '/opt/SUNWspro/lib/v8', '/opt/SUNWspro/lib', '/usr/ccs/lib', '/lib', '/usr/lib', '/usr/lib', '/opt/csw/lib/$ISALIST', '/opt/csw/lib/64', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib/64', '/opt/csw/mysql51/lib/64/$ISALIST/mysql', '/opt/studio/SOS11/SUNWspro/lib/rw7/v9', '/opt/studio/SOS11/SUNWspro/lib/v9', '/opt/SUNWspro/lib/v9', '/usr/ccs/lib/sparcv9', '/lib/sparcv9', '/usr/lib/sparcv9', '/usr/lib'], 'needed sonames': ['libpthread.so.1', 'libz.so.1', 'libdl.so.1', 'libssl.so.0.9.8', 'libcrypto.so.0.9.8', 'libmtmalloc.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'lib
 nsl.so.1', 'libm.so.1', 'libCstd.so.1', 'libCrun.so.1', 'libthread.so.1', 'libpthread.so.1', 'libz.so.1', 'libdl.so.1', 'libssl.so.0.9.8', 'libcrypto.so.0.9.8', 'libmtmalloc.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libCstd.so.1', 'libCrun.so.1', 'libthread.so.1']}, 'mysqlslap': {'runpath': ['/opt/csw/lib/$ISALIST', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST/mysql', '/opt/csw/mysql51/lib/mysql', '/usr/lib', '/opt/csw/lib/$ISALIST', '/opt/csw/lib/64', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib/64', '/opt/csw/mysql51/lib/64/$ISALIST/mysql', '/opt/csw/mysql51/lib/64/mysql', '/usr/lib'], 'needed sonames': ['libpthread.so.1', 'libmysqlclient_r.so.16', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libssl.so.0.9.8', 'libcrypto.so.0.9.8', 'libz.so.1', 'libthread.so.1', 'libpthread.so.1', 'libmy
 sqlclient_r.so.16', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libssl.so.0.9.8', 'libcrypto.so.0.9.8', 'libz.so.1', 'libthread.so.1']}, 'ha_innodb_plugin.so.0.0.0': {'runpath': ['/opt/csw/lib/$ISALIST', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST/mysql', '/opt/studio/SOS11/SUNWspro/lib/rw7', '/opt/studio/SOS11/SUNWspro/lib/v8', '/opt/studio/SOS11/SUNWspro/lib', '/opt/SUNWspro/lib/v8', '/opt/SUNWspro/lib', '/usr/ccs/lib', '/lib', '/usr/lib', '/usr/lib', '/opt/csw/lib/$ISALIST', '/opt/csw/lib/64', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib/64', '/opt/csw/mysql51/lib/64/$ISALIST/mysql', '/opt/studio/SOS11/SUNWspro/lib/rw7/v9', '/opt/studio/SOS11/SUNWspro/lib/v9', '/opt/SUNWspro/lib/v9', '/usr/ccs/lib/sparcv9', '/lib/sparcv9', '/usr/lib/sparcv9', '/usr/lib'], 'soname': 'ha_innodb_plugin.so.0', 'needed sonames': ['libpthread.so.1', 'librt.so.1',
  'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libCstd.so.1', 'libCrun.so.1', 'libpthread.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libCstd.so.1', 'libCrun.so.1']}, 'perror': {'runpath': ['/opt/csw/lib/$ISALIST', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST/mysql', '/usr/lib', '/opt/csw/lib/$ISALIST', '/opt/csw/lib/64', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib/64', '/opt/csw/mysql51/lib/64/$ISALIST/mysql', '/usr/lib'], 'needed sonames': ['libz.so.1', 'libpthread.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libthread.so.1', 'libz.so.1', 'libpthread.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libthread.so.1']}, 'libmysqlclient_r.so.16.0.0': {'runpath': ['/opt/csw/lib/$ISALIST', '/opt/csw/lib', '
 /opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST/mysql', '/usr/lib', '/opt/csw/lib/$ISALIST', '/opt/csw/lib/64', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib/64', '/opt/csw/mysql51/lib/64/$ISALIST/mysql', '/usr/lib'], 'soname': 'libmysqlclient_r.so.16', 'needed sonames': ['libpthread.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libz.so.1', 'libssl.so.0.9.8', 'libcrypto.so.0.9.8', 'libpthread.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libz.so.1', 'libssl.so.0.9.8', 'libcrypto.so.0.9.8']}, 'mysqltest': {'runpath': ['/opt/csw/lib/$ISALIST', '/opt/csw/lib/64', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib/64', '/opt/csw/mysql51/lib/64/$ISALIST/mysql', '/opt/csw/mysql51/lib/64/mysql', '/opt/studio/SOS11/SUNWspro/lib/rw7/v9', '/opt/studio/SOS11/SUNWspro/lib/v9', '/opt/SUNWspro/lib/v9', '/usr/ccs/lib/s
 parcv9', '/lib/sparcv9', '/usr/lib/sparcv9', '/usr/lib', '/opt/csw/lib/$ISALIST', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST/mysql', '/opt/csw/mysql51/lib/mysql', '/opt/studio/SOS11/SUNWspro/lib/rw7', '/opt/studio/SOS11/SUNWspro/lib/v8', '/opt/studio/SOS11/SUNWspro/lib', '/opt/SUNWspro/lib/v8', '/opt/SUNWspro/lib', '/usr/ccs/lib', '/lib', '/usr/lib', '/usr/lib'], 'needed sonames': ['libpthread.so.1', 'libmysqlclient_r.so.16', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libssl.so.0.9.8', 'libcrypto.so.0.9.8', 'libz.so.1', 'libCstd.so.1', 'libCrun.so.1', 'libthread.so.1', 'libpthread.so.1', 'libmysqlclient_r.so.16', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libssl.so.0.9.8', 'libcrypto.so.0.9.8', 'libz.so.1', 'libCstd.so.1', 'libCrun.so.1', 'libthread.so.1']}, 'resolve_stack_dump': {'runpath': ['/opt/csw/
 lib/$ISALIST', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST/mysql', '/usr/lib', '/opt/csw/lib/$ISALIST', '/opt/csw/lib/64', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib/64', '/opt/csw/mysql51/lib/64/$ISALIST/mysql', '/usr/lib'], 'needed sonames': ['libz.so.1', 'libpthread.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libthread.so.1', 'libz.so.1', 'libpthread.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libthread.so.1']}, 'resolveip': {'runpath': ['/opt/csw/lib/$ISALIST', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST/mysql', '/usr/lib', '/opt/csw/lib/$ISALIST', '/opt/csw/lib/64', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib/64', '/opt/csw/mysql51/lib/64/$ISALIST/mysql', '/usr/lib'], 'needed sonames': ['li
 bz.so.1', 'libpthread.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libthread.so.1', 'libz.so.1', 'libpthread.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libthread.so.1']}, 'mysql_client_test': {'runpath': ['/opt/csw/lib/$ISALIST', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib', '/opt/csw/lib', '/opt/csw/mysql51/lib/$ISALIST/mysql', '/opt/csw/mysql51/lib/mysql', '/usr/lib', '/opt/csw/lib/$ISALIST', '/opt/csw/lib/64', '/opt/csw/mysql51/lib/$ISALIST', '/opt/csw/mysql51/lib/64', '/opt/csw/mysql51/lib/64/$ISALIST/mysql', '/opt/csw/mysql51/lib/64/mysql', '/usr/lib'], 'needed sonames': ['libmysqlclient_r.so.16', 'libpthread.so.1', 'librt.so.1', 'libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libssl.so.0.9.8', 'libcrypto.so.0.9.8', 'libz.so.1', 'libthread.so.1', 'libmysqlclient_r.so.16', 'libpthread.so.1', 'librt.so.1', '
 libresolv.so.2', 'libc.so.1', 'libsocket.so.1', 'libnsl.so.1', 'libm.so.1', 'libssl.so.0.9.8', 'libcrypto.so.0.9.8', 'libz.so.1', 'libthread.so.1']}}
+DATA_PKGS_BY_FILENAME = {'libresolv.so.2': u'SUNWcsl', 'libthread.so.1': u'SUNWcsl', 'libmtmalloc.so.1': u'SUNWcsl', 'libnsl.so.1': u'SUNWcsl', 'libCstd.so.1': u'SUNWlibC', 'libCrun.so.1': u'SUNWlibC', 'libssl.so.0.9.8': u'CSWosslrt', 'librt.so.1': u'SUNWcsl', 'libz.so.1': u'CSWzlib', 'libncursesw.so.5': u'CSWncurses', 'libsocket.so.1': u'SUNWcsl', 'libm.so.1': u'SUNWlibms', 'libpthread.so.1': u'SUNWcsl', 'libcrypto.so.0.9.8': u'CSWosslrt', 'libdl.so.1': u'SUNWcsl', 'libc.so.1': u'SUNWcsl'}
+DATA_FILENAMES_BY_SONAME = {'ha_example.so.0': 'ha_example.so.0.0.0', 'libmysqlclient_r.so.16': 'libmysqlclient_r.so.16.0.0', 'libmysqlclient.so.16': 'libmysqlclient.so.16.0.0', 'ha_innodb_plugin.so.0': 'ha_innodb_plugin.so.0.0.0'}

@@ Diff output truncated at 100000 characters. @@

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