# ChangeLog for virtual/perl-Package-Constants
# Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/virtual/perl-Package-Constants/ChangeLog,v 1.23 2011/07/30 11:55:09 tove Exp $

  30 Jul 2011; Torsten Veller <tove@gentoo.org>
  perl-Package-Constants-0.20.0-r1.ebuild:
  Drop ~sparc-fbsd KEYWORD

  28 Jun 2011; Torsten Veller <tove@gentoo.org>
  perl-Package-Constants-0.20.0-r1.ebuild:
  Add perl-5.12.4 virtual

*perl-Package-Constants-0.20.0-r1 (18 Jun 2011)

  18 Jun 2011; Torsten Veller <tove@gentoo.org>
  -perl-Package-Constants-0.20.0.ebuild,
  +perl-Package-Constants-0.20.0-r1.ebuild:
  Add perl-5.14 as provider

*perl-Package-Constants-0.20.0 (20 May 2011)

  20 May 2011; Torsten Veller <tove@gentoo.org>
  -perl-Package-Constants-0.02.ebuild, +perl-Package-Constants-0.20.0.ebuild:
  Add perl-5.14.0 as provider. Change version scheme

  02 May 2011; Fabian Groffen <grobian@gentoo.org>
  perl-Package-Constants-0.02.ebuild:
  Marked ~x64-freebsd

  22 Jan 2011; Torsten Veller <tove@gentoo.org>
  perl-Package-Constants-0.02.ebuild:
  Add perl-5.12.3 as provider

  07 Dec 2010; Matt Turner <mattst88@gentoo.org>
  perl-Package-Constants-0.02.ebuild:
  Added ~mips, for bug 262363.

  07 Sep 2010; Torsten Veller <tove@gentoo.org>
  perl-Package-Constants-0.02.ebuild:
  Add perl-5.12.2 as provider

  14 Jul 2010; Torsten Veller <tove@gentoo.org>
  perl-Package-Constants-0.02.ebuild:
  Add perl-5.12 as provider

  17 Jan 2010; Torsten Veller <tove@gentoo.org>
  -perl-Package-Constants-0.01.ebuild:
  Cleanup

  07 Jan 2010; Torsten Veller <tove@gentoo.org>
  perl-Package-Constants-0.01.ebuild, perl-Package-Constants-0.02.ebuild:
  Set empty HOMEPAGE and LICENSE

  05 Jan 2010; nixnut <nixnut@gentoo.org>
  perl-Package-Constants-0.02.ebuild:
  ppc stable #288026

  15 Dec 2009; Jonathan Callen <abcd@gentoo.org>
  perl-Package-Constants-0.02.ebuild:
  QA: Add prefix keywords

  14 Dec 2009; Raúl Porcel <armin76@gentoo.org>
  perl-Package-Constants-0.02.ebuild:
  alpha/ia64/m68k/s390/sh/sparc stable wrt #288026

  10 Dec 2009; Brent Baude <ranger@gentoo.org>
  perl-Package-Constants-0.02.ebuild:
  Marking perl-Package-Constants-0.02 ppc64 stable for bug 288026

  07 Dec 2009; Markus Meier <maekke@gentoo.org>
  perl-Package-Constants-0.02.ebuild:
  arm stable, bug #288026

  07 Dec 2009; Jeroen Roovers <jer@gentoo.org>
  perl-Package-Constants-0.02.ebuild:
  Stable for HPPA (bug #288026).

  07 Dec 2009; Torsten Veller <tove@gentoo.org> metadata.xml:
  Add perl herd

  04 Dec 2009; Torsten Veller <tove@gentoo.org>
  perl-Package-Constants-0.02.ebuild:
  Stable on amd64 (#288026)

  04 Dec 2009; Christian Faulhammer <fauli@gentoo.org>
  perl-Package-Constants-0.02.ebuild:
  x86 stable, bug 288026

  25 Aug 2009; Torsten Veller <tove@gentoo.org>
  perl-Package-Constants-0.02.ebuild:
  Add support for perl-5.10.1

  19 Aug 2009; Torsten Veller <tove@gentoo.org>
  perl-Package-Constants-0.01.ebuild, perl-Package-Constants-0.02.ebuild:
  Fix DESCRIPTION. Thanks to Kent Fredric

*perl-Package-Constants-0.02 (10 Aug 2009)
*perl-Package-Constants-0.01 (10 Aug 2009)

  10 Aug 2009; Torsten Veller <tove@gentoo.org>
  +perl-Package-Constants-0.01.ebuild, +perl-Package-Constants-0.02.ebuild,
  +metadata.xml:
  Add virtual for Package-Constants

