# Copyright 2005 Microsystems, Inc.  All Rights Reserved.
# Use is subject to license terms.
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This package information file defines software dependencies associated
# with the pkg.  You can define three types of pkg dependencies with this file:
#	 P indicates a prerequisite for installation
#	 I indicates an incompatible package
#	 R indicates a reverse dependency
# <pkg.abbr> see pkginfo(4), PKG parameter
# <name> see pkginfo(4), NAME parameter
# <version> see pkginfo(4), VERSION parameter
# <arch> see pkginfo(4), ARCH parameter
# <type> <pkg.abbr> <name>
# 	(<arch>)<version>
# 	(<arch>)<version>
# 	...
# <type> <pkg.abbr> <name>
# ...

P SUNWcar	Core Architecture, (Root)
P SUNWkvm	Core Architecture, (Kvm)
P SUNWcsr	Core Solaris, (Root)
P SUNWcsu	Core Solaris, (Usr)
P SUNWcsd	Core Solaris Devices
P SUNWcsl	Core Solaris Libraries
P SUNWpr	Netscape Portable Runtime
