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

wahwah at users.sourceforge.net wahwah at users.sourceforge.net
Tue Jul 20 13:11:36 CEST 2010


Revision: 10545
          http://gar.svn.sourceforge.net/gar/?rev=10545&view=rev
Author:   wahwah
Date:     2010-07-20 11:11:36 +0000 (Tue, 20 Jul 2010)

Log Message:
-----------
mGAR v2: checkpkg, checking architectures of binaries, allowing libm.so.2 (the x86 vs amd64 problem).

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

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

Modified: csw/mgar/gar/v2/lib/python/checkpkg.py
===================================================================
--- csw/mgar/gar/v2/lib/python/checkpkg.py	2010-07-20 10:31:49 UTC (rev 10544)
+++ csw/mgar/gar/v2/lib/python/checkpkg.py	2010-07-20 11:11:36 UTC (rev 10545)
@@ -68,10 +68,6 @@
 
 CONTENT_PKG_RE = r"^\*?(CSW|SUNW)[0-9a-zA-Z\-]?[0-9a-z\-]+$"
 
-# This shared library is present on Solaris 10 on amd64, but it's missing on
-# Solaris 8 on i386.  It's okay if it's missing.
-ALLOWED_ORPHAN_SONAMES = set([u"libm.so.2"])
-
 REPORT_TMPL = u"""#if $missing_deps or $surplus_deps or $orphan_sonames
 Dependency issues of $pkgname:
 #end if

Modified: csw/mgar/gar/v2/lib/python/dependency_checks.py
===================================================================
--- csw/mgar/gar/v2/lib/python/dependency_checks.py	2010-07-20 10:31:49 UTC (rev 10544)
+++ csw/mgar/gar/v2/lib/python/dependency_checks.py	2010-07-20 11:11:36 UTC (rev 10545)
@@ -4,6 +4,10 @@
 import os.path
 import re
 
+# This shared library is present on Solaris 10 on amd64, but it's missing on
+# Solaris 8 on i386.  It's okay if it's missing.
+ALLOWED_ORPHAN_SONAMES = set([u"libm.so.2"])
+
 DEPRECATED_LIBRARY_LOCATIONS = (
     ("/opt/csw/lib", "libdb-4.7.so", "Deprecated Berkeley DB location"),
     ("/opt/csw/lib/mysql", "libmysqlclient_r.so.15",
@@ -105,9 +109,10 @@
             % (soname, binary_info["path"], runpath_tuple, runpath_history, path_msg))
   orphan_sonames = set(orphan_sonames)
   for soname, binary_path in orphan_sonames:
-    error_mgr.ReportError(
-        pkgname, "soname-not-found",
-        "%s is needed by %s" % (soname, binary_path))
+    if soname not in ALLOWED_ORPHAN_SONAMES:
+      error_mgr.ReportError(
+          pkgname, "soname-not-found",
+          "%s is needed by %s" % (soname, binary_path))
   # TODO: Report orphan sonames here
   return required_deps
 

Modified: csw/mgar/gar/v2/lib/python/package_checks.py
===================================================================
--- csw/mgar/gar/v2/lib/python/package_checks.py	2010-07-20 10:31:49 UTC (rev 10544)
+++ csw/mgar/gar/v2/lib/python/package_checks.py	2010-07-20 11:11:36 UTC (rev 10545)
@@ -968,3 +968,20 @@
             "http://www.opencsw.org/extend-it/contribute-packages/"
             "build-standards/"
             "architecture-optimization-using-isaexec-and-isalist/")
+
+
+def CheckWrongArchitecture(pkg_data, error_mgr, logger, messenger):
+  pkgname = pkg_data["basic_stats"]["pkgname"]
+  filename_arch = pkg_data["basic_stats"]["parsed_basename"]["arch"]
+  pkginfo_arch = pkg_data["pkginfo"]["ARCH"]
+  files_metadata = pkg_data["files_metadata"]
+  for file_metadata in files_metadata:
+    if opencsw.IsBinary(file_metadata):
+      machine = HACHOIR_MACHINES[file_metadata["machine_id"]]
+      if machine["type"] != pkginfo_arch:
+        error_mgr.ReportError(
+            "binary-wrong-architecture",
+            "file=%s pkginfo-says=%s actual-binary=%s" % (
+              file_metadata["path"],
+              pkginfo_arch,
+              machine["type"]))

Modified: csw/mgar/gar/v2/lib/python/package_checks_test.py
===================================================================
--- csw/mgar/gar/v2/lib/python/package_checks_test.py	2010-07-20 10:31:49 UTC (rev 10544)
+++ csw/mgar/gar/v2/lib/python/package_checks_test.py	2010-07-20 11:11:36 UTC (rev 10545)
@@ -21,6 +21,7 @@
 from testdata.ivtools_stats import pkgstats as ivtools_stats
 from testdata.sudo_stats import pkgstats as sudo_stats
 from testdata.javasvn_stats import pkgstats as javasvn_stats
+from testdata.neon_stats import pkgstats as neon_stats
 from testdata import stubs
 
 DEFAULT_PKG_STATS = None
@@ -465,6 +466,34 @@
     self.pkg_data = [self.pkg_data]
 
 
+class TestSetCheckLibmLinking(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",)
+    binaries_dump_info[0]["needed sonames"] = ["libm.so.2"]
+    self.pkg_data["depends"] = ((u"CSWcommon", ""),)
+    self.pkg_data["binaries_dump_info"] = binaries_dump_info[0:1]
+    self.error_mgr_mock.GetPathsAndPkgnamesByBasename('libm.so.2').AndReturn({
+    })
+    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 TestRemovePackagesUnderInstallation(unittest.TestCase):
 
   def testRemoveNone(self):
@@ -1201,5 +1230,17 @@
     self.messenger.SuggestGarLine(u'RUNTIME_DEP_PKGS_CSWjavasvn += CSWiconv')
 
 
+class TestCheckWrongArchitecture(CheckpkgUnitTestHelper, unittest.TestCase):
+  FUNCTION_NAME = 'CheckWrongArchitecture'
+  def CheckpkgTest(self):
+    self.pkg_data = neon_stats[0]
+    self.error_mgr_mock.ReportError(
+        'binary-wrong-architecture',
+        'file=opt/csw/lib/sparcv9/libneon.so.27.2.0 pkginfo-says=i386 actual-binary=sparc')
+    self.error_mgr_mock.ReportError(
+        'binary-wrong-architecture',
+        'file=opt/csw/lib/sparcv9/libneon.so.26.0.4 pkginfo-says=i386 actual-binary=sparc')
+
+
 if __name__ == '__main__':
   unittest.main()

Added: csw/mgar/gar/v2/lib/python/testdata/neon_stats.py
===================================================================
--- csw/mgar/gar/v2/lib/python/testdata/neon_stats.py	                        (rev 0)
+++ csw/mgar/gar/v2/lib/python/testdata/neon_stats.py	2010-07-20 11:11:36 UTC (rev 10545)
@@ -0,0 +1,368 @@
+import datetime
+pkgstats = [{'bad_paths': {},
+  'basic_stats': {'catalogname': 'neon',
+                  'md5_sum': 'd74a2f65ef0caff0bdde7310007764a8',
+                  'parsed_basename': {'arch': 'i386',
+                                      'catalogname': 'neon',
+                                      'full_version_string': '0.29.0,REV=2009.09.14',
+                                      'osrel': 'SunOS5.8',
+                                      'revision_info': {'REV': '2009.09.14'},
+                                      'vendortag': 'CSW',
+                                      'version': '0.29.0',
+                                      'version_info': {'major version': '0',
+                                                       'minor version': '29',
+                                                       'patchlevel': '0'}},
+                  'pkg_basename': 'neon-0.29.0,REV=2009.09.14-SunOS5.8-i386-CSW.pkg.gz',
+                  'pkg_path': '/tmp/pkg_iId8vV/neon-0.29.0,REV=2009.09.14-SunOS5.8-i386-CSW.pkg.gz',
+                  'pkgname': 'CSWneon',
+                  'stats_version': 9L},
+  'binaries': ['opt/csw/lib/libneon.so.26.0.4',
+               'opt/csw/lib/libneon.so.27.2.0',
+               'opt/csw/lib/sparcv9/libneon.so.26.0.4',
+               'opt/csw/lib/sparcv9/libneon.so.27.2.0'],
+  'binaries_dump_info': [{'RPATH set': True,
+                          'RUNPATH RPATH the same': True,
+                          'RUNPATH set': True,
+                          'base_name': 'libneon.so.26.0.4',
+                          'needed sonames': ('libintl.so.8',
+                                             'libz.so',
+                                             'libssl.so.0.9.8',
+                                             'libcrypto.so.0.9.8',
+                                             'libdl.so.1',
+                                             'libgssapi_krb5.so.2',
+                                             'libkrb5.so.3',
+                                             'libk5crypto.so.3',
+                                             'libcom_err.so.3',
+                                             'libkrb5support.so.0',
+                                             'libresolv.so.2',
+                                             'libsocket.so.1',
+                                             'libnsl.so.1',
+                                             'libexpat.so.1',
+                                             'libc.so.1'),
+                          'path': 'opt/csw/lib/libneon.so.26.0.4',
+                          'runpath': ('/opt/csw/lib/$ISALIST',
+                                      '/opt/csw/lib',
+                                      '/opt/csw/lib',
+                                      '/opt/csw/lib/'),
+                          'soname': 'libneon.so.26'},
+                         {'RPATH set': True,
+                          'RUNPATH RPATH the same': True,
+                          'RUNPATH set': True,
+                          'base_name': 'libneon.so.27.2.0',
+                          'needed sonames': ('libintl.so.8',
+                                             'libz.so',
+                                             'libssl.so.0.9.8',
+                                             'libcrypto.so.0.9.8',
+                                             'libdl.so.1',
+                                             'libgssapi_krb5.so.2',
+                                             'libkrb5.so.3',
+                                             'libk5crypto.so.3',
+                                             'libcom_err.so.3',
+                                             'libkrb5support.so.0',
+                                             'libresolv.so.2',
+                                             'libsocket.so.1',
+                                             'libnsl.so.1',
+                                             'libexpat.so.1',
+                                             'libc.so.1'),
+                          'path': 'opt/csw/lib/libneon.so.27.2.0',
+                          'runpath': ('/opt/csw/lib/$ISALIST',
+                                      '/opt/csw/lib',
+                                      '/opt/csw/lib',
+                                      '/opt/csw/lib/'),
+                          'soname': 'libneon.so.27'},
+                         {'RPATH set': True,
+                          'RUNPATH RPATH the same': True,
+                          'RUNPATH set': True,
+                          'base_name': 'libneon.so.26.0.4',
+                          'needed sonames': ('libintl.so.8',
+                                             'libz.so',
+                                             'libssl.so.0.9.8',
+                                             'libcrypto.so.0.9.8',
+                                             'libsocket.so.1',
+                                             'libnsl.so.1',
+                                             'libdl.so.1',
+                                             'libexpat.so.1',
+                                             'libc.so.1'),
+                          'path': 'opt/csw/lib/sparcv9/libneon.so.26.0.4',
+                          'runpath': ('/opt/csw/lib/$ISALIST',
+                                      '/opt/csw/lib/64'),
+                          'soname': 'libneon.so.26'},
+                         {'RPATH set': True,
+                          'RUNPATH RPATH the same': True,
+                          'RUNPATH set': True,
+                          'base_name': 'libneon.so.27.2.0',
+                          'needed sonames': ('libintl.so.8',
+                                             'libz.so',
+                                             'libssl.so.0.9.8',
+                                             'libcrypto.so.0.9.8',
+                                             'libsocket.so.1',
+                                             'libnsl.so.1',
+                                             'libdl.so.1',
+                                             'libexpat.so.1',
+                                             'libc.so.1'),
+                          'path': 'opt/csw/lib/sparcv9/libneon.so.27.2.0',
+                          'runpath': ('/opt/csw/lib/$ISALIST',
+                                      '/opt/csw/lib/64'),
+                          'soname': 'libneon.so.27'}],
+  'depends': [('CSWexpat', 'CSWexpat expat - XML Parser Toolkit '),
+              ('CSWkrb5lib',
+               'CSWkrb5lib krb5_lib - MIT Kerberos 5 core libraries '),
+              ('CSWosslrt',
+               'CSWosslrt openssl_rt - Openssl runtime libraries '),
+              ('CSWzlib', 'CSWzlib zlib - Zlib Data Compression Library '),
+              ('CSWggettextrt',
+               'CSWggettextrt ggettextrt - GNU locale utilities '),
+              ('CSWcommon',
+               'CSWcommon common - common files and dirs for CSW packages ')],
+  'files_metadata': [{'mime_type': 'application/octet-stream; charset=binary',
+                      'path': 'opt/csw/share/locale/fr/LC_MESSAGES/neon.mo'},
+                     {'mime_type': 'application/octet-stream; charset=binary',
+                      'path': 'opt/csw/share/locale/cs/LC_MESSAGES/neon.mo'},
+                     {'mime_type': 'application/octet-stream; charset=binary',
+                      'path': 'opt/csw/share/locale/pl/LC_MESSAGES/neon.mo'},
+                     {'mime_type': 'application/octet-stream; charset=binary',
+                      'path': 'opt/csw/share/locale/tr/LC_MESSAGES/neon.mo'},
+                     {'mime_type': 'application/octet-stream; charset=binary',
+                      'path': 'opt/csw/share/locale/zh_CN/LC_MESSAGES/neon.mo'},
+                     {'mime_type': 'application/octet-stream; charset=binary',
+                      'path': 'opt/csw/share/locale/ru/LC_MESSAGES/neon.mo'},
+                     {'mime_type': 'application/octet-stream; charset=binary',
+                      'path': 'opt/csw/share/locale/ja/LC_MESSAGES/neon.mo'},
+                     {'mime_type': 'application/octet-stream; charset=binary',
+                      'path': 'opt/csw/share/locale/de/LC_MESSAGES/neon.mo'},
+                     {'mime_type': 'application/octet-stream; charset=binary',
+                      'path': 'opt/csw/share/locale/nn/LC_MESSAGES/neon.mo'},
+                     {'mime_type': 'text/plain; charset=us-ascii',
+                      'path': 'opt/csw/share/doc/neon/license'},
+                     {'endian': 'Little endian',
+                      'machine_id': 3,
+                      'mime_type': 'application/x-sharedlib; charset=binary',
+                      'mime_type_by_hachoir': u'application/x-executable',
+                      'path': 'opt/csw/lib/libneon.so.27.2.0'},
+                     {'endian': 'Little endian',
+                      'machine_id': 3,
+                      'mime_type': 'application/x-sharedlib; charset=binary',
+                      'mime_type_by_hachoir': u'application/x-executable',
+                      'path': 'opt/csw/lib/libneon.so.26.0.4'},
+                     {'endian': 'Big endian',
+                      'machine_id': 43,
+                      'mime_type': 'application/x-sharedlib; charset=binary',
+                      'mime_type_by_hachoir': u'application/x-executable',
+                      'path': 'opt/csw/lib/sparcv9/libneon.so.27.2.0'},
+                     {'endian': 'Big endian',
+                      'machine_id': 43,
+                      'mime_type': 'application/x-sharedlib; charset=binary',
+                      'mime_type_by_hachoir': u'application/x-executable',
+                      'path': 'opt/csw/lib/sparcv9/libneon.so.26.0.4'}],
+  'isalist': ('pentium_pro+mmx',
+              'pentium_pro',
+              'pentium+mmx',
+              'pentium',
+              'i486',
+              'i386',
+              'i86'),
+  'mtime': datetime.datetime(2009, 9, 23, 20, 21, 14),
+  'overrides': [],
+  'pkgchk': {'return_code': 0,
+             'stderr_lines': ['rm: Cannot remove any directory in the path of the current working directory',
+                              '/var/tmp/aaaG4aaGa/CSWneon'],
+             'stdout_lines': ['Checking uninstalled stream format package <CSWneon> from </tmp/pkg_iId8vV/neon-0.29.0,REV=2009.09.14-SunOS5.8-i386-CSW.pkg>',
+                              '## Checking control scripts.',
+                              '## Checking package objects.',
+                              '## Checking is complete.']},
+  'pkginfo': {'ARCH': 'i386',
+              'CATEGORY': 'application',
+              'CLASSES': 'none',
+              'EMAIL': 'dam at opencsw.org',
+              'HOTLINE': 'http://www.opencsw.org/bugtrack/',
+              'NAME': 'neon - Neon HTTP and WebDAV client library',
+              'OPENCSW_MODE64': '32/64',
+              'OPENCSW_REPOSITORY': 'https://gar.svn.sf.net/svnroot/gar/csw/mgar/pkg/neon/trunk@6303',
+              'PKG': 'CSWneon',
+              'PSTAMP': 'dam at build8x-20090914121411',
+              'VENDOR': 'http://www.webdav.org/neon/ packaged for CSW by Dagobert Michelsen',
+              'VERSION': '0.29.0,REV=2009.09.14',
+              'WORKDIR_FIRSTMOD': '../build-isa-i386-garversion-0.26.4'},
+  'pkgmap': [{'class': None,
+              'group': None,
+              'line': ': 1 1763',
+              'mode': None,
+              'path': None,
+              'type': '1',
+              'user': None},
+             {'class': 'none',
+              'group': None,
+              'line': '1 s none /opt/csw/lib/libneon.so=libneon.so.27.2.0',
+              'mode': None,
+              'path': '/opt/csw/lib/libneon.so',
+              'type': 's',
+              'user': None},
+             {'class': 'none',
+              'group': None,
+              'line': '1 s none /opt/csw/lib/libneon.so.26=libneon.so.26.0.4',
+              'mode': None,
+              'path': '/opt/csw/lib/libneon.so.26',
+              'type': 's',
+              'user': None},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/lib/libneon.so.26.0.4 0755 root bin 168252 181 1252917142',
+              'mode': '0755',
+              'path': '/opt/csw/lib/libneon.so.26.0.4',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': None,
+              'line': '1 s none /opt/csw/lib/libneon.so.27=libneon.so.27.2.0',
+              'mode': None,
+              'path': '/opt/csw/lib/libneon.so.27',
+              'type': 's',
+              'user': None},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/lib/libneon.so.27.2.0 0755 root bin 204772 15212 1252917242',
+              'mode': '0755',
+              'path': '/opt/csw/lib/libneon.so.27.2.0',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': None,
+              'line': '1 s none /opt/csw/lib/sparcv9/libneon.so=libneon.so.27.2.0',
+              'mode': None,
+              'path': '/opt/csw/lib/sparcv9/libneon.so',
+              'type': 's',
+              'user': None},
+             {'class': 'none',
+              'group': None,
+              'line': '1 s none /opt/csw/lib/sparcv9/libneon.so.26=libneon.so.26.0.4',
+              'mode': None,
+              'path': '/opt/csw/lib/sparcv9/libneon.so.26',
+              'type': 's',
+              'user': None},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/lib/sparcv9/libneon.so.26.0.4 0755 root bin 202616 50766 1252915624',
+              'mode': '0755',
+              'path': '/opt/csw/lib/sparcv9/libneon.so.26.0.4',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': None,
+              'line': '1 s none /opt/csw/lib/sparcv9/libneon.so.27=libneon.so.27.2.0',
+              'mode': None,
+              'path': '/opt/csw/lib/sparcv9/libneon.so.27',
+              'type': 's',
+              'user': None},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/lib/sparcv9/libneon.so.27.2.0 0755 root bin 244248 40979 1252915763',
+              'mode': '0755',
+              'path': '/opt/csw/lib/sparcv9/libneon.so.27.2.0',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 d none /opt/csw/share/doc/neon 0755 root bin',
+              'mode': '0755',
+              'path': '/opt/csw/share/doc/neon',
+              'type': 'd',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/share/doc/neon/license 0644 root bin 630 53497 1252923212',
+              'mode': '0644',
+              'path': '/opt/csw/share/doc/neon/license',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/share/locale/cs/LC_MESSAGES/neon.mo 0644 root bin 1566 54451 1252917245',
+              'mode': '0644',
+              'path': '/opt/csw/share/locale/cs/LC_MESSAGES/neon.mo',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/share/locale/de/LC_MESSAGES/neon.mo 0644 root bin 1712 61756 1252917245',
+              'mode': '0644',
+              'path': '/opt/csw/share/locale/de/LC_MESSAGES/neon.mo',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/share/locale/fr/LC_MESSAGES/neon.mo 0644 root bin 387 27949 1252917245',
+              'mode': '0644',
+              'path': '/opt/csw/share/locale/fr/LC_MESSAGES/neon.mo',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/share/locale/ja/LC_MESSAGES/neon.mo 0644 root bin 877 10980 1252917246',
+              'mode': '0644',
+              'path': '/opt/csw/share/locale/ja/LC_MESSAGES/neon.mo',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/share/locale/nn/LC_MESSAGES/neon.mo 0644 root bin 1626 54801 1252917246',
+              'mode': '0644',
+              'path': '/opt/csw/share/locale/nn/LC_MESSAGES/neon.mo',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/share/locale/pl/LC_MESSAGES/neon.mo 0644 root bin 13423 44594 1252917246',
+              'mode': '0644',
+              'path': '/opt/csw/share/locale/pl/LC_MESSAGES/neon.mo',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/share/locale/ru/LC_MESSAGES/neon.mo 0644 root bin 383 27763 1252917246',
+              'mode': '0644',
+              'path': '/opt/csw/share/locale/ru/LC_MESSAGES/neon.mo',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/share/locale/tr/LC_MESSAGES/neon.mo 0644 root bin 1523 50355 1252917246',
+              'mode': '0644',
+              'path': '/opt/csw/share/locale/tr/LC_MESSAGES/neon.mo',
+              'type': 'f',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 d none /opt/csw/share/locale/zh_CN/LC_MESSAGES 0755 root bin',
+              'mode': '0755',
+              'path': '/opt/csw/share/locale/zh_CN/LC_MESSAGES',
+              'type': 'd',
+              'user': 'root'},
+             {'class': 'none',
+              'group': 'bin',
+              'line': '1 f none /opt/csw/share/locale/zh_CN/LC_MESSAGES/neon.mo 0644 root bin 8552 58772 1252917246',
+              'mode': '0644',
+              'path': '/opt/csw/share/locale/zh_CN/LC_MESSAGES/neon.mo',
+              'type': 'f',
+              'user': 'root'},
+             {'class': None,
+              'group': None,
+              'line': '1 i copyright 68 6357 1252923212',
+              'mode': None,
+              'path': None,
+              'type': 'i',
+              'user': None},
+             {'class': None,
+              'group': None,
+              'line': '1 i depend 300 26720 1252923256',
+              'mode': None,
+              'path': None,
+              'type': 'i',
+              'user': None},
+             {'class': None,
+              'group': None,
+              'line': '1 i pkginfo 462 37649 1252923258',
+              '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