# 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/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/kbd
*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
*sys-fs/e2fsprogs
*sys-libs/ncurses
*sys-libs/readline
*sys-libs/zlib
*virtual/dev-manager
*virtual/editor
*virtual/gzip
*virtual/libc
*virtual/man
*virtual/modutils
*virtual/os-headers
*virtual/pager
*virtual/portage
*virtual/ssh
