[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