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

wahwah at users.sourceforge.net wahwah at users.sourceforge.net
Mon Mar 1 10:23:32 CET 2010


Revision: 8907
          http://gar.svn.sourceforge.net/gar/?rev=8907&view=rev
Author:   wahwah
Date:     2010-03-01 09:23:31 +0000 (Mon, 01 Mar 2010)

Log Message:
-----------
mGAR v2: checkpkg, first bunch of checks using the new API

Modified Paths:
--------------
    csw/mgar/gar/v2/bin/checkpkg
    csw/mgar/gar/v2/lib/checkpkg.d/checkpkg-libs.py
    csw/mgar/gar/v2/lib/python/checkpkg.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

Added Paths:
-----------
    csw/mgar/gar/v2/lib/python/testdata/stats/
    csw/mgar/gar/v2/lib/python/testdata/stats/46/
    csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/
    csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/all_filenames.yml
    csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/basic_stats.yml
    csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/binaries.yml
    csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/binaries_dump_info.yml
    csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/depends.yml
    csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/isalist.yml
    csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/overrides.yml
    csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/pkginfo.yml
    csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/pkgmap.yml

Modified: csw/mgar/gar/v2/bin/checkpkg
===================================================================
--- csw/mgar/gar/v2/bin/checkpkg	2010-03-01 09:02:35 UTC (rev 8906)
+++ csw/mgar/gar/v2/bin/checkpkg	2010-03-01 09:23:31 UTC (rev 8907)
@@ -260,58 +260,6 @@
 
 ########################################
 # Check for some common errors
-if [[ $pkgname != "CSWcommon" ]] ; then
-
-	egrep 'd none /opt ' $EXTRACTDIR/$pkgname/pkgmap
-	if [[ $? -eq 0 ]] ; then
-	errmsg You should not have an entry for /opt in your prototype file
-	fi
-	egrep 'd none [^ ]* 06' $EXTRACTDIR/$pkgname/pkgmap
-	if [[ $? -eq 0 ]] ; then
-	errmsg You must have execute permission set on directories
-	fi
-	egrep '/opt/csw/man|d none man' $EXTRACTDIR/$pkgname/pkgmap
-	if [[ $? -eq 0 ]] ; then
-	errmsg /opt/csw/man should not have a directory entry in prototype
-	fi
-	egrep '/opt/csw/doc|d none doc' $EXTRACTDIR/$pkgname/pkgmap
-	if [[ $? -eq 0 ]] ; then
-	errmsg /opt/csw/doc should not have a directory entry in prototype
-	fi
-	egrep '/opt/csw/info|d none info' $EXTRACTDIR/$pkgname/pkgmap
-	if [[ $? -eq 0 ]] ; then
-	errmsg /opt/csw/info should not have a directory entry in prototype
-	fi
-	egrep 'lib/charset.alias' $EXTRACTDIR/$pkgname/pkgmap
-	if [[ $? -eq 0 ]] ; then
-	warnmsg Only CSWiconv should have lib/charset.alias in it
-	fi
-	egrep 'share/locale/locale.alias' $EXTRACTDIR/$pkgname/pkgmap
-	if [[ $? -eq 0 ]] ; then
-	warnmsg Only CSWcommon should have share/locale/locale.alias in it
-	fi
-	fgrep  '? ? ?' $EXTRACTDIR/$pkgname/pkgmap |
-	egrep '[/]opt[/]csw'
-	if [[ $? -eq 0 ]] ; then
-	errmsg "You should only use '? ? ?' for non-csw paths. Use appropriate explicit perms/ownership instead"
-	fi
-	# this is like "installed package info". It is acceptible
-	# to update it in a postinstall script, but not have it
-	# directly in the pkgmap. A "e" entry might be acceptible though.
-	egrep ' f .*/perllocal.pod' $EXTRACTDIR/$pkgname/pkgmap
-	if [[ $? -eq 0 ]] ; then
-	errmsg perllocal.pod should be removed from prototype file
-	fi
-fi
-# special case. sigh.
-if [[ $pkgname != "CSWtexinfo" ]] ; then
-	egrep '/opt/csw/share/info/dir[ ]|none share/info/dir[ ]' $EXTRACTDIR/$pkgname/pkgmap
-	if [[ $? -eq 0 ]] ; then
-	errmsg /opt/csw/share/info/dir should only be in CSWtexinfo
-	rm -rf $EXTRACTDIR $TMPARCHIVE
-	exit 1
-	fi
-fi
 #########################################
 # find all executables and dynamic libs,and list their filenames.
 listbinaries() {
@@ -324,26 +272,15 @@
 	find $1 -print | xargs file |grep ELF |nawk -F: '{print $1}'
 }
 
-
-
-
 if [[ "$goodarch" = "yes" ]] ; then
 	# man ld.so.1 for more info on this hack
 	export LD_NOAUXFLTR=1
-
 	listbinaries $EXTRACTDIR/$pkgname >$EXTRACTDIR/elflist
 	# have to do this for ldd to work. arrg.
 	if [ -s "$EXTRACTDIR/elflist" ] ; then
 		chmod 0755 `cat $EXTRACTDIR/elflist`
-
-	#cat $EXTRACTDIR/elflist| xargs ldd  2>/dev/null |fgrep  '.so' |
-	#              sed 's:^.*=>[^/]*::' | nawk '{print $1}' |sort -u >$EXTRACTDIR/liblist
-
 		cat $EXTRACTDIR/elflist| xargs /usr/ccs/bin/dump -Lv |nawk '$2=="NEEDED"{print $3}' |
 			sort -u | egrep -v $EXTRACTDIR >$EXTRACTDIR/liblist
-
-			
-
 		print libraries used are:
 		cat $EXTRACTDIR/liblist
 		print "cross-referencing with depend file (May take a while)"
@@ -375,14 +312,6 @@
 	errmsg "$pkgname references self in depend file"
 fi
 
-# Verify that there are no multiple depends
-repeated_depends="$(awk '{print $2}' $EXTRACTDIR/$pkgname/install/depend \
-  | sort | uniq -c | awk '{print $1}' | sort | uniq | wc -l)"
-if [[ "$repeated_depends" -gt 1 ]]; then
-        cat $EXTRACTDIR/$pkgname/install/depend
-        errmsg "$pkgname lists a dependency more than once, see above"
-fi
-
 #to retain a record of all packages currently being examined from $@
 echo $pkgname >> $SETDEPS
 

Modified: csw/mgar/gar/v2/lib/checkpkg.d/checkpkg-libs.py
===================================================================
--- csw/mgar/gar/v2/lib/checkpkg.d/checkpkg-libs.py	2010-03-01 09:02:35 UTC (rev 8906)
+++ csw/mgar/gar/v2/lib/checkpkg.d/checkpkg-libs.py	2010-03-01 09:23:31 UTC (rev 8907)
@@ -123,27 +123,7 @@
   dependent_pkgs = {}
   for checker in pkgs_data:
     pkgname = checker["basic_stats"]["pkgname"]
-    declared_dependencies = checker["depends"]
-    if debug and False:
-      sanitized_pkgname = pkgname.replace("-", "_")
-      data_file_name = "/var/tmp/checkpkg_test_data_%s.py" % sanitized_pkgname
-      logging.warn("Saving test data to %s." % repr(data_file_name))
-      test_fd = open(data_file_name, "w")
-      print >>test_fd, "# Testing data for %s" % pkgname
-      print >>test_fd, "# $Id$"
-      print >>test_fd, "DATA_PKGNAME                  =", repr(pkgname)
-      print >>test_fd, "DATA_DECLARED_DEPENDENCIES    =", repr(declared_dependencies)
-      print >>test_fd, "DATA_BINARIES_BY_PKGNAME      =", repr(binaries_by_pkgname)
-      print >>test_fd, "DATA_NEEDED_SONAMES_BY_BINARY =", repr(needed_sonames_by_binary)
-      print >>test_fd, "DATA_PKGS_BY_FILENAME         =", repr(pkgs_by_filename)
-      print >>test_fd, "DATA_FILENAMES_BY_SONAME      =", repr(filenames_by_soname)
-      print >>test_fd, "DATA_PKG_BY_ANY_FILENAME      =", repr(pkg_by_any_filename)
-      print >>test_fd, "DATA_LINES_BY_SONAME          =", repr(lines_by_soname)
-      print >>test_fd, "DATA_PKGMAP_CACHE             =", repr(pkgmap.cache)
-      print >>test_fd, "DATA_BINARIES_BY_SONAME       =", repr(binaries_by_soname)
-      print >>test_fd, "DATA_ISALIST                  =", repr(isalist)
-      test_fd.close()
-
+    declared_dependencies = dict(checker["depends"])
     missing_deps, surplus_deps, orphan_sonames = checkpkg.AnalyzeDependencies(
         pkgname,
         declared_dependencies,

Modified: csw/mgar/gar/v2/lib/python/checkpkg.py
===================================================================
--- csw/mgar/gar/v2/lib/python/checkpkg.py	2010-03-01 09:02:35 UTC (rev 8906)
+++ csw/mgar/gar/v2/lib/python/checkpkg.py	2010-03-01 09:23:31 UTC (rev 8907)
@@ -40,6 +40,7 @@
 )
 INSTALL_CONTENTS_AVG_LINE_LENGTH = 102.09710677919261
 DB_SCHEMA_VERSION = 2L
+PACKAGE_STATS_VERSION = 2L
 
 # 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.
@@ -772,6 +773,7 @@
   def SetErrorsToDict(self, set_errors, a_dict):
     # These were generated by a set, but are likely to be bound to specific
     # packages. We'll try to preserve the package assignments.
+    errors = copy.copy(a_dict)
     for tag in set_errors:
       if tag.pkgname:
         if not tag.pkgname in errors:
@@ -864,15 +866,17 @@
         all_stats = pkg_data.GetAllStats()
         pkgname = all_stats["basic_stats"]["pkgname"]
         error_mgr = self.IndividualErrorGatherer(pkgname)
-        logger = logging.getLogger(pkgname)
+        logger = logging.getLogger("%s-%s" % (pkgname, function.__name__))
+        logger.debug("Calling %s", function.__name__)
         function(all_stats, error_mgr, logger=logger)
         if error_mgr.errors:
           errors[pkgname] = error_mgr.errors
     # Set checks
     for function in self.set_checks:
       pkgs_data = [x.GetAllStats() for x in packages_data]
-      logger = logging.getLogger("SetCheck %s" % function)
+      logger = logging.getLogger("SetCheck-%s" % (function.__name__,))
       error_mgr = self.SetErrorGatherer()
+      logger.debug("Calling %s", function.__name__)
       function(pkgs_data, error_mgr, logger)
       if error_mgr.errors:
         errors = self.SetErrorsToDict(error_mgr.errors, errors)
@@ -985,7 +989,6 @@
 
 class PackageStats(object):
   """Collects stats about a package and saves it."""
-  STATS_VERSION = 1L
   # This list needs to be synchronized with the CollectStats() method.
   STAT_FILES = [
       "all_filenames",
@@ -1091,7 +1094,7 @@
   def GetBasicStats(self):
     dir_pkg = self.GetDirFormatPkg()
     basic_stats = {}
-    basic_stats["stats_version"] = self.STATS_VERSION
+    basic_stats["stats_version"] = PACKAGE_STATS_VERSION
     basic_stats["pkg_path"] = self.srv4_pkg.pkg_path
     basic_stats["pkg_basename"] = os.path.basename(self.srv4_pkg.pkg_path)
     basic_stats["parsed_basename"] = opencsw.ParsePackageFileName(basic_stats["pkg_basename"])

Modified: csw/mgar/gar/v2/lib/python/opencsw.py
===================================================================
--- csw/mgar/gar/v2/lib/python/opencsw.py	2010-03-01 09:02:35 UTC (rev 8906)
+++ csw/mgar/gar/v2/lib/python/opencsw.py	2010-03-01 09:23:31 UTC (rev 8907)
@@ -739,11 +739,15 @@
 
   def GetDependencies(self):
     fd = open(os.path.join(self.directory, "install", "depend"), "r")
-    depends = {}
+    # It needs to be a list because there might be duplicates and it's
+    # necessary to carry that information.
+    depends = []
     for line in fd:
       fields = re.split(WS_RE, line)
       if fields[0] == "P":
-        depends[fields[1]] = " ".join(fields[1:])
+        pkgname = fields[1]
+        pkg_desc = " ".join(fields[1:])
+        depends.append((pkgname, pkg_desc))
     fd.close()
     return depends
 

Modified: csw/mgar/gar/v2/lib/python/package_checks.py
===================================================================
--- csw/mgar/gar/v2/lib/python/package_checks.py	2010-03-01 09:02:35 UTC (rev 8906)
+++ csw/mgar/gar/v2/lib/python/package_checks.py	2010-03-01 09:23:31 UTC (rev 8907)
@@ -11,6 +11,59 @@
 #   logger.debug("Checking something.")
 #   error_mgr.ReportError("something-is-wrong")
 
-def CheckPkgmap(pkg_data, error_mgr, logger):
-  # error_mgr.ReportError("foo")
+import re
+
+PATHS_ALLOWED_ONLY_IN = {
+    "CSWcommon": ["/opt",
+                  "/opt/csw/man",
+                  "/opt/csw/doc",
+                  "/opt/csw/info",
+                  "/opt/csw/share/locale/locale.alias"],
+    "CSWiconv": ["/opt/csw/lib/charset.alias"],
+    "CSWtexinfp": ["/opt/csw/share/info/dir"],
+}
+
+
+def CheckForbiddenPaths(pkg_data, error_mgr, logger):
+  for pkgname in PATHS_ALLOWED_ONLY_IN:
+    if pkgname != pkg_data["basic_stats"]["pkgname"]:
+      for entry in pkg_data["pkgmap"]:
+        for forbidden_path in PATHS_ALLOWED_ONLY_IN[pkgname]:
+          if entry["path"] == forbidden_path:
+            error_mgr.ReportError("forbidden-path", entry["path"])
+
+
+def CheckDirectoryPermissions(pkg_data, error_mgr, logger):
+  for entry in pkg_data["pkgmap"]:
+    if entry["type"] == "d":
+      if entry["mode"][1] == "6":
+        error_mgr.ReportError("executable-bit-missing-on-a-directory",
+                              entry["path"])
+
+
+def CheckNonCswPathsDirectoryPerms(pkg_data, error_mgr, logger):
+  for entry in pkg_data["pkgmap"]:
+    if entry["user"] == "?" or entry["group"] == "?" or entry["mode"] == "?":
+      if entry["path"].startswith("/opt/csw"):
+        error_mgr.ReportError("question-mark-perms-in-opt-csw", entry["path"])
+
+
+def CheckPerlLocal(pkg_data, error_mgr, logger):
+  perllocal_re = re.compile(r'/perllocal.pod')
+  for entry in pkg_data["pkgmap"]:
+    if entry["path"]:
+      if re.search(perllocal_re, entry["path"]):
+        error_mgr.ReportError("perllocal-pod-in-pkgmap", entry["path"])
+
+
+def CheckMultipleDepends(pkg_data, error_mgr, logger):
+  new_depends = set()
+  for pkgname, desc in pkg_data["depends"]:
+    if pkgname in new_depends:
+      error_mgr.ReportError("dependency-listed-more-than-once", pkgname)
+    new_depends.add(pkgname)
+
+
+def SetCheckDependencies(pkgs_data, error_mgr, logger):
+  """Dependencies must be either installed in the system, or in the set."""
   pass

Modified: csw/mgar/gar/v2/lib/python/package_checks_test.py
===================================================================
--- csw/mgar/gar/v2/lib/python/package_checks_test.py	2010-03-01 09:02:35 UTC (rev 8906)
+++ csw/mgar/gar/v2/lib/python/package_checks_test.py	2010-03-01 09:23:31 UTC (rev 8907)
@@ -4,11 +4,37 @@
 
 import unittest
 import package_checks as pc
+import checkpkg
 import yaml
 import os.path
+import mox
+import logging
 
 BASE_DIR = os.path.dirname(__file__)
 TESTDATA_DIR = os.path.join(BASE_DIR, "testdata")
+CHECKPKG_STATS_DIR = os.path.join(TESTDATA_DIR, "stats")
+DEFAULT_MD5 = "461a24f02dd5020b4aa014b76f3ec2cc"
 
-class Foo(unittest.TestCase):
-  pass
+class CheckpkgUnitTest(unittest.TestCase):
+  """Write a helper function using mox."""
+
+  def setUp(self):
+    self.pkg_stats = checkpkg.PackageStats(None,
+                                           CHECKPKG_STATS_DIR,
+                                           DEFAULT_MD5)
+    self.pkg_data = self.pkg_stats.GetAllStats()
+    self.mocker = mox.Mox()
+
+  def testMultipleDepends(self):
+    logger_mock = self.mocker.CreateMock(logging.Logger)
+    error_mgr_mock = self.mocker.CreateMock(
+        checkpkg.CheckpkgManager2.IndividualErrorGatherer)
+    self.pkg_data["depends"].append(("CSWcommon", "This is surplus")) # this
+    error_mgr_mock.ReportError('dependency-listed-more-than-once', 'CSWcommon') # this
+    self.mocker.ReplayAll()
+    pc.CheckMultipleDepends(self.pkg_data, error_mgr_mock, logger_mock) # name or variable
+    self.mocker.VerifyAll()
+
+
+if __name__ == '__main__':
+	unittest.main()

Added: csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/all_filenames.yml
===================================================================
--- csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/all_filenames.yml	                        (rev 0)
+++ csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/all_filenames.yml	2010-03-01 09:23:31 UTC (rev 8907)
@@ -0,0 +1 @@
+[pkginfo, pkgmap, copyright, depend, rsyncd.conf.5, rsync.1, license, rsync, rsync]

Added: csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/basic_stats.yml
===================================================================
--- csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/basic_stats.yml	                        (rev 0)
+++ csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/basic_stats.yml	2010-03-01 09:23:31 UTC (rev 8907)
@@ -0,0 +1,14 @@
+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

Added: csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/binaries.yml
===================================================================
--- csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/binaries.yml	                        (rev 0)
+++ csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/binaries.yml	2010-03-01 09:23:31 UTC (rev 8907)
@@ -0,0 +1 @@
+[opt/csw/bin/sparcv9/rsync, opt/csw/bin/sparcv8/rsync]

Added: csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/binaries_dump_info.yml
===================================================================
--- csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/binaries_dump_info.yml	                        (rev 0)
+++ csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/binaries_dump_info.yml	2010-03-01 09:23:31 UTC (rev 8907)
@@ -0,0 +1,16 @@
+- 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

Added: csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/depends.yml
===================================================================
--- csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/depends.yml	                        (rev 0)
+++ csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/depends.yml	2010-03-01 09:23:31 UTC (rev 8907)
@@ -0,0 +1,5 @@
+- [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 ']

Added: csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/isalist.yml
===================================================================
--- csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/isalist.yml	                        (rev 0)
+++ csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/isalist.yml	2010-03-01 09:23:31 UTC (rev 8907)
@@ -0,0 +1,2 @@
+[sparcv9+vis2, sparcv9+vis, sparcv9, sparcv8plus+vis2, sparcv8plus+vis, sparcv8plus,
+  sparcv8, sparcv8-fsmuld, sparcv7, sparc]

Added: csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/overrides.yml
===================================================================
--- csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/overrides.yml	                        (rev 0)
+++ csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/overrides.yml	2010-03-01 09:23:31 UTC (rev 8907)
@@ -0,0 +1 @@
+[]

Added: csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/pkginfo.yml
===================================================================
--- csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/pkginfo.yml	                        (rev 0)
+++ csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/pkginfo.yml	2010-03-01 09:23:31 UTC (rev 8907)
@@ -0,0 +1,5 @@
+{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}

Added: csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/pkgmap.yml
===================================================================
--- csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/pkgmap.yml	                        (rev 0)
+++ csw/mgar/gar/v2/lib/python/testdata/stats/46/461a24f02dd5020b4aa014b76f3ec2cc/pkgmap.yml	2010-03-01 09:23:31 UTC (rev 8907)
@@ -0,0 +1,31 @@
+- {class: null, group: null, line: ': 1 2912', mode: null, path: null, type: '1',
+  user: null}
+- {class: none, group: null, line: 1 l none /opt/csw/bin/rsync=/opt/csw/bin/isaexec,
+  mode: null, path: /opt/csw/bin/rsync, type: l, user: null}
+- {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: null, group: null, line: 1 i copyright 69 6484 1266396366, mode: null, path: null,
+  type: i, user: null}
+- {class: null, group: null, line: 1 i depend 236 21212 1266396368, mode: null, path: null,
+  type: i, user: null}
+- {class: null, group: null, line: 1 i pkginfo 511 43247 1266396371, mode: null, path: null,
+  type: i, user: null}


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