# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/profiles/releases/freebsd-9.2/ChangeLog,v 1.1 2013/08/09 14:09:22 aballier Exp $

  07 Aug 2012; Alexis Ballier <aballier@gentoo.org> +package.mask, +packages,
  +parent:
  add profiles for 9.1, from the bsd overlay based on 9.0 ones

  12 May 2012; Alexis Ballier <aballier@gentoo.org> package.mask:
  mask libutempter

  27 Apr 2012; Alexis Ballier <aballier@gentoo.org> packages:
  remove virtual/ssh from system for now as no implementation builds on FreeBSD
  9.0

  07 Nov 2011; Alexis Ballier <aballier@gentoo.org> package.mask:
  mask fuser-bsd on 9.0

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

  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

