src/modules/bundle/SolarisPackageDatastreamBundle.py
author Bart Smaalders <Bart.Smaalders@Sun.COM>
Fri, 01 Aug 2008 23:57:44 -0700
changeset 443 5ffa5b7dac9c
parent 409 713e20963dc2
child 1161 8285550f6028
permissions -rw-r--r--
2589 pyc files generate lots of verify chaff 2726 pkg verify doesn't verify file or content hash by default 2680 packagemanager prototype files don't belong in the workspace
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
409
713e20963dc2 2314 shebang lines should use minimum python version
Shawn Walker <swalker@opensolaris.org>
parents: 239
diff changeset
     1
#!/usr/bin/python2.4
42
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
     2
#
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
     3
# CDDL HEADER START
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
     4
#
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
     5
# The contents of this file are subject to the terms of the
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
     6
# Common Development and Distribution License (the "License").
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
     7
# You may not use this file except in compliance with the License.
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
     8
#
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
     9
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    10
# or http://www.opensolaris.org/os/licensing.
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    11
# See the License for the specific language governing permissions
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    12
# and limitations under the License.
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    13
#
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    14
# When distributing Covered Code, include this CDDL HEADER in each
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    15
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    16
# If applicable, add the following below this CDDL HEADER, with the
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    17
# fields enclosed by brackets "[]" replaced with your own identifying
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    18
# information: Portions Copyright [yyyy] [name of copyright owner]
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    19
#
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    20
# CDDL HEADER END
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    21
#
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    22
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    23
#
409
713e20963dc2 2314 shebang lines should use minimum python version
Shawn Walker <swalker@opensolaris.org>
parents: 239
diff changeset
    24
# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
42
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    25
# Use is subject to license terms.
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    26
#
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    27
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    28
import os
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    29
import stat
443
5ffa5b7dac9c 2589 pyc files generate lots of verify chaff
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents: 409
diff changeset
    30
import pkg.misc as misc
42
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    31
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    32
from pkg.sysvpkg import SolarisPackage
49
c3a70bdc4527 First cut of actions; make file transfer generic.
Danek Duvall <danek.duvall@sun.com>
parents: 42
diff changeset
    33
from pkg.actions import *
42
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    34
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    35
typemap = {
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    36
        stat.S_IFBLK: "block-special",
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    37
        stat.S_IFCHR: "character-special",
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    38
        stat.S_IFDIR: "directory",
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    39
        stat.S_IFIFO: "fifo",
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    40
        stat.S_IFLNK: "link",
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    41
        stat.S_IFREG: "file",
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    42
        stat.S_IFSOCK: "socket"
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    43
}
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    44
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    45
class SolarisPackageDatastreamBundle(object):
50
bfcb1661f019 basic image and package plans
Stephen Hahn <sch@sun.com>
parents: 49
diff changeset
    46
        """XXX Need a class comment."""
42
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    47
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    48
        def __init__(self, filename):
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    49
                self.pkg = SolarisPackage(filename)
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    50
                self.pkgname = self.pkg.pkginfo["PKG"]
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    51
                self.filename = filename
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    52
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    53
                # SolarisPackage.manifest is a list.  Cache it into a dictionary
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    54
                # based on pathname.  The cpio archive contains the files as
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    55
                # they would be in the directory structure -- that is, under
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    56
                # install, reloc, or root, depending on whether they're i-type
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    57
                # files, relocatable files, or unrelocatable files.  Make sure
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    58
                # we find the right object, even though the filenames in the
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    59
                # package map don't have these directory names.
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    60
                self.pkgmap = {}
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    61
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    62
                for p in self.pkg.manifest:
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    63
                        if p.type in "fevd":
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    64
                                if p.pathname.startswith("/"):
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    65
                                        dir = "root"
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    66
                                else:
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    67
                                        dir = "reloc/"
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    68
                                self.pkgmap[dir + p.pathname] = p
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    69
                        elif p.type == "i":
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    70
                                self.pkgmap["install/" + p.pathname] = p
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    71
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    72
        def __iter__(self):
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    73
                """Iterate through the datastream.
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    74
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    75
                   This is different than the directory-format package bundle,
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    76
                   which iterates through the package map.  We do it this way
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    77
                   because the cpio archive might not be in the same order as
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    78
                   the package map, and we want never to seek backwards.  This
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    79
                   implies that we're going to have to look up the meta info for
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    80
                   each file from the package map.  We could get the file type
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    81
                   from the archive, but it's probably safe to assume that the
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    82
                   file type in the archive is the same as the file type in the
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    83
                   package map.
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    84
                """
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    85
                for p in self.pkg.datastream:
49
c3a70bdc4527 First cut of actions; make file transfer generic.
Danek Duvall <danek.duvall@sun.com>
parents: 42
diff changeset
    86
                        yield self.action(self.pkgmap, p, p.name)
42
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    87
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    88
                # for some reason, some packages may have directories specified
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    89
                # in the pkgmap that don't exist in the archive.  They need to
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    90
                # be found and iterated as well.
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    91
                #
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    92
                # Some of the blastwave packages also have directories in the
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    93
                # archive that don't exist in the package metadata.  I don't see
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    94
                # a whole lot of point in faking those up.
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    95
                for p in self.pkg.manifest:
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    96
                        if p.pathname.startswith("/"):
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    97
                                dir = "root"
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    98
                        else:
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
    99
                                dir = "reloc/"
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
   100
                        if p.type == "d" and \
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
   101
                            dir + p.pathname not in self.pkg.datastream:
49
c3a70bdc4527 First cut of actions; make file transfer generic.
Danek Duvall <danek.duvall@sun.com>
parents: 42
diff changeset
   102
                                yield self.action(self.pkgmap, None,
c3a70bdc4527 First cut of actions; make file transfer generic.
Danek Duvall <danek.duvall@sun.com>
parents: 42
diff changeset
   103
                                    dir + p.pathname)
c3a70bdc4527 First cut of actions; make file transfer generic.
Danek Duvall <danek.duvall@sun.com>
parents: 42
diff changeset
   104
c3a70bdc4527 First cut of actions; make file transfer generic.
Danek Duvall <danek.duvall@sun.com>
parents: 42
diff changeset
   105
        def action(self, pkgmap, ci, path):
c3a70bdc4527 First cut of actions; make file transfer generic.
Danek Duvall <danek.duvall@sun.com>
parents: 42
diff changeset
   106
                try:
c3a70bdc4527 First cut of actions; make file transfer generic.
Danek Duvall <danek.duvall@sun.com>
parents: 42
diff changeset
   107
                        mapline = pkgmap[path]
c3a70bdc4527 First cut of actions; make file transfer generic.
Danek Duvall <danek.duvall@sun.com>
parents: 42
diff changeset
   108
                except KeyError:
c3a70bdc4527 First cut of actions; make file transfer generic.
Danek Duvall <danek.duvall@sun.com>
parents: 42
diff changeset
   109
                        # XXX Return an unknown instead of a missing, for now.
443
5ffa5b7dac9c 2589 pyc files generate lots of verify chaff
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents: 409
diff changeset
   110
                        return unknown.UnknownAction(path=path)
42
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
   111
49
c3a70bdc4527 First cut of actions; make file transfer generic.
Danek Duvall <danek.duvall@sun.com>
parents: 42
diff changeset
   112
                if mapline.type in "fev":
c3a70bdc4527 First cut of actions; make file transfer generic.
Danek Duvall <danek.duvall@sun.com>
parents: 42
diff changeset
   113
                        return file.FileAction(ci.extractfile(),
443
5ffa5b7dac9c 2589 pyc files generate lots of verify chaff
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents: 409
diff changeset
   114
                            mode=mapline.mode, owner=mapline.owner,
5ffa5b7dac9c 2589 pyc files generate lots of verify chaff
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents: 409
diff changeset
   115
                            group=mapline.group, path=mapline.pathname,
5ffa5b7dac9c 2589 pyc files generate lots of verify chaff
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents: 409
diff changeset
   116
                            timestamp=misc.time_to_timestamp(int(mapline.modtime)))
49
c3a70bdc4527 First cut of actions; make file transfer generic.
Danek Duvall <danek.duvall@sun.com>
parents: 42
diff changeset
   117
                elif mapline.type in "dx":
c3a70bdc4527 First cut of actions; make file transfer generic.
Danek Duvall <danek.duvall@sun.com>
parents: 42
diff changeset
   118
                        return directory.DirectoryAction(mode = mapline.mode,
443
5ffa5b7dac9c 2589 pyc files generate lots of verify chaff
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents: 409
diff changeset
   119
                            owner=mapline.owner, group=mapline.group,
5ffa5b7dac9c 2589 pyc files generate lots of verify chaff
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents: 409
diff changeset
   120
                            path=mapline.pathname)
49
c3a70bdc4527 First cut of actions; make file transfer generic.
Danek Duvall <danek.duvall@sun.com>
parents: 42
diff changeset
   121
                elif mapline.type == "s":
443
5ffa5b7dac9c 2589 pyc files generate lots of verify chaff
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents: 409
diff changeset
   122
                        return link.LinkAction(path=mapline.pathname,
5ffa5b7dac9c 2589 pyc files generate lots of verify chaff
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents: 409
diff changeset
   123
                            target=mapline.target)
49
c3a70bdc4527 First cut of actions; make file transfer generic.
Danek Duvall <danek.duvall@sun.com>
parents: 42
diff changeset
   124
                elif mapline.type == "l":
443
5ffa5b7dac9c 2589 pyc files generate lots of verify chaff
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents: 409
diff changeset
   125
                        return hardlink.HardLinkAction(path=mapline.pathname,
5ffa5b7dac9c 2589 pyc files generate lots of verify chaff
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents: 409
diff changeset
   126
                            target=mapline.target)
49
c3a70bdc4527 First cut of actions; make file transfer generic.
Danek Duvall <danek.duvall@sun.com>
parents: 42
diff changeset
   127
                else:
443
5ffa5b7dac9c 2589 pyc files generate lots of verify chaff
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents: 409
diff changeset
   128
                        return unknown.UnknownAction(path=mapline.pathname)
42
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
   129
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
   130
def test(filename):
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
   131
        if not os.path.isfile(filename):
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
   132
                return False
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
   133
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
   134
        try:
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
   135
                SolarisPackage(filename)
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
   136
                return True
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
   137
        except:
05a14df12bd5 Add support for faspac'ed packages and package datastreams.
Danek Duvall <danek.duvall@sun.com>
parents:
diff changeset
   138
                return False