[csw-devel] SF.net SVN: gar:[10473] csw/mgar/gar/v2

wahwah at users.sourceforge.net wahwah at users.sourceforge.net
Thu Jul 8 23:10:39 CEST 2010


Revision: 10473
          http://gar.svn.sourceforge.net/gar/?rev=10473&view=rev
Author:   wahwah
Date:     2010-07-08 21:10:38 +0000 (Thu, 08 Jul 2010)

Log Message:
-----------
mGAR v2: checkpkg, better shared library resolution, by basenames, not by sonames.  Making the soname field optional, the way it should be.

Modified Paths:
--------------
    csw/mgar/gar/v2/bin/checkpkg_collect_stats.py
    csw/mgar/gar/v2/lib/python/checkpkg.py
    csw/mgar/gar/v2/lib/python/dependency_checks.py
    csw/mgar/gar/v2/lib/python/opencsw.py
    csw/mgar/gar/v2/lib/python/package_checks.py
    csw/mgar/gar/v2/lib/python/package_checks_test.py
    csw/mgar/gar/v2/lib/python/testdata/rsync_pkg_stats.py

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

Modified: csw/mgar/gar/v2/bin/checkpkg_collect_stats.py
===================================================================
--- csw/mgar/gar/v2/bin/checkpkg_collect_stats.py	2010-07-08 19:40:52 UTC (rev 10472)
+++ csw/mgar/gar/v2/bin/checkpkg_collect_stats.py	2010-07-08 21:10:38 UTC (rev 10473)
@@ -62,7 +62,7 @@
   bar = progressbar.ProgressBar()
   bar.maxval = total_packages
   bar.start()
-  logging.debug("Making sure package statistics are collected.")
+  logging.info("Unpacking and examining the srv4 files needed.")
   while stats_list:
     # This way objects will get garbage collected as soon as they are removed
     # from the list by pop().  The destructor (__del__()) of the srv4 class

Modified: csw/mgar/gar/v2/lib/python/checkpkg.py
===================================================================
--- csw/mgar/gar/v2/lib/python/checkpkg.py	2010-07-08 19:40:52 UTC (rev 10472)
+++ csw/mgar/gar/v2/lib/python/checkpkg.py	2010-07-08 21:10:38 UTC (rev 10473)
@@ -32,7 +32,7 @@
 
 DEBUG_BREAK_PKGMAP_AFTER = False
 DB_SCHEMA_VERSION = 4L
-PACKAGE_STATS_VERSION = 6L
+PACKAGE_STATS_VERSION = 8L
 SYSTEM_PKGMAP = "/var/sadm/install/contents"
 NEEDED_SONAMES = "needed sonames"
 RUNPATH = "runpath"
@@ -77,6 +77,8 @@
     (r".*\.el$", u"CSWemacscommon"),
     (r".*\.elc$", u"CSWemacscommon"),
 )
+# Compiling the regexes ahead of time.
+DEPENDENCY_FILENAME_REGEXES = tuple([(re.compile(x), y) for x, y in DEPENDENCY_FILENAME_REGEXES])
 
 REPORT_TMPL = u"""#if $missing_deps or $surplus_deps or $orphan_sonames
 Dependency issues of $pkgname:
@@ -514,7 +516,7 @@
       return schema_on_disk;
     res = m.CswConfig.select(m.CswConfig.q.option_key == CONFIG_DB_SCHEMA)
     if res.count() < 1:
-      logging.info("No db schema value found, assuming %s.",
+      logging.debug("No db schema value found, assuming %s.",
                    schema_on_disk)
     elif res.count() == 1:
       schema_on_disk = res.getOne().int_value
@@ -565,6 +567,8 @@
     self.runpath_sanitize_cache = {}
 
   def ExpandRunpath(self, runpath, isalist):
+    # TODO: Implement $ORIGIN support
+    # Probably not here as it would make caching unusable.
     key = (runpath, tuple(isalist))
     if key not in self.runpath_expand_cache:
       # Emulating $ISALIST expansion
@@ -679,6 +683,8 @@
   # Converting runpath to a tuple, which is a hashable data type and can act as
   # a key in a dict.
   binary_data[RUNPATH] = tuple(binary_data[RUNPATH])
+  # the NEEDED list must not be modified, converting to a tuple.
+  binary_data[NEEDED_SONAMES] = tuple(binary_data[NEEDED_SONAMES])
   binary_data["RUNPATH RPATH the same"] = (runpath == rpath)
   binary_data["RPATH set"] = bool(rpath)
   binary_data["RUNPATH set"] = bool(runpath)
@@ -1031,7 +1037,11 @@
     pkg_stats = self.GetDbObject()
     if not pkg_stats:
       return False
-    return pkg_stats.stats_version == PACKAGE_STATS_VERSION
+    if pkg_stats.stats_version != PACKAGE_STATS_VERSION:
+      pkg_stats.destroySelf()
+    else:
+      return True
+    return False
 
   def GetDirFormatPkg(self):
     if not self.dir_format_pkg:
@@ -1071,13 +1081,7 @@
       ret = dump_proc.wait()
       binary_data = ParseDumpOutput(stdout)
       binary_data["path"] = binary
-      binary_data["soname_guessed"] = False
       binary_data["base_name"] = binary_base_name
-      if SONAME not in binary_data:
-        # The binary doesn't tell its SONAME.  We're guessing it's the
-        # same as the base file name.
-        binary_data[SONAME] = binary_base_name
-        binary_data["soname_guessed"] = True
       binaries_dump_info.append(binary_data)
     return binaries_dump_info
 

Modified: csw/mgar/gar/v2/lib/python/dependency_checks.py
===================================================================
--- csw/mgar/gar/v2/lib/python/dependency_checks.py	2010-07-08 19:40:52 UTC (rev 10472)
+++ csw/mgar/gar/v2/lib/python/dependency_checks.py	2010-07-08 21:10:38 UTC (rev 10473)
@@ -7,6 +7,8 @@
     ("/opt/csw/lib", "libdb-4.7.so", "Deprecated Berkeley DB location"),
     ("/opt/csw/lib/mysql", "libmysqlclient_r.so.15",
      "Please use /opt/csw/mysql5/..."),
+    ("/opt/csw/lib/sparcv9/mysql", "libmysqlclient_r.so.15",
+     "Please use /opt/csw/mysql5/..."),
     ("/opt/csw/lib/mysql", "libmysqlclient.so.15",
      "Please use /opt/csw/mysql5/..."),
 )
@@ -15,7 +17,7 @@
     r'^opt/csw/lib/python/site-packages.*',
 )
 
-def Libraries(pkg_data, error_mgr, logger, path_and_pkg_by_soname):
+def Libraries(pkg_data, error_mgr, logger, path_and_pkg_by_basename):
   pkgname = pkg_data["basic_stats"]["pkgname"]
   logger.debug("Libraries(): pkgname = %s", repr(pkgname))
   orphan_sonames = []
@@ -25,14 +27,15 @@
   for binary_info in pkg_data["binaries_dump_info"]:
     for soname in binary_info["needed sonames"]:
       resolved = False
-      path_list = path_and_pkg_by_soname[soname].keys()
+      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_list = tuple(binary_info["runpath"]) + tuple(checkpkg.SYS_DEFAULT_RUNPATH)
-      for runpath in runpath_list:
+      runpath_tuple = (tuple(binary_info["runpath"])
+                      + tuple(checkpkg.SYS_DEFAULT_RUNPATH))
+      for runpath in runpath_tuple:
         resolved_path = ldd_emulator.ResolveSoname(runpath,
                                                    soname,
                                                    isalist,
@@ -41,9 +44,9 @@
           logger.debug("%s needed by %s:",
                  soname, binary_info["path"])
           logger.debug("=> %s provided by %s",
-              resolved_path, path_and_pkg_by_soname[soname][resolved_path])
+              resolved_path, path_and_pkg_by_basename[soname][resolved_path])
           resolved = True
-          req_pkg = path_and_pkg_by_soname[soname][resolved_path][-1]
+          req_pkg = path_and_pkg_by_basename[soname][resolved_path][-1]
           reason = ("provides %s/%s needed by %s"
                     % (resolved_path, soname, binary_info["path"]))
           for bad_path, bad_soname, msg in DEPRECATED_LIBRARY_LOCATIONS:
@@ -66,7 +69,7 @@
   # TODO: Report orphan sonames here
   return required_deps
 
-def ByFilename(pkg_data, error_mgr, logger, path_and_pkg_by_soname):
+def ByFilename(pkg_data, error_mgr, logger, path_and_pkg_by_basename):
   pkgname = pkg_data["basic_stats"]["pkgname"]
   req_pkgs_reasons = []
   dep_regexes = [(re.compile(x), x, y)

Modified: csw/mgar/gar/v2/lib/python/opencsw.py
===================================================================
--- csw/mgar/gar/v2/lib/python/opencsw.py	2010-07-08 19:40:52 UTC (rev 10472)
+++ csw/mgar/gar/v2/lib/python/opencsw.py	2010-07-08 21:10:38 UTC (rev 10473)
@@ -1193,6 +1193,13 @@
 def IsBinary(file_info):
   """Returns True or False depending on file metadata."""
   is_a_binary = False
+  if "mime_type" not in file_info:
+    # This would be a problem in the data.
+    return False
+  if not file_info["mime_type"]:
+    # This should never happen, but it seems to have happened at least once.
+    # TODO: Find the affected data and figure out why.
+    return false
   for mimetype in BIN_MIMETYPES:
     if mimetype in file_info["mime_type"]:
       is_a_binary = True

Modified: csw/mgar/gar/v2/lib/python/package_checks.py
===================================================================
--- csw/mgar/gar/v2/lib/python/package_checks.py	2010-07-08 19:40:52 UTC (rev 10472)
+++ csw/mgar/gar/v2/lib/python/package_checks.py	2010-07-08 21:10:38 UTC (rev 10473)
@@ -83,6 +83,7 @@
      r"%(subdir2)s?"
      r"$") % RPATH_PARTS,
     r"^\$ORIGIN$",
+    r"^\$ORIGIN/..$",
     r"^/usr(/(ccs|dt|openwin))?/lib(/sparcv9)?$",
 ]
 # Check ldd -r only for Perl modules
@@ -271,29 +272,33 @@
       needed_sonames.extend(binary_info["needed sonames"])
   needed_sonames = sorted(set(needed_sonames))
   # Finding candidate libraries from the filesystem (/var/sadm/install/contents)
-  path_and_pkg_by_soname = {}
+  path_and_pkg_by_basename = {}
   for needed_soname in needed_sonames:
-    path_and_pkg_by_soname[needed_soname] = error_mgr.GetPathsAndPkgnamesByBasename(
+    path_and_pkg_by_basename[needed_soname] = error_mgr.GetPathsAndPkgnamesByBasename(
         needed_soname)
   # Removing files from packages that are to be installed.
-  path_and_pkg_by_soname = RemovePackagesUnderInstallation(
-      path_and_pkg_by_soname, pkgs_to_be_installed)
+  path_and_pkg_by_basename = RemovePackagesUnderInstallation(
+      path_and_pkg_by_basename, pkgs_to_be_installed)
   # Adding overlay based on the given package set
   # Considering files from the set under examination.
   for pkg_data in pkgs_data:
     pkgname = pkg_data["basic_stats"]["pkgname"]
-    for binary_info in pkg_data["binaries_dump_info"]:
-      soname = binary_info["soname"]
-      binary_path, basename = os.path.split(binary_info["path"])
+    # Processing the whole pkgmap.  There yet no verification whether the files
+    # that are put in here are actually shared libraries, or symlinks to shared
+    # libraries.  Implementing symlink resolution would be a nice bonus.
+    for pkgmap_entry in pkg_data["pkgmap"]:
+      if "path" not in pkgmap_entry: continue
+      if not pkgmap_entry["path"]: continue
+      binary_path, basename = os.path.split(pkgmap_entry["path"])
       if not binary_path.startswith('/'):
         binary_path = "/" + binary_path
-      if soname not in path_and_pkg_by_soname:
-        path_and_pkg_by_soname[soname] = {}
-      path_and_pkg_by_soname[soname][binary_path] = [pkgname]
+      if basename not in path_and_pkg_by_basename:
+        path_and_pkg_by_basename[basename] = {}
+      path_and_pkg_by_basename[basename][binary_path] = [pkgname]
   # Resolving sonames for each binary
   for pkg_data in pkgs_data:
     pkgname = pkg_data["basic_stats"]["pkgname"]
-    check_args = (pkg_data, error_mgr, logger, path_and_pkg_by_soname)
+    check_args = (pkg_data, error_mgr, logger, path_and_pkg_by_basename)
     req_pkgs_reasons = depchecks.Libraries(*check_args)
     req_pkgs_reasons.extend(depchecks.ByFilename(*check_args))
     missing_reasons_by_pkg = {}
@@ -664,9 +669,15 @@
 
 
 def CheckLinkingAgainstSunX11(pkg_data, error_mgr, logger, messenger):
+  # Finding all shared libraries
+  shared_libs = []
+  for metadata in pkg_data["files_metadata"]:
+    if "sharedlib" in metadata["mime_type"]:
+      shared_libs.append(metadata["path"])
+  shared_libs = set(shared_libs)
   for binary_info in pkg_data["binaries_dump_info"]:
     for soname in binary_info["needed sonames"]:
-      if (".so" in binary_info["soname"]
+      if (binary_info["path"] in shared_libs
           and
           soname in DO_NOT_LINK_AGAINST_THESE_SONAMES):
         error_mgr.ReportError("linked-against-discouraged-library",

Modified: csw/mgar/gar/v2/lib/python/package_checks_test.py
===================================================================
--- csw/mgar/gar/v2/lib/python/package_checks_test.py	2010-07-08 19:40:52 UTC (rev 10472)
+++ csw/mgar/gar/v2/lib/python/package_checks_test.py	2010-07-08 21:10:38 UTC (rev 10473)
@@ -15,10 +15,11 @@
 import testdata.checkpkg_test_data_CSWdjvulibrert as td_1
 import testdata.checkpkg_pkgs_data_minimal as td_2
 import testdata.rpaths
-from testdata.rsync_pkg_stats import pkg_stats as rsync_stats
+from testdata.rsync_pkg_stats import pkgstats as rsync_stats
+from testdata.ivtools_stats import pkgstats as ivtools_stats
 
 DEFAULT_PKG_STATS = None
-DEFAULT_PKG_DATA = rsync_stats
+DEFAULT_PKG_DATA = rsync_stats[0]
 
 
 class CheckpkgUnitTestHelper(object):
@@ -253,6 +254,7 @@
   def CheckpkgTest(self):
     self.pkg_data["binaries_dump_info"][0]["needed sonames"].append("libX11.so.4")
 
+
 class TestCheckLinkingAgainstSunX11_Bad(CheckpkgUnitTestHelper, unittest.TestCase):
   FUNCTION_NAME = 'CheckLinkingAgainstSunX11'
   def CheckpkgTest(self):
@@ -427,7 +429,7 @@
     ]
     # Calculating the parameters on the fly, it allows to write it a terse manner.
     for bad_path in BAD_PATHS:
-      self.error_mgr_mock.ReportError('bad-rpath-entry', '%s opt/csw/bin/sparcv9/rsync' % bad_path)
+      self.error_mgr_mock.ReportError('bad-rpath-entry', '%s opt/csw/bin/sparcv8/rsync' % bad_path)
 
 
 class TestCheckRpathBadPath(CheckpkgUnitTestHelper, unittest.TestCase):
@@ -445,8 +447,7 @@
     self.error_mgr_mock.ReportError(
         'CSWrsync',
         'deprecated-library',
-        u'opt/csw/bin/sparcv9/rsync Deprecated Berkeley DB location '
-        u'/opt/csw/lib/libdb-4.7.so')
+        u'opt/csw/bin/sparcv8/rsync Deprecated Berkeley DB location /opt/csw/lib/libdb-4.7.so')
     self.pkg_data = [self.pkg_data]
 
 
@@ -493,8 +494,10 @@
                                 'needed sonames': ['libfoo.so.1'],
                                 'path': 'opt/csw/bin/bar',
                                 'runpath': ('/opt/csw/lib',),
-                                'soname': 'rsync',
-                                'soname_guessed': True}],
+                                # Making sonames optional, because they are.
+                                # 'soname': 'rsync',
+                                # 'soname_guessed': True
+                                }],
         'depends': (('CSWlibfoo', None),),
         'isalist': (),
         'pkgmap': [],
@@ -763,5 +766,17 @@
     self.pkg_data = [self.CSWbar_DATA, self.CSWfoo_DATA]
 
 
+class TestSetCheckSharedLibraryConsistencyIvtools(CheckpkgUnitTestHelper,
+                                                  unittest.TestCase):
+  """This tests for a case in which the SONAME that we're looking for doesn't
+  match the filename."""
+  FUNCTION_NAME = 'SetCheckLibraries'
+  def CheckpkgTest(self):
+    self.pkg_data = ivtools_stats
+    self.error_mgr_mock.GetPathsAndPkgnamesByBasename('libComUnidraw.so').AndReturn({})
+    # This error is thrown, but it shouldn't be:
+    # ReportError('CSWivtools', 'soname-not-found', 'libComUnidraw.so is needed by opt/csw/bin/comdraw')
+
+
 if __name__ == '__main__':
   unittest.main()

Added: csw/mgar/gar/v2/lib/python/testdata/ivtools_stats.py
===================================================================
--- csw/mgar/gar/v2/lib/python/testdata/ivtools_stats.py	                        (rev 0)
+++ csw/mgar/gar/v2/lib/python/testdata/ivtools_stats.py	2010-07-08 21:10:38 UTC (rev 10473)
@@ -0,0 +1,132 @@
+pkgstats = [{'bad_paths': {},
+  'basic_stats': {'catalogname': 'ivtools',
+                  'parsed_basename': {'arch': 'sparc',
+                                      'catalogname': 'ivtools',
+                                      'full_version_string': '1.1.3',
+                                      'osrel': 'SunOS5.8',
+                                      'revision_info': {},
+                                      'vendortag': 'CSW',
+                                      'version': '1.1.3',
+                                      'version_info': {'major version': '1',
+                                                       'minor version': '1',
+                                                       'patchlevel': '3'}},
+                  'pkg_basename': 'ivtools-1.1.3-SunOS5.8-sparc-CSW.pkg.gz',
+                  'pkg_path': '/tmp/pkg_VMve9j/ivtools-1.1.3-SunOS5.8-sparc-CSW.pkg.gz',
+                  'pkgname': 'CSWivtools',
+                  'stats_version': 6L},
+  'binaries': ['opt/csw/bin/comdraw',
+               'opt/csw/lib/libComUnidraw.so.1.1.3'],
+  'binaries_dump_info': [{'RPATH set': True,
+                          'RUNPATH RPATH the same': True,
+                          'RUNPATH set': True,
+                          'base_name': 'comdraw',
+                          'needed sonames': ['libComUnidraw.so'],
+                          'path': 'opt/csw/bin/comdraw',
+                          'runpath': ('/opt/csw/lib',),
+                          'soname': 'comdraw',
+                          'soname_guessed': True},
+                         {'RPATH set': True,
+                          'RUNPATH RPATH the same': True,
+                          'RUNPATH set': True,
+                          'base_name': 'libComUnidraw.so.1.1.3',
+                          'needed sonames': [],
+                          'path': 'opt/csw/lib/libComUnidraw.so.1.1.3',
+                          'runpath': ('/opt/csw/lib',),
+                          'soname': 'libComUnidraw.so.1.1.3',
+                          'soname_guessed': True}],
+  'depends': [],
+  'files_metadata': [
+                     {'endian': 'Big endian',
+                      'machine_id': 2,
+                      'mime_type': 'application/x-executable; charset=binary',
+                      'mime_type_by_hachoir': u'application/x-executable',
+                      'path': 'opt/csw/bin/comdraw'},
+                     {'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/libComUnidraw.so.1.1.3'}],
+  'isalist': ('sparcv9+vis2',
+              'sparcv9+vis',
+              'sparcv9',
+              'sparcv8plus+vis2',
+              'sparcv8plus+vis',
+              'sparcv8plus',
+              'sparcv8',
+              'sparcv8-fsmuld',
+              'sparcv7',
+              'sparc'),
+  'overrides': [],
+  'pkgchk': {'return_code': 0,
+             'stderr_lines': ['rm: Cannot remove any directory in the path of the current working directory',
+                              '/var/tmp/aaaGUaqXc/CSWivtools'],
+             'stdout_lines': ['Checking uninstalled stream format package <CSWivtools> from </tmp/pkg_VMve9j/ivtools-1.1.3-SunOS5.8-sparc-CSW.pkg>',
+                              '## Checking control scripts.',
+                              '## Checking package objects.',
+                              '## Checking is complete.']},
+  'pkginfo': {'ARCH': 'sparc',
+              'CATEGORY': 'application',
+              'CLASSES': 'none',
+              'EMAIL': '...',
+              'HOTLINE': 'http://www.opencsw.org/bugtrack/',
+              'NAME': 'ivtools - a suite of free X Windows drawing editors',
+              'PKG': 'CSWivtools',
+              'PSTAMP': 'heimdall20040421105323',
+              'VENDOR': 'http://www.ivtools.org/ packaged for CSW by Murray Jensen',
+              'VERSION': '1.1.3'},
+  'pkgmap': [{'class': None,
+              'group': None,
+              'line': ': 1 25746',
+              'mode': None,
+              'path': None,
+              'type': '1',
+              'user': None},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 d none /opt/csw/bin 0755 root bin',
+              'mode': '0755',
+              'path': '/opt/csw/bin',
+              'type': 'd',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/bin/comdraw 0755 root bin 12184 37875 1082508565',
+              'mode': '0755',
+              'path': '/opt/csw/bin/comdraw',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': None,
+              'line': '1 s none /opt/csw/lib/libComUnidraw.so=libComUnidraw.so.1.1.3',
+              'mode': None,
+              'path': '/opt/csw/lib/libComUnidraw.so',
+              'type': 's',
+              'user': None},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/lib/libComUnidraw.so.1.1.3 0644 root bin 259064 43856 1082508565',
+              'mode': '0644',
+              'path': '/opt/csw/lib/libComUnidraw.so.1.1.3',
+              'type': 'f',
+              'user': 'root'},
+             {'class': None,
+              'group': None,
+              'line': '1 i copyright 2566 14385 1082211466',
+              'mode': None,
+              'path': None,
+              'type': 'i',
+              'user': None},
+             {'class': None,
+              'group': None,
+              'line': '1 i depend 12 941 1082386578',
+              'mode': None,
+              'path': None,
+              'type': 'i',
+              'user': None},
+             {'class': None,
+              'group': None,
+              'line': '1 i pkginfo 293 24989 1219228976',
+              'mode': None,
+              'path': None,
+              'type': 'i',
+              'user': None}]}]

Modified: csw/mgar/gar/v2/lib/python/testdata/rsync_pkg_stats.py
===================================================================
--- csw/mgar/gar/v2/lib/python/testdata/rsync_pkg_stats.py	2010-07-08 19:40:52 UTC (rev 10472)
+++ csw/mgar/gar/v2/lib/python/testdata/rsync_pkg_stats.py	2010-07-08 21:10:38 UTC (rev 10473)
@@ -1,185 +1,189 @@
-pkg_stats = {
- 'all_filenames': ['pkginfo',
-                   'pkgmap',
-                   'copyright',
-                   'depend',
-                   'rsyncd.conf.5',
-                   'rsync.1',
-                   'license',
-                   'rsync',
-                   'rsync'],
- 'bad_paths': {},
- 'basic_stats': {'catalogname': 'rsync',
-                 'parsed_basename': {'arch': 'sparc',
-                                     'catalogname': 'rsync',
-                                     'full_version_string': '3.0.7,REV=2010.02.17',
-                                     'osrel': 'SunOS5.8',
-                                     'revision_info': {'REV': '2010.02.17'},
-                                     'vendortag': 'CSW',
-                                     'version': '3.0.7',
-                                     'version_info': {'major version': '3',
-                                                      'minor version': '0',
-                                                      'patchlevel': '7'}},
-                 'pkg_basename': 'rsync-3.0.7,REV=2010.02.17-SunOS5.8-sparc-CSW.pkg.gz',
-                 'pkg_path': '/tmp/pkg_dhBeK1/rsync-3.0.7,REV=2010.02.17-SunOS5.8-sparc-CSW.pkg.gz',
-                 'pkgname': 'CSWrsync',
-                 'stats_version': 1},
- 'binaries': ['opt/csw/bin/sparcv9/rsync', 'opt/csw/bin/sparcv8/rsync'],
- 'binaries_dump_info': [{'base_name': 'rsync',
-                         'needed sonames': ['libpopt.so.0',
-                                            'libsec.so.1',
-                                            'libiconv.so.2',
-                                            'libsocket.so.1',
-                                            'libnsl.so.1',
-                                            'libc.so.1'],
-                         'path': 'opt/csw/bin/sparcv9/rsync',
-                         'runpath': ('/opt/csw/lib/$ISALIST',
-                                     '/opt/csw/lib/64',
-                                     '/usr/lib/$ISALIST',
-                                     '/usr/lib',
-                                     '/lib/$ISALIST',
-                                     '/lib'),
-                         'soname': 'rsync',
-                         'soname_guessed': True},
-                        {'base_name': 'rsync',
-                         'needed sonames': ['libpopt.so.0',
-                                            'libsec.so.1',
-                                            'libiconv.so.2',
-                                            'libsocket.so.1',
-                                            'libnsl.so.1',
-                                            'libc.so.1'],
-                         'path': 'opt/csw/bin/sparcv8/rsync',
-                         'runpath': ('/opt/csw/lib/$ISALIST',
-                                     '/opt/csw/lib',
-                                     '/usr/lib/$ISALIST',
-                                     '/usr/lib',
-                                     '/lib/$ISALIST',
-                                     '/lib'),
-                         'soname': 'rsync',
-                         'soname_guessed': True}],
- 'depends': [['CSWcommon',
-              'CSWcommon common - common files and dirs for CSW packages '],
-             ['CSWisaexec',
-              'CSWisaexec isaexec - sneaky wrapper around Sun isaexec '],
-             ['CSWiconv', 'CSWiconv libiconv - GNU iconv library '],
-             ['CSWlibpopt',
-              'CSWlibpopt libpopt - Popt is a C library for parsing command line parameters ']],
- 'files_metadata': None,
- 'isalist': ['sparcv9+vis2',
-             'sparcv9+vis',
-             'sparcv9',
-             'sparcv8plus+vis2',
-             'sparcv8plus+vis',
-             'sparcv8plus',
-             'sparcv8',
-             'sparcv8-fsmuld',
-             'sparcv7',
-             'sparc'],
- 'ldd_dash_r': [],
- 'overrides': [],
- 'pkgchk': [],
- 'pkginfo': {'ARCH': 'sparc',
-             'CATEGORY': 'application',
-             'CLASSES': 'none',
-             'EMAIL': 'maciej at opencsw.org',
-             'HOTLINE': 'http://www.opencsw.org/bugtrack/',
-             'NAME': 'rsync - utility which provides fast incremental file transfer',
-             'OPENCSW_CATALOGNAME': 'rsync',
-             'OPENCSW_MODE64': '32/64/isaexec',
-             'OPENCSW_REPOSITORY': 'https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/pkg/rsync/trunk@8611',
-             'PKG': 'CSWrsync',
-             'PSTAMP': 'maciej at build8s-20100217094608',
-             'VENDOR': 'http://rsync.samba.org/ packaged for CSW by Maciej Blizinski',
-             'VERSION': '3.0.7,REV=2010.02.17',
-             'WORKDIR_FIRSTMOD': '../build-isa-sparcv8'},
- 'pkgmap': [{'class': None,
-             'group': None,
-             'line': ': 1 2912',
-             'mode': None,
-             'path': None,
-             'type': '1',
-             'user': None},
-            {'class': 'none',
-             'group': None,
-             'line': '1 l none /opt/csw/bin/rsync=/opt/csw/bin/isaexec',
-             'mode': None,
-             'path': '/opt/csw/bin/rsync',
-             'type': 'l',
-             'user': None},
-            {'class': 'none',
-             'group': 'bin',
-             'line': '1 f none /opt/csw/bin/sparcv8/rsync 0755 root bin 585864 12576 1266395028',
-             'mode': '0755',
-             'path': '/opt/csw/bin/sparcv8/rsync',
-             'type': 'f',
-             'user': 'root'},
-            {'class': 'none',
-             'group': 'bin',
-             'line': '1 f none /opt/csw/bin/sparcv9/rsync 0755 root bin 665520 60792 1266395239',
-             'mode': '0755',
-             'path': '/opt/csw/bin/sparcv9/rsync',
-             'type': 'f',
-             'user': 'root'},
-            {'class': 'none',
-             'group': 'bin',
-             'line': '1 d none /opt/csw/share/doc/rsync 0755 root bin',
-             'mode': '0755',
-             'path': '/opt/csw/share/doc/rsync',
-             'type': 'd',
-             'user': 'root'},
-            {'class': 'none',
-             'group': 'bin',
-             'line': '1 f none /opt/csw/share/doc/rsync/license 0644 root bin 35147 30328 1266396366',
-             'mode': '0644',
-             'path': '/opt/csw/share/doc/rsync/license',
-             'type': 'f',
-             'user': 'root'},
-            {'class': 'none',
-             'group': 'bin',
-             'line': '1 d none /opt/csw/share/man/man1 0755 root bin',
-             'mode': '0755',
-             'path': '/opt/csw/share/man/man1',
-             'type': 'd',
-             'user': 'root'},
-            {'class': 'none',
-             'group': 'bin',
-             'line': '1 f none /opt/csw/share/man/man1/rsync.1 0644 root bin 159739 65016 1266395027',
-             'mode': '0644',
-             'path': '/opt/csw/share/man/man1/rsync.1',
-             'type': 'f',
-             'user': 'root'},
-            {'class': 'none',
-             'group': 'bin',
-             'line': '1 d none /opt/csw/share/man/man5 0755 root bin',
-             'mode': '0755',
-             'path': '/opt/csw/share/man/man5',
-             'type': 'd',
-             'user': 'root'},
-            {'class': 'none',
-             'group': 'bin',
-             'line': '1 f none /opt/csw/share/man/man5/rsyncd.conf.5 0644 root bin 36372 24688 1266395027',
-             'mode': '0644',
-             'path': '/opt/csw/share/man/man5/rsyncd.conf.5',
-             'type': 'f',
-             'user': 'root'},
-            {'class': None,
-             'group': None,
-             'line': '1 i copyright 69 6484 1266396366',
-             'mode': None,
-             'path': None,
-             'type': 'i',
-             'user': None},
-            {'class': None,
-             'group': None,
-             'line': '1 i depend 236 21212 1266396368',
-             'mode': None,
-             'path': None,
-             'type': 'i',
-             'user': None},
-            {'class': None,
-             'group': None,
-             'line': '1 i pkginfo 511 43247 1266396371',
-             'mode': None,
-             'path': None,
-             'type': 'i',
-             'user': None}]}
+pkgstats = [{'bad_paths': {},
+  'basic_stats': {'catalogname': 'rsync',
+                  'parsed_basename': {'arch': 'sparc',
+                                      'catalogname': 'rsync',
+                                      'full_version_string': '3.0.7,REV=2010.02.17',
+                                      'osrel': 'SunOS5.8',
+                                      'revision_info': {'REV': '2010.02.17'},
+                                      'vendortag': 'CSW',
+                                      'version': '3.0.7',
+                                      'version_info': {'major version': '3',
+                                                       'minor version': '0',
+                                                       'patchlevel': '7'}},
+                  'pkg_basename': 'rsync-3.0.7,REV=2010.02.17-SunOS5.8-sparc-CSW.pkg.gz',
+                  'pkg_path': '/tmp/pkg_wq7Wyx/rsync-3.0.7,REV=2010.02.17-SunOS5.8-sparc-CSW.pkg.gz',
+                  'pkgname': 'CSWrsync',
+                  'stats_version': 7L},
+  'binaries': ['opt/csw/bin/sparcv8/rsync', 'opt/csw/bin/sparcv9/rsync'],
+  'binaries_dump_info': [{'RPATH set': True,
+                          'RUNPATH RPATH the same': True,
+                          'RUNPATH set': True,
+                          'base_name': 'rsync',
+                          'needed sonames': ['libpopt.so.0',
+                                             'libsec.so.1',
+                                             'libiconv.so.2',
+                                             'libsocket.so.1',
+                                             'libnsl.so.1',
+                                             'libc.so.1'],
+                          'path': 'opt/csw/bin/sparcv8/rsync',
+                          'runpath': ('/opt/csw/lib/$ISALIST',
+                                      '/opt/csw/lib')},
+                         {'RPATH set': True,
+                          'RUNPATH RPATH the same': True,
+                          'RUNPATH set': True,
+                          'base_name': 'rsync',
+                          'needed sonames': ['libpopt.so.0',
+                                             'libsec.so.1',
+                                             'libiconv.so.2',
+                                             'libsocket.so.1',
+                                             'libnsl.so.1',
+                                             'libc.so.1'],
+                          'path': 'opt/csw/bin/sparcv9/rsync',
+                          'runpath': ('/opt/csw/lib/$ISALIST',
+                                      '/opt/csw/lib/64')}],
+  'depends': [('CSWcommon',
+               'CSWcommon common - common files and dirs for CSW packages '),
+              ('CSWisaexec',
+               'CSWisaexec isaexec - sneaky wrapper around Sun isaexec '),
+              ('CSWiconv', 'CSWiconv libiconv - GNU iconv library '),
+              ('CSWlibpopt',
+               'CSWlibpopt libpopt - Popt is a C library for parsing command line parameters ')],
+  'files_metadata': [{'mime_type': 'text/troff; charset=us-ascii',
+                      'path': 'opt/csw/share/man/man5/rsyncd.conf.5'},
+                     {'mime_type': 'text/troff; charset=us-ascii',
+                      'path': 'opt/csw/share/man/man1/rsync.1'},
+                     {'mime_type': 'text/plain; charset=us-ascii',
+                      'path': 'opt/csw/share/doc/rsync/license'},
+                     {'endian': 'Big endian',
+                      'machine_id': 43,
+                      'mime_type': 'application/x-executable; charset=binary',
+                      'mime_type_by_hachoir': u'application/x-executable',
+                      'path': 'opt/csw/bin/sparcv9/rsync'},
+                     {'endian': 'Big endian',
+                      'machine_id': 2,
+                      'mime_type': 'application/x-executable; charset=binary',
+                      'mime_type_by_hachoir': u'application/x-executable',
+                      'path': 'opt/csw/bin/sparcv8/rsync'}],
+  'isalist': ('sparcv9+vis2',
+              'sparcv9+vis',
+              'sparcv9',
+              'sparcv8plus+vis2',
+              'sparcv8plus+vis',
+              'sparcv8plus',
+              'sparcv8',
+              'sparcv8-fsmuld',
+              'sparcv7',
+              'sparc'),
+  'overrides': [],
+  'pkgchk': {'return_code': 0,
+             'stderr_lines': ['rm: Cannot remove any directory in the path of the current working directory',
+                              '/var/tmp/aaacuaqYV/CSWrsync'],
+             'stdout_lines': ['Checking uninstalled stream format package <CSWrsync> from </tmp/pkg_wq7Wyx/rsync-3.0.7,REV=2010.02.17-SunOS5.8-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': 'rsync - utility which provides fast incremental file transfer',
+              'OPENCSW_CATALOGNAME': 'rsync',
+              'OPENCSW_MODE64': '32/64/isaexec',
+              'OPENCSW_REPOSITORY': 'https://gar.svn.sourceforge.net/svnroot/gar/csw/mgar/pkg/rsync/trunk@8611',
+              'PKG': 'CSWrsync',
+              'PSTAMP': 'maciej at build8s-20100217094608',
+              'VENDOR': 'http://rsync.samba.org/ packaged for CSW by Maciej Blizinski',
+              'VERSION': '3.0.7,REV=2010.02.17',
+              'WORKDIR_FIRSTMOD': '../build-isa-sparcv8'},
+  'pkgmap': [{'class': None,
+              'group': None,
+              'line': ': 1 2912',
+              'mode': None,
+              'path': None,
+              'type': '1',
+              'user': None},
+             {'class': 'none',
+              'group': None,
+              'line': '1 l none /opt/csw/bin/rsync=/opt/csw/bin/isaexec',
+              'mode': None,
+              'path': '/opt/csw/bin/rsync',
+              'type': 'l',
+              'user': None},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/bin/sparcv8/rsync 0755 root bin 585864 12576 1266395028',
+              'mode': '0755',
+              'path': '/opt/csw/bin/sparcv8/rsync',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/bin/sparcv9/rsync 0755 root bin 665520 60792 1266395239',
+              'mode': '0755',
+              'path': '/opt/csw/bin/sparcv9/rsync',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 d none /opt/csw/share/doc/rsync 0755 root bin',
+              'mode': '0755',
+              'path': '/opt/csw/share/doc/rsync',
+              'type': 'd',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/share/doc/rsync/license 0644 root bin 35147 30328 1266396366',
+              'mode': '0644',
+              'path': '/opt/csw/share/doc/rsync/license',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 d none /opt/csw/share/man/man1 0755 root bin',
+              'mode': '0755',
+              'path': '/opt/csw/share/man/man1',
+              'type': 'd',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/share/man/man1/rsync.1 0644 root bin 159739 65016 1266395027',
+              'mode': '0644',
+              'path': '/opt/csw/share/man/man1/rsync.1',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 d none /opt/csw/share/man/man5 0755 root bin',
+              'mode': '0755',
+              'path': '/opt/csw/share/man/man5',
+              'type': 'd',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/share/man/man5/rsyncd.conf.5 0644 root bin 36372 24688 1266395027',
+              'mode': '0644',
+              'path': '/opt/csw/share/man/man5/rsyncd.conf.5',
+              'type': 'f',
+              'user': 'root'},
+             {'class': None,
+              'group': None,
+              'line': '1 i copyright 69 6484 1266396366',
+              'mode': None,
+              'path': None,
+              'type': 'i',
+              'user': None},
+             {'class': None,
+              'group': None,
+              'line': '1 i depend 236 21212 1266396368',
+              'mode': None,
+              'path': None,
+              'type': 'i',
+              'user': None},
+             {'class': None,
+              'group': None,
+              'line': '1 i pkginfo 511 43247 1266396371',
+              '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