# Copyright 2001-2009 Gentoo Foundation.
# Distributed under the terms of the GNU General Public License, v2
# $Header: /var/cvsroot/gentoo-x86/profiles/releases/10.0/packages,v 1.2 2009/08/17 18:54:28 darkside Exp $

# For instructions on how this file works (as an inclusion mask, primarily),
# please refer to ${PORTDIR}/profiles/base/packages

# Use this file to lock down specific versions of packages ONLY TO THIS
# SPECIFIC PROFILE!

# You can also add files to the base system itself if you prefix them with a
# *

>=sys-apps/baselayout-1.12.10-r5
>=sys-devel/binutils-2.18-r1
>=sys-libs/glibc-2.4-r4
>=sys-apps/portage-2.1.6.8
