# Copyright 2004 Gentoo Foundation.
# Distributed under the terms of the GNU General Public License, v2
# $Header: /var/cvsroot/gentoo-x86/profiles/base/packages,v 1.45 2009/09/29 09:04:29 flameeyes Exp $

# Gentoo Base Profile

# NOTE: THIS IS THE BASE PROFILE FOR *ANY* GENTOO BASED OPERATING SYSTEM.
# NO MODIFICATIONS MAY BE MADE TO THIS FILE WITHOUT PRIOR DISCUSSION.  IF
# YOU ARE CREATING A NEW PROFILE, YOU SIMPLY NEED TO INHERIT THIS BASE
# PROFILE IN YOUR PROFILE DIRECTORY'S "parent" FILE.


# OK, you're staring at this file and you have no idea what these stars are
# for.  Here's the scoop.  An initial "*" marks a package that is part of
# the official BASE system profile.  If there is a "*" then `emerge system`
# will use the line in its calculations of what should be installed for the
# base profile.  Lines without a "*" prefix will be ignored for profile
# system calculations.

# Please note that this file is rarely used as a package inclusion mask
# file, because it affects EVERY SINGLE gentoo profile.   As can be seen,
# we've limited the inclusion mask to a version of portage which supports
# cascaded profiles, but apart from that, there should be no version
# specific information in here. This file serves as a high level description
# of the minimum set of packages needed for any Gentoo based system.

*sys-apps/baselayout
*app-arch/bzip2
*app-arch/cpio
*app-arch/gzip
*app-arch/tar
*app-shells/bash
#*dev-lang/perl
#*dev-lang/python
*net-misc/iputils
*net-misc/rsync
*net-misc/wget
*sys-apps/coreutils
#*sys-apps/debianutils
*sys-apps/diffutils
*sys-apps/file
*sys-apps/findutils
*sys-apps/gawk
*sys-apps/grep
*sys-apps/net-tools
#*>=sys-apps/portage-2.0.51.22
*sys-process/procps
*sys-process/psmisc
*sys-apps/sed
*sys-apps/shadow
*sys-apps/texinfo
*sys-apps/which
*sys-devel/autoconf
*sys-devel/automake
*sys-devel/binutils
*sys-devel/bison
*sys-devel/flex
*sys-devel/gcc
*sys-devel/gnuconfig
*sys-devel/libtool
*sys-devel/m4
*sys-devel/make
*>=sys-devel/patch-2.6.1
*sys-fs/e2fsprogs
*sys-libs/ncurses
*sys-libs/readline
*sys-libs/zlib
*virtual/editor
*virtual/libc
*virtual/man
*virtual/modutils
*virtual/os-headers
*virtual/pager
*virtual/portage
*virtual/ssh
