[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