# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/profiles/releases/freebsd-8.2/ChangeLog,v 1.2 2012/07/02 23:30:05 naota Exp $

  02 Jul 2012; Naohiro Aota <naota@gentoo.org> +package.use.mask:
  Mask egl for media-libs/mesa. #390387

  06 Jul 2011; Alexis Ballier <aballier@gentoo.org> +package.mask, +packages,
  +parent:
  add 8.2 profile, copied and adapted from 8.0

  31 Mar 2011; Tomáš Chvátal <scarabeus@gentoo.org> package.mask:
  Drop obsolete sandbox mask.

  11 Mar 2010; Alexis Ballier <aballier@gentoo.org> +package.mask,
  +packages, +parent:
  Add freebsd 8.0 profile

