# 
# Copyright 2005 Sun 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/.
#
#	$Id$
#
# 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
