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

wahwah at users.sourceforge.net wahwah at users.sourceforge.net
Wed Sep 1 23:36:04 CEST 2010


Revision: 10885
          http://gar.svn.sourceforge.net/gar/?rev=10885&view=rev
Author:   wahwah
Date:     2010-09-01 21:36:04 +0000 (Wed, 01 Sep 2010)

Log Message:
-----------
mGAR v2: checkpkg, better handling of the deprecated libraries error.

Modified Paths:
--------------
    csw/mgar/gar/v2/lib/python/checkpkg.py
    csw/mgar/gar/v2/lib/python/checkpkg_test.py
    csw/mgar/gar/v2/lib/python/dependency_checks.py
    csw/mgar/gar/v2/lib/python/dependency_checks_test.py
    csw/mgar/gar/v2/lib/python/package_checks_test.py

Added Paths:
-----------
    csw/mgar/gar/v2/lib/python/testdata/apr_util_stats.py

Modified: csw/mgar/gar/v2/lib/python/checkpkg.py
===================================================================
--- csw/mgar/gar/v2/lib/python/checkpkg.py	2010-09-01 21:26:08 UTC (rev 10884)
+++ csw/mgar/gar/v2/lib/python/checkpkg.py	2010-09-01 21:36:04 UTC (rev 10885)
@@ -695,7 +695,8 @@
     return self.runpath_sanitize_cache[runpath]
 
 
-  def ResolveSoname(self, runpath_list, soname, isalist, path_list, binary_path):
+  def ResolveSoname(self, runpath_list, soname, isalist,
+                    path_list, binary_path):
     """Emulates ldd behavior, minimal implementation.
 
     runpath: e.g. ["/opt/csw/lib/$ISALIST", "/usr/lib"]
@@ -717,8 +718,9 @@
       # in the path_list.
       for expanded_p in expanded_p_list:
         original_paths_by_expanded_paths[expanded_p] = p
-    # logging.debug("%s: looking for %s in %s",
-    #     soname, runpath_list, original_paths_by_expanded_paths.keys())
+    logging.debug(
+        "%s: looking for %s in %s",
+        soname, runpath_list, original_paths_by_expanded_paths.keys())
     for runpath_expanded in runpath_list:
       if runpath_expanded in original_paths_by_expanded_paths:
         # logging.debug("Found %s",

Modified: csw/mgar/gar/v2/lib/python/checkpkg_test.py
===================================================================
--- csw/mgar/gar/v2/lib/python/checkpkg_test.py	2010-09-01 21:26:08 UTC (rev 10884)
+++ csw/mgar/gar/v2/lib/python/checkpkg_test.py	2010-09-01 21:36:04 UTC (rev 10885)
@@ -463,5 +463,23 @@
     self.assertTrue(expected, checkpkg.SliceList(l, s))
 
 
+class LddEmulartorUnitTest(unittest.TestCase):
+
+  def setUp(self):
+    self.pkgmap_mocker = mox.Mox()
+    self.e = checkpkg.LddEmulator()
+
+  def testResolveSoname_1(self):
+    # runpath_list, soname, isalist, path_list, binary_path
+    runpath_list = ["/opt/csw/bdb47/lib", "/opt/csw/lib"]
+    soname = "foo.so.1"
+    path_list = ["/opt/csw/lib", "/opt/csw/bdb47/lib", "/usr/lib"]
+    binary_path = "unused"
+    isalist = ["amd64"]
+    result = self.e.ResolveSoname(runpath_list, soname, isalist,
+                                  path_list, binary_path)
+    self.assertEqual("/opt/csw/bdb47/lib", result)
+
+
 if __name__ == '__main__':
   unittest.main()

Modified: csw/mgar/gar/v2/lib/python/dependency_checks.py
===================================================================
--- csw/mgar/gar/v2/lib/python/dependency_checks.py	2010-09-01 21:26:08 UTC (rev 10884)
+++ csw/mgar/gar/v2/lib/python/dependency_checks.py	2010-09-01 21:36:04 UTC (rev 10885)
@@ -30,6 +30,77 @@
 
 PREFERRED_DIRECTORY_PROVIDERS = set([u"CSWcommon"])
 
+def ProcessSoname(
+    ldd_emulator,
+    soname, path_and_pkg_by_basename, binary_info, isalist, binary_path, logger,
+    error_mgr,
+    pkgname, messenger):
+  """This is not an ideal name for a function.
+
+  Returns:
+    orphan_sonames
+  """
+  orphan_sonames = []
+  required_deps = []
+  resolved = False
+  path_list = path_and_pkg_by_basename[soname].keys()
+  runpath_tuple = (
+      tuple(binary_info["runpath"])
+      + tuple(checkpkg.SYS_DEFAULT_RUNPATH))
+  runpath_history = []
+  alternative_deps = set()
+  first_lib = None
+  for runpath in runpath_tuple:
+    runpath = ldd_emulator.SanitizeRunpath(runpath)
+    runpath_list = ldd_emulator.ExpandRunpath(runpath, isalist, binary_path)
+    runpath_list = ldd_emulator.Emulate64BitSymlinks(runpath_list)
+    # To accumulate all the runpaths that we were looking at
+    runpath_history += runpath_list
+    resolved_path = ldd_emulator.ResolveSoname(runpath_list,
+                                               soname,
+                                               isalist,
+                                               path_list,
+                                               binary_path)
+    if resolved_path:
+      resolved = True
+      req_pkgs = path_and_pkg_by_basename[soname][resolved_path]
+      reason = ("provides %s/%s needed by %s"
+                % (resolved_path, soname, binary_info["path"]))
+      # Looking for deprecated libraries.  However, only alerting if the
+      # deprecated library is the first one found in the RPATH.  For example,
+      # libdb-4.7.so is found in CSWbdb and CSWbdb47, and it's important to
+      # throw an error if the RPATH is ("/opt/csw/lib", "/opt/csw/bdb47/lib"),
+      # and not to throw an error if RPATH is ("/opt/csw/bdb47/lib",
+      # "/opt/csw/lib")
+      if not first_lib:
+        first_lib = (resolved_path, soname)
+        for bad_path, bad_soname, msg in DEPRECATED_LIBRARY_LOCATIONS:
+          if resolved_path == bad_path and soname == bad_soname:
+            logger.debug("Bad lib found: %s/%s", bad_path, bad_soname)
+            error_mgr.ReportError(
+                pkgname,
+                "deprecated-library",
+                ("%s %s %s/%s"
+                 % (binary_info["path"], msg, resolved_path, soname)))
+      for req_pkg in req_pkgs:
+        alternative_deps.add((req_pkg, reason))
+  required_deps.append(list(alternative_deps))
+  if not resolved:
+    orphan_sonames.append((soname, binary_info["path"]))
+    if path_list:
+      path_msg = "was available at the following paths: %s." % path_list
+    else:
+      path_msg = ("was not present on the filesystem, "
+                  "nor in the packages under examination.")
+    if soname not in ALLOWED_ORPHAN_SONAMES:
+      messenger.Message(
+          "%s could not be resolved for %s, with rpath %s, expanded to %s, "
+          "while the file %s"
+          % (soname, binary_info["path"],
+             runpath_tuple, runpath_history, path_msg))
+  return orphan_sonames, required_deps
+
+
 def Libraries(pkg_data, error_mgr, logger, messenger, path_and_pkg_by_basename,
               pkg_by_path):
   """Checks shared libraries.
@@ -49,66 +120,20 @@
   """
   pkgname = pkg_data["basic_stats"]["pkgname"]
   logger.debug("Libraries(): pkgname = %s", repr(pkgname))
+  isalist = pkg_data["isalist"]
+  ldd_emulator = checkpkg.LddEmulator()
   orphan_sonames = []
   required_deps = []
-  isalist = pkg_data["isalist"]
-  ldd_emulator = checkpkg.LddEmulator()
   for binary_info in pkg_data["binaries_dump_info"]:
     binary_path, binary_basename = os.path.split(binary_info["path"])
     for soname in binary_info["needed sonames"]:
-      resolved = False
-      path_list = path_and_pkg_by_basename[soname].keys()
-      # logger.debug("%s @ %s: looking for %s in %s",
-      #              soname,
-      #              binary_info["path"],
-      #              binary_info["runpath"],
-      #              path_list)
-      runpath_tuple = (tuple(binary_info["runpath"])
-                      + tuple(checkpkg.SYS_DEFAULT_RUNPATH))
-      runpath_history = []
-      alternative_deps = set()
-      for runpath in runpath_tuple:
-        runpath = ldd_emulator.SanitizeRunpath(runpath)
-        runpath_list = ldd_emulator.ExpandRunpath(runpath, isalist, binary_path)
-        runpath_list = ldd_emulator.Emulate64BitSymlinks(runpath_list)
-        # To accumulate all the runpaths that we were looking at
-        runpath_history += runpath_list
-        resolved_path = ldd_emulator.ResolveSoname(runpath_list,
-                                                   soname,
-                                                   isalist,
-                                                   path_list,
-                                                   binary_path)
-        if resolved_path:
-          resolved = True
-          req_pkgs = path_and_pkg_by_basename[soname][resolved_path]
-          reason = ("provides %s/%s needed by %s"
-                    % (resolved_path, soname, binary_info["path"]))
-          # Looking for deprecated libraries.
-          for bad_path, bad_soname, msg in DEPRECATED_LIBRARY_LOCATIONS:
-            if resolved_path == bad_path and soname == bad_soname:
-              logger.debug("Bad lib found: %s/%s", bad_path, bad_soname)
-              error_mgr.ReportError(
-                  pkgname,
-                  "deprecated-library",
-                  ("%s %s %s/%s"
-                   % (binary_info["path"], msg, resolved_path, soname)))
-          for req_pkg in req_pkgs:
-            alternative_deps.add((req_pkg, reason))
-      # print "alternative_deps:", alternative_deps
-      required_deps.append(list(alternative_deps))
-      if not resolved:
-        orphan_sonames.append((soname, binary_info["path"]))
-        if path_list:
-          path_msg = "was available at the following paths: %s." % path_list
-        else:
-          path_msg = ("was not present on the filesystem, "
-                      "nor in the packages under examination.")
-        if soname not in ALLOWED_ORPHAN_SONAMES:
-          messenger.Message(
-              "%s could not be resolved for %s, with rpath %s, expanded to %s, "
-              "while the file %s"
-              % (soname, binary_info["path"],
-                 runpath_tuple, runpath_history, path_msg))
+      orphan_sonames_tmp, required_deps_tmp = ProcessSoname(
+          ldd_emulator,
+          soname, path_and_pkg_by_basename, binary_info, isalist, binary_path, logger,
+          error_mgr,
+          pkgname, messenger)
+      orphan_sonames.extend(orphan_sonames_tmp)
+      required_deps.extend(required_deps_tmp)
   orphan_sonames = set(orphan_sonames)
   for soname, binary_path in orphan_sonames:
     if soname not in ALLOWED_ORPHAN_SONAMES:

Modified: csw/mgar/gar/v2/lib/python/dependency_checks_test.py
===================================================================
--- csw/mgar/gar/v2/lib/python/dependency_checks_test.py	2010-09-01 21:26:08 UTC (rev 10884)
+++ csw/mgar/gar/v2/lib/python/dependency_checks_test.py	2010-09-01 21:36:04 UTC (rev 10885)
@@ -325,7 +325,9 @@
         checkpkg.SetCheckInterface)
     self.pkg_data = copy.deepcopy(sudo_stats)
 
-  def testOne(self):
+  def testLibrariesRpathOrder(self):
+    # pkg_data, error_mgr, logger, messenger, path_and_pkg_by_basename,
+    # pkg_by_path
     pass
 
 

Modified: csw/mgar/gar/v2/lib/python/package_checks_test.py
===================================================================
--- csw/mgar/gar/v2/lib/python/package_checks_test.py	2010-09-01 21:26:08 UTC (rev 10884)
+++ csw/mgar/gar/v2/lib/python/package_checks_test.py	2010-09-01 21:36:04 UTC (rev 10885)
@@ -466,6 +466,66 @@
     self.pkg_data = [self.pkg_data]
 
 
+class TestDeprecatedLibraries_GoodRpath(CheckpkgUnitTestHelper, unittest.TestCase):
+  FUNCTION_NAME = 'SetCheckLibraries'
+  def CheckpkgTest(self):
+    binaries_dump_info = self.pkg_data["binaries_dump_info"]
+    binaries_dump_info[0]["runpath"] = ("/opt/csw/bdb47/lib", "/opt/csw/lib",)
+    binaries_dump_info[0]["needed sonames"] = ["libdb-4.7.so"]
+    self.pkg_data["depends"] = (("CSWbad", None),(u"CSWcommon", ""))
+    self.pkg_data["binaries_dump_info"] = binaries_dump_info[0:1]
+    self.error_mgr_mock.GetPathsAndPkgnamesByBasename('libdb-4.7.so').AndReturn({
+       u'/opt/csw/bdb47/lib':         [u'CSWbad'],
+       u'/opt/csw/bdb47lib/sparcv9': [u'CSWbad'],
+       u'/opt/csw/lib':               [u'CSWgood'],
+       u'/opt/csw/lib/sparcv9':       [u'CSWgood'],
+    })
+    self.error_mgr_mock.GetPkgByPath(
+        '/opt/csw/share/man').AndReturn(["CSWcommon"])
+    self.error_mgr_mock.GetPkgByPath(
+        '/opt/csw/bin').AndReturn(["CSWcommon"])
+    self.error_mgr_mock.GetPkgByPath(
+        '/opt/csw/bin/sparcv8').AndReturn(["CSWcommon"])
+    self.error_mgr_mock.GetPkgByPath(
+        '/opt/csw/bin/sparcv9').AndReturn(["CSWcommon"])
+    self.error_mgr_mock.GetPkgByPath(
+        '/opt/csw/share/doc').AndReturn(["CSWcommon"])
+    # There should be no error here, since /opt/csw/bdb47/lib is first in the RPATH.
+    self.pkg_data = [self.pkg_data]
+
+
+class TestDeprecatedLibraries_BadRpath(CheckpkgUnitTestHelper, unittest.TestCase):
+  FUNCTION_NAME = 'SetCheckLibraries'
+  def CheckpkgTest(self):
+    binaries_dump_info = self.pkg_data["binaries_dump_info"]
+    binaries_dump_info[0]["runpath"] = ("/opt/csw/lib", "/opt/csw/bdb47/lib",)
+    binaries_dump_info[0]["needed sonames"] = ["libdb-4.7.so"]
+    self.pkg_data["depends"] = (("CSWbad", None),(u"CSWcommon", ""))
+    self.pkg_data["binaries_dump_info"] = binaries_dump_info[0:1]
+    self.error_mgr_mock.GetPathsAndPkgnamesByBasename('libdb-4.7.so').AndReturn({
+       u'/opt/csw/bdb47/lib':         [u'CSWbad'],
+       u'/opt/csw/bdb47lib/sparcv9': [u'CSWbad'],
+       u'/opt/csw/lib':               [u'CSWgood'],
+       u'/opt/csw/lib/sparcv9':       [u'CSWgood'],
+    })
+    self.error_mgr_mock.GetPkgByPath(
+        '/opt/csw/share/man').AndReturn(["CSWcommon"])
+    self.error_mgr_mock.GetPkgByPath(
+        '/opt/csw/bin').AndReturn(["CSWcommon"])
+    self.error_mgr_mock.GetPkgByPath(
+        '/opt/csw/bin/sparcv8').AndReturn(["CSWcommon"])
+    self.error_mgr_mock.GetPkgByPath(
+        '/opt/csw/bin/sparcv9').AndReturn(["CSWcommon"])
+    self.error_mgr_mock.GetPkgByPath(
+        '/opt/csw/share/doc').AndReturn(["CSWcommon"])
+    self.error_mgr_mock.ReportError(
+        'CSWrsync',
+        'deprecated-library',
+        u'opt/csw/bin/sparcv8/rsync Deprecated Berkeley DB location '
+        u'/opt/csw/lib/libdb-4.7.so')
+    self.pkg_data = [self.pkg_data]
+
+
 class TestSetCheckLibmLinking(CheckpkgUnitTestHelper, unittest.TestCase):
   FUNCTION_NAME = 'SetCheckLibraries'
   def CheckpkgTest(self):

Added: csw/mgar/gar/v2/lib/python/testdata/apr_util_stats.py
===================================================================
--- csw/mgar/gar/v2/lib/python/testdata/apr_util_stats.py	                        (rev 0)
+++ csw/mgar/gar/v2/lib/python/testdata/apr_util_stats.py	2010-09-01 21:36:04 UTC (rev 10885)
@@ -0,0 +1,605 @@
+import datetime
+pkgstats = [{'bad_paths': {},
+  'basic_stats': {'catalogname': 'apr_util',
+                  'md5_sum': 'e19f2b377884db51cc20a88ff06c8eb7',
+                  'parsed_basename': {'arch': 'sparc',
+                                      'catalogname': 'apr_util',
+                                      'full_version_string': '1.3.9,REV=2010.08.27',
+                                      'osrel': 'SunOS5.9',
+                                      'revision_info': {'REV': '2010.08.27'},
+                                      'vendortag': 'CSW',
+                                      'version': '1.3.9',
+                                      'version_info': {'major version': '1',
+                                                       'minor version': '3',
+                                                       'patchlevel': '9'}},
+                  'pkg_basename': 'apr_util-1.3.9,REV=2010.08.27-SunOS5.9-sparc-CSW.pkg.gz',
+                  'pkg_path': '/tmp/pkg_bKg13A/apr_util-1.3.9,REV=2010.08.27-SunOS5.9-sparc-CSW.pkg.gz',
+                  'pkgname': 'CSWar-util',
+                  'stats_version': 9L},
+  'binaries': ['opt/csw/lib/apr-util-1/apr_dbd_odbc-1.so',
+               'opt/csw/lib/apr-util-1/apr_dbd_sqlite3-1.so',
+               'opt/csw/lib/apr-util-1/apr_dbm_db-1.so',
+               'opt/csw/lib/apr-util-1/apr_ldap-1.so',
+               'opt/csw/lib/libaprutil-1.so.0.3.9'],
+  'binaries_dump_info': [{'RPATH set': True,
+                          'RUNPATH RPATH the same': True,
+                          'RUNPATH set': True,
+                          'base_name': 'apr_dbd_odbc-1.so',
+                          'needed sonames': ('libodbc.so.1', 'libc.so.1'),
+                          'path': 'opt/csw/lib/apr-util-1/apr_dbd_odbc-1.so',
+                          'runpath': ('/opt/csw/bdb47/lib', '/opt/csw/lib'),
+                          'soname': 'apr_dbd_odbc-1.so'},
+                         {'RPATH set': True,
+                          'RUNPATH RPATH the same': True,
+                          'RUNPATH set': True,
+                          'base_name': 'apr_dbd_sqlite3-1.so',
+                          'needed sonames': ('libsqlite3.so.0',
+                                             'libc.so.1'),
+                          'path': 'opt/csw/lib/apr-util-1/apr_dbd_sqlite3-1.so',
+                          'runpath': ('/opt/csw/bdb47/lib', '/opt/csw/lib'),
+                          'soname': 'apr_dbd_sqlite3-1.so'},
+                         {'RPATH set': True,
+                          'RUNPATH RPATH the same': True,
+                          'RUNPATH set': True,
+                          'base_name': 'apr_dbm_db-1.so',
+                          'needed sonames': ('libdb-4.7.so', 'libc.so.1'),
+                          'path': 'opt/csw/lib/apr-util-1/apr_dbm_db-1.so',
+                          'runpath': ('/opt/csw/bdb47/lib', '/opt/csw/lib'),
+                          'soname': 'apr_dbm_db-1.so'},
+                         {'RPATH set': True,
+                          'RUNPATH RPATH the same': True,
+                          'RUNPATH set': True,
+                          'base_name': 'apr_ldap-1.so',
+                          'needed sonames': ('libldap-2.4.so.2',
+                                             'libgen.so.1',
+                                             'libnet.so',
+                                             'libsasl2.so.2',
+                                             'libdl.so.1',
+                                             'libnsl.so.1',
+                                             'libresolv.so.2',
+                                             'libsocket.so.1',
+                                             'libssl.so.0.9.8',
+                                             'libcrypto.so.0.9.8',
+                                             'liblber-2.4.so.2',
+                                             'libc.so.1'),
+                          'path': 'opt/csw/lib/apr-util-1/apr_ldap-1.so',
+                          'runpath': ('/opt/csw/bdb47/lib', '/opt/csw/lib'),
+                          'soname': 'apr_ldap-1.so'},
+                         {'RPATH set': True,
+                          'RUNPATH RPATH the same': True,
+                          'RUNPATH set': True,
+                          'base_name': 'libaprutil-1.so.0.3.9',
+                          'needed sonames': ('libexpat.so.1',
+                                             'libiconv.so.2',
+                                             'libapr-1.so.0',
+                                             'libuuid.so.1',
+                                             'libsendfile.so.1',
+                                             'librt.so.1',
+                                             'libsocket.so.1',
+                                             'libnsl.so.1',
+                                             'libpthread.so.1',
+                                             'libdl.so.1',
+                                             'libc.so.1'),
+                          'path': 'opt/csw/lib/libaprutil-1.so.0.3.9',
+                          'runpath': ('/opt/csw/bdb47/lib', '/opt/csw/lib'),
+                          'soname': 'libaprutil-1.so.0'}],
+  'depends': [('CSWcommon',
+               'CSWcommon common - common files and dirs for CSW packages '),
+              ('CSWapr', 'CSWapr apr - Apache Portable Runtime '),
+              ('CSWiconv', 'CSWiconv libiconv - GNU iconv library '),
+              ('CSWsqlite3rt',
+               'CSWsqlite3rt sqlite3_rt - An embeddable SQL engine in a C library runtime '),
+              ('CSWunixodbc',
+               'CSWunixodbc unixodbc - ODBC drivers for Unix systems '),
+              ('CSWexpat', 'CSWexpat expat - XML Parser Toolkit '),
+              ('CSWbdb47',
+               'CSWbdb47 berkeleydb47 - BerkeleyDB 4.7 embedded database libraries and utilities '),
+              ('CSWoldaprt',
+               'CSWoldaprt openldap_rt - OpenLDAP runtime libraries '),
+              ('CSWosslrt',
+               'CSWosslrt openssl_rt - Openssl runtime libraries '),
+              ('CSWsasl',
+               'CSWsasl sasl - Simple Authentication and Security Layer '),
+              ('CSWlibnet',
+               'CSWlibnet libnet - the libnet packet construction library ')],
+  'files_metadata': [{'mime_type': 'text/x-c; charset=us-ascii',
+                      'path': 'opt/csw/include/apr_ldap_option.h'},
+                     {'mime_type': 'text/x-c; charset=us-ascii',
+                      'path': 'opt/csw/include/apr_memcache.h'},
+                     {'mime_type': 'text/x-c; charset=us-ascii',
+                      'path': 'opt/csw/include/apr_dbd.h'},
+                     {'mime_type': 'text/x-c; charset=us-ascii',
+                      'path': 'opt/csw/include/apr_sdbm.h'},
+                     {'mime_type': 'text/x-c; charset=us-ascii',
+                      'path': 'opt/csw/include/apu_want.h'},
+                     {'mime_type': 'text/x-c; charset=us-ascii',
+                      'path': 'opt/csw/include/apr_rmm.h'},
+                     {'mime_type': 'text/x-c; charset=us-ascii',
+                      'path': 'opt/csw/include/apr_uri.h'},
+                     {'mime_type': 'text/x-c; charset=us-ascii',
+                      'path': 'opt/csw/include/apr_ldap_rebind.h'},
+                     {'mime_type': 'text/x-c; charset=us-ascii',
+                      'path': 'opt/csw/include/apr_ldap_url.h'},
+                     {'mime_type': 'text/x-c; charset=us-ascii',
+                      'path': 'opt/csw/include/apr_reslist.h'},
+                     {'mime_type': 'text/x-c; charset=us-ascii',
+                      'path': 'opt/csw/include/apr_anylock.h'},
+                     {'mime_type': 'text/x-c; charset=us-ascii',
+                      'path': 'opt/csw/include/apr_date.h'},
+                     {'mime_type': 'text/x-c; charset=us-ascii',
+                      'path': 'opt/csw/include/apr_thread_pool.h'},
+                     {'mime_type': 'text/x-c; charset=us-ascii',
+                      'path': 'opt/csw/include/apr_hooks.h'},
+                     {'mime_type': 'text/x-c; charset=us-ascii',
+                      'path': 'opt/csw/include/apr_dbm.h'},
+                     {'mime_type': 'text/x-c; charset=us-ascii',
+                      'path': 'opt/csw/include/apr_optional.h'},
+                     {'mime_type': 'text/x-c; charset=us-ascii',
+                      'path': 'opt/csw/include/apr_strmatch.h'},
+                     {'mime_type': 'text/x-c; charset=us-ascii',
+                      'path': 'opt/csw/include/apr_queue.h'},
+                     {'mime_type': 'text/x-c; charset=us-ascii',
+                      'path': 'opt/csw/include/apr_base64.h'},
+                     {'mime_type': 'text/x-c; charset=us-ascii',
+                      'path': 'opt/csw/include/apr_ldap.h'},
+                     {'mime_type': 'text/x-c; charset=us-ascii',
+                      'path': 'opt/csw/include/apr_ldap_init.h'},
+                     {'mime_type': 'text/x-c; charset=us-ascii',
+                      'path': 'opt/csw/include/apr_optional_hooks.h'},
+                     {'mime_type': 'text/x-c; charset=us-ascii',
+                      'path': 'opt/csw/include/apr_sha1.h'},
+                     {'mime_type': 'text/x-c; charset=us-ascii',
+                      'path': 'opt/csw/include/apr_uuid.h'},
+                     {'mime_type': 'text/x-c; charset=us-ascii',
+                      'path': 'opt/csw/include/apr_xml.h'},
+                     {'mime_type': 'text/x-c; charset=us-ascii',
+                      'path': 'opt/csw/include/apr_xlate.h'},
+                     {'mime_type': 'text/x-c; charset=us-ascii',
+                      'path': 'opt/csw/include/apu.h'},
+                     {'mime_type': 'text/x-c; charset=us-ascii',
+                      'path': 'opt/csw/include/apr_md5.h'},
+                     {'mime_type': 'text/x-c; charset=us-ascii',
+                      'path': 'opt/csw/include/apu_version.h'},
+                     {'mime_type': 'text/x-c; charset=us-ascii',
+                      'path': 'opt/csw/include/apr_md4.h'},
+                     {'mime_type': 'text/x-c; charset=us-ascii',
+                      'path': 'opt/csw/include/apr_buckets.h'},
+                     {'mime_type': 'text/plain; charset=us-ascii',
+                      'path': 'opt/csw/lib/aprutil.exp'},
+                     {'endian': 'Big endian',
+                      'machine_id': 2,
+                      'mime_type': 'application/x-sharedlib; charset=binary',
+                      'mime_type_by_hachoir': u'application/x-executable',
+                      'path': 'opt/csw/lib/libaprutil-1.so.0.3.9'},
+                     {'mime_type': 'text/plain; charset=us-ascii',
+                      'path': 'opt/csw/lib/pkgconfig/apr-util-1.pc'},
+                     {'endian': 'Big endian',
+                      'machine_id': 2,
+                      'mime_type': 'application/x-sharedlib; charset=binary',
+                      'mime_type_by_hachoir': u'application/x-executable',
+                      'path': 'opt/csw/lib/apr-util-1/apr_dbd_sqlite3-1.so'},
+                     {'endian': 'Big endian',
+                      'machine_id': 2,
+                      'mime_type': 'application/x-sharedlib; charset=binary',
+                      'mime_type_by_hachoir': u'application/x-executable',
+                      'path': 'opt/csw/lib/apr-util-1/apr_ldap-1.so'},
+                     {'endian': 'Big endian',
+                      'machine_id': 2,
+                      'mime_type': 'application/x-sharedlib; charset=binary',
+                      'mime_type_by_hachoir': u'application/x-executable',
+                      'path': 'opt/csw/lib/apr-util-1/apr_dbd_odbc-1.so'},
+                     {'endian': 'Big endian',
+                      'machine_id': 2,
+                      'mime_type': 'application/x-sharedlib; charset=binary',
+                      'mime_type_by_hachoir': u'application/x-executable',
+                      'path': 'opt/csw/lib/apr-util-1/apr_dbm_db-1.so'},
+                     {'mime_type': 'text/plain; charset=us-ascii',
+                      'path': 'opt/csw/share/doc/apr_util/license'},
+                     {'mime_type': 'text/x-shellscript; charset=us-ascii',
+                      'path': 'opt/csw/bin/apu-1-config'}],
+  'isalist': ('sparcv9+vis2',
+              'sparcv9+vis',
+              'sparcv9',
+              'sparcv8plus+vis2',
+              'sparcv8plus+vis',
+              'sparcv8plus',
+              'sparcv8',
+              'sparcv8-fsmuld',
+              'sparcv7',
+              'sparc'),
+  'mtime': datetime.datetime(2010, 8, 27, 11, 0, 10),
+  'overrides': [],
+  'pkgchk': {'return_code': 0,
+             'stderr_lines': ['rm: Cannot remove any directory in the path of the current working directory',
+                              '/var/tmp/aaaIGaO6g/CSWar-util'],
+             'stdout_lines': ['Checking uninstalled stream format package <CSWar-util> from </tmp/pkg_bKg13A/apr_util-1.3.9,REV=2010.08.27-SunOS5.9-sparc-CSW.pkg>',
+                              '## Checking control scripts.',
+                              '## Checking package objects.',
+                              '## Checking is complete.']},
+  'pkginfo': {'ARCH': 'sparc',
+              'CATEGORY': 'application',
+              'CLASSES': 'none',
+              'EMAIL': 'maciej at opencsw.org',
+              'HOTLINE': 'http://www.opencsw.org/bugtrack/',
+              'NAME': 'apr_util - Apache Portable Runtime Utilities',
+              'OPENCSW_BUNDLE': 'apr-util',
+              'OPENCSW_CATALOGNAME': 'apr_util',
+              'OPENCSW_MODE64': '32',
+              'OPENCSW_REPOSITORY': 'https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/pkg/apr-util/trunk@10822',
+              'PKG': 'CSWar-util',
+              'PSTAMP': 'maciej at testing9s-20100827130000',
+              'VENDOR': 'http://apache.crihan.fr/dist/apr/ packaged for CSW by Maciej Blizinski',
+              'VERSION': '1.3.9,REV=2010.08.27',
+              'WORKDIR_FIRSTMOD': '../build-isa-sparcv8'},
+  'pkgmap': [{'class': None,
+              'group': None,
+              'line': ': 1 0',
+              'mode': None,
+              'path': None,
+              'type': '1',
+              'user': None},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/bin/apu-1-config 0755 root bin 6437 35894 1282906794',
+              'mode': '0755',
+              'path': '/opt/csw/bin/apu-1-config',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/include/apr_anylock.h 0644 root bin 5050 35768 1282906791',
+              'mode': '0644',
+              'path': '/opt/csw/include/apr_anylock.h',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/include/apr_base64.h 0644 root bin 3823 57460 1282906791',
+              'mode': '0644',
+              'path': '/opt/csw/include/apr_base64.h',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/include/apr_buckets.h 0644 root bin 60020 64941 1282906791',
+              'mode': '0644',
+              'path': '/opt/csw/include/apr_buckets.h',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/include/apr_date.h 0644 root bin 3554 13649 1282906791',
+              'mode': '0644',
+              'path': '/opt/csw/include/apr_date.h',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/include/apr_dbd.h 0644 root bin 24093 4453 1282906791',
+              'mode': '0644',
+              'path': '/opt/csw/include/apr_dbd.h',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/include/apr_dbm.h 0644 root bin 8599 26734 1282906791',
+              'mode': '0644',
+              'path': '/opt/csw/include/apr_dbm.h',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/include/apr_hooks.h 0644 root bin 8585 47295 1282906791',
+              'mode': '0644',
+              'path': '/opt/csw/include/apr_hooks.h',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/include/apr_ldap.h 0644 root bin 5704 7247 1282906791',
+              'mode': '0644',
+              'path': '/opt/csw/include/apr_ldap.h',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/include/apr_ldap_init.h 0644 root bin 5780 10710 1282906791',
+              'mode': '0644',
+              'path': '/opt/csw/include/apr_ldap_init.h',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/include/apr_ldap_option.h 0644 root bin 8604 41864 1282906791',
+              'mode': '0644',
+              'path': '/opt/csw/include/apr_ldap_option.h',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/include/apr_ldap_rebind.h 0644 root bin 3168 62596 1282906791',
+              'mode': '0644',
+              'path': '/opt/csw/include/apr_ldap_rebind.h',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/include/apr_ldap_url.h 0644 root bin 3799 32681 1282906791',
+              'mode': '0644',
+              'path': '/opt/csw/include/apr_ldap_url.h',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/include/apr_md4.h 0644 root bin 4525 42434 1282906792',
+              'mode': '0644',
+              'path': '/opt/csw/include/apr_md4.h',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/include/apr_md5.h 0644 root bin 5573 519 1282906792',
+              'mode': '0644',
+              'path': '/opt/csw/include/apr_md5.h',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/include/apr_memcache.h 0644 root bin 17072 60128 1282906792',
+              'mode': '0644',
+              'path': '/opt/csw/include/apr_memcache.h',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/include/apr_optional.h 0644 root bin 2780 34306 1282906792',
+              'mode': '0644',
+              'path': '/opt/csw/include/apr_optional.h',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/include/apr_optional_hooks.h 0644 root bin 3869 64111 1282906792',
+              'mode': '0644',
+              'path': '/opt/csw/include/apr_optional_hooks.h',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/include/apr_queue.h 0644 root bin 4082 16636 1282906792',
+              'mode': '0644',
+              'path': '/opt/csw/include/apr_queue.h',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/include/apr_reslist.h 0644 root bin 6326 56986 1282906792',
+              'mode': '0644',
+              'path': '/opt/csw/include/apr_reslist.h',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/include/apr_rmm.h 0644 root bin 4778 15266 1282906792',
+              'mode': '0644',
+              'path': '/opt/csw/include/apr_rmm.h',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/include/apr_sdbm.h 0644 root bin 6113 34421 1282906792',
+              'mode': '0644',
+              'path': '/opt/csw/include/apr_sdbm.h',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/include/apr_sha1.h 0644 root bin 3884 57845 1282906792',
+              'mode': '0644',
+              'path': '/opt/csw/include/apr_sha1.h',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/include/apr_strmatch.h 0644 root bin 2677 28267 1282906792',
+              'mode': '0644',
+              'path': '/opt/csw/include/apr_strmatch.h',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/include/apr_thread_pool.h 0644 root bin 11104 60025 1282906792',
+              'mode': '0644',
+              'path': '/opt/csw/include/apr_thread_pool.h',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/include/apr_uri.h 0644 root bin 6589 55175 1282906792',
+              'mode': '0644',
+              'path': '/opt/csw/include/apr_uri.h',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/include/apr_uuid.h 0644 root bin 2102 40269 1282906792',
+              'mode': '0644',
+              'path': '/opt/csw/include/apr_uuid.h',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/include/apr_xlate.h 0644 root bin 6408 789 1282906792',
+              'mode': '0644',
+              'path': '/opt/csw/include/apr_xlate.h',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/include/apr_xml.h 0644 root bin 12357 61173 1282906792',
+              'mode': '0644',
+              'path': '/opt/csw/include/apr_xml.h',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/include/apu.h 0644 root bin 3560 23891 1282906792',
+              'mode': '0644',
+              'path': '/opt/csw/include/apu.h',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/include/apu_version.h 0644 root bin 4126 11796 1282906792',
+              'mode': '0644',
+              'path': '/opt/csw/include/apu_version.h',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/include/apu_want.h 0644 root bin 1483 49830 1282906792',
+              'mode': '0644',
+              'path': '/opt/csw/include/apu_want.h',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 d none /opt/csw/lib/apr-util-1 0755 root bin',
+              'mode': '0755',
+              'path': '/opt/csw/lib/apr-util-1',
+              'type': 'd',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/lib/apr-util-1/apr_dbd_odbc-1.so 0755 root bin 30580 5683 1282906789',
+              'mode': '0755',
+              'path': '/opt/csw/lib/apr-util-1/apr_dbd_odbc-1.so',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': None,
+              'line': '1 s none /opt/csw/lib/apr-util-1/apr_dbd_odbc.so=apr_dbd_odbc-1.so',
+              'mode': None,
+              'path': '/opt/csw/lib/apr-util-1/apr_dbd_odbc.so',
+              'type': 's',
+              'user': None},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/lib/apr-util-1/apr_dbd_sqlite3-1.so 0755 root bin 18044 2829 1282906788',
+              'mode': '0755',
+              'path': '/opt/csw/lib/apr-util-1/apr_dbd_sqlite3-1.so',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': None,
+              'line': '1 s none /opt/csw/lib/apr-util-1/apr_dbd_sqlite3.so=apr_dbd_sqlite3-1.so',
+              'mode': None,
+              'path': '/opt/csw/lib/apr-util-1/apr_dbd_sqlite3.so',
+              'type': 's',
+              'user': None},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/lib/apr-util-1/apr_dbm_db-1.so 0755 root bin 9764 59811 1282906789',
+              'mode': '0755',
+              'path': '/opt/csw/lib/apr-util-1/apr_dbm_db-1.so',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': None,
+              'line': '1 s none /opt/csw/lib/apr-util-1/apr_dbm_db.so=apr_dbm_db-1.so',
+              'mode': None,
+              'path': '/opt/csw/lib/apr-util-1/apr_dbm_db.so',
+              'type': 's',
+              'user': None},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/lib/apr-util-1/apr_ldap-1.so 0755 root bin 17916 9844 1282906790',
+              'mode': '0755',
+              'path': '/opt/csw/lib/apr-util-1/apr_ldap-1.so',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': None,
+              'line': '1 s none /opt/csw/lib/apr-util-1/apr_ldap.so=apr_ldap-1.so',
+              'mode': None,
+              'path': '/opt/csw/lib/apr-util-1/apr_ldap.so',
+              'type': 's',
+              'user': None},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/lib/aprutil.exp 0644 root bin 5442 19740 1282906793',
+              'mode': '0644',
+              'path': '/opt/csw/lib/aprutil.exp',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': None,
+              'line': '1 s none /opt/csw/lib/libaprutil-1.so=libaprutil-1.so.0.3.9',
+              'mode': None,
+              'path': '/opt/csw/lib/libaprutil-1.so',
+              'type': 's',
+              'user': None},
+             {'class': 'none',
+              'group': None,
+              'line': '1 s none /opt/csw/lib/libaprutil-1.so.0=libaprutil-1.so.0.3.9',
+              'mode': None,
+              'path': '/opt/csw/lib/libaprutil-1.so.0',
+              'type': 's',
+              'user': None},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/lib/libaprutil-1.so.0.3.9 0755 root bin 272120 38251 1282906792',
+              'mode': '0755',
+              'path': '/opt/csw/lib/libaprutil-1.so.0.3.9',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 d none /opt/csw/lib/pkgconfig 0755 root bin',
+              'mode': '0755',
+              'path': '/opt/csw/lib/pkgconfig',
+              'type': 'd',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/lib/pkgconfig/apr-util-1.pc 0644 root bin 371 32716 1282906792',
+              'mode': '0644',
+              'path': '/opt/csw/lib/pkgconfig/apr-util-1.pc',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 d none /opt/csw/share/doc/apr_util 0755 root bin',
+              'mode': '0755',
+              'path': '/opt/csw/share/doc/apr_util',
+              'type': 'd',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/share/doc/apr_util/license 0644 root bin 21179 51077 1282906796',
+              'mode': '0644',
+              'path': '/opt/csw/share/doc/apr_util/license',
+              'type': 'f',
+              'user': 'root'},
+             {'class': None,
+              'group': None,
+              'line': '1 i copyright 72 6789 1282906796',
+              'mode': None,
+              'path': None,
+              'type': 'i',
+              'user': None},
+             {'class': None,
+              'group': None,
+              'line': '1 i depend 614 54845 1282906800',
+              'mode': None,
+              'path': None,
+              'type': 'i',
+              'user': None},
+             {'class': None,
+              'group': None,
+              'line': '1 i pkginfo 528 44388 1282906809',
+              'mode': None,
+              'path': None,
+              'type': 'i',
+              'user': None}]}]
+


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