# ChangeLog for dev-libs/tre
# Copyright 1999-2012 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/dev-libs/tre/ChangeLog,v 1.58 2012/05/04 18:35:55 jdhore Exp $

  04 May 2012; Jeff Horelick <jdhore@gentoo.org> tre-0.8.0.ebuild:
  dev-util/pkgconfig -> virtual/pkgconfig

  13 Jun 2011; Justin Lecher <jlec@gentoo.org> +files/0.8.0-pkgcfg.patch,
  tre-0.8.0.ebuild:
  Do not inclu LDFLAGS in pkgconfig file, #369945

  13 Jun 2011; Justin Lecher <jlec@gentoo.org> tre-0.8.0.ebuild:
  Fix compilation on CHOST=mingw32, #369947; thanks Nathan Phillip Brink for
  the patch

  27 Mar 2011; Jeremy Olexa <darkside@gentoo.org> -tre-0.7.5.ebuild:
  remove old ebuilds

  21 Mar 2011; Kacper Kowalik <xarthisius@gentoo.org> tre-0.8.0.ebuild:
  ppc64 stable wrt #350839

  05 Mar 2011; Jeremy Olexa <darkside@gentoo.org> tre-0.8.0.ebuild:
  Use EAPI=3, bug 357435

  04 Mar 2011; Justin Lecher <jlec@gentoo.org> tre-0.8.0.ebuild:
  Remove collision with app-misc/glimpse, agrep -> agrep-tre renamed

  04 Mar 2011; Justin Lecher <jlec@gentoo.org> tre-0.8.0.ebuild:
  Removed unneccessary python_copy_sources

  04 Mar 2011; Justin Lecher <jlec@gentoo.org> +files/0.8.0-python.patch,
  tre-0.8.0.ebuild:
  Added python support, 357397, thanks Martin for the Patch

  29 Jan 2011; Raúl Porcel <armin76@gentoo.org> tre-0.8.0.ebuild:
  alpha/ia64/sparc stable wrt #350839

  24 Jan 2011; Jeroen Roovers <jer@gentoo.org> tre-0.8.0.ebuild:
  Stable for HPPA (bug #350839).

  15 Jan 2011; Markus Meier <maekke@gentoo.org> tre-0.8.0.ebuild:
  x86 stable, bug #350839

  07 Jan 2011; Markos Chandras <hwoarang@gentoo.org> tre-0.8.0.ebuild:
  Stable on amd64 wrt bug #350839

  07 Jan 2011; Brent Baude <ranger@gentoo.org> tre-0.8.0.ebuild:
  Marking tre-0.8.0 ppc for bug 350839

  07 Jan 2011; Justin Lecher <jlec@gentoo.org> tre-0.8.0.ebuild:
  Make sure correct locale is present during test, 350839

  06 Jan 2011; Justin Lecher <jlec@gentoo.org> tre-0.7.5.ebuild,
  tre-0.8.0.ebuild:
  Some Clean up

  14 Jan 2010; Christian Faulhammer <fauli@gentoo.org> tre-0.8.0.ebuild:
  Transfer Prefix keywords

  17 Oct 2009; Markus Meier <maekke@gentoo.org> metadata.xml:
  remove static-libs description as it is global now

*tre-0.8.0 (16 Oct 2009)

  16 Oct 2009; Samuli Suominen <ssuominen@gentoo.org> +tre-0.8.0.ebuild:
  Version bump wrt #289305, thanks to Daniel Black for reporting.

  01 Aug 2009; Jeremy Olexa <darkside@gentoo.org> -tre-0.7.2.ebuild,
  -tre-0.7.4.ebuild:
  remove old

  04 Feb 2008; Samuli Suominen <drac@gentoo.org> tre-0.7.5.ebuild:
  amd64 stable wrt #208142

  31 Jan 2008; nixnut <nixnut@gentoo.org> tre-0.7.5.ebuild:
  Stable on ppc wrt bug 208142

  31 Jan 2008; Jeroen Roovers <jer@gentoo.org> tre-0.7.5.ebuild:
  Stable for HPPA (bug #208142).

  30 Jan 2008; Brent Baude <ranger@gentoo.org> tre-0.7.5.ebuild:
  Marking tre-0.7.5 ppc64 for bug 208142

  30 Jan 2008; Raúl Porcel <armin76@gentoo.org> tre-0.7.5.ebuild:
  alpha/sparc stable wrt #208142, add ~ia64

  30 Jan 2008; Dawid Węgliński <cla@gentoo.org> tre-0.7.5.ebuild:
  Stable on x86 (bug #208142)

  12 Dec 2007; <pva@gentoo.org> tre-0.7.2.ebuild, tre-0.7.4.ebuild,
  tre-0.7.5.ebuild:
  Revert back --enable-static to make crm114 happy, again bug #165378, again
  thank Tomas. Fixed quotation.

*tre-0.7.5 (10 Dec 2007)

  10 Dec 2007; <pva@gentoo.org> -tre-0.7.0.ebuild, -tre-0.7.3.ebuild,
  +tre-0.7.5.ebuild:
  Version bump, bug #190270. Thank Tomas Charvat <eaglecz AT tiscali.cz> for
  report. Fixes USE=static, bug #165378.

  25 Aug 2007; Steve Dibb <beandog@gentoo.org> tre-0.7.4.ebuild:
  amd64 stable

  15 Aug 2007; Jeroen Roovers <jer@gentoo.org> tre-0.7.4.ebuild:
  Stable for HPPA (bug #188698).

  14 Aug 2007; Markus Rothe <corsair@gentoo.org> tre-0.7.4.ebuild:
  Stable on ppc64; bug #188698

  14 Aug 2007; Raúl Porcel <armin76@gentoo.org> tre-0.7.4.ebuild:
  alpha stable wrt security #188698

  14 Aug 2007; Gustavo Zacarias <gustavoz@gentoo.org> tre-0.7.4.ebuild:
  Stable on sparc

  13 Jun 2007; Markus Rothe <corsair@gentoo.org> tre-0.7.4.ebuild:
  Added ~ppc64; bug #180969

  12 Jun 2007; Gustavo Zacarias <gustavoz@gentoo.org> tre-0.7.4.ebuild:
  Keyworded ~sparc

  12 Jun 2007; Raúl Porcel <armin76@gentoo.org> tre-0.7.4.ebuild:
  Add ~alpha wrt #180969

  12 Jun 2007; Jeroen Roovers <jer@gentoo.org> tre-0.7.4.ebuild:
  Marked ~hppa (bug #180969).

  06 May 2007; Tobias Scherbaum <dertobi123@gentoo.org> tre-0.7.4.ebuild:
  ppc stable

  12 Mar 2007; Raúl Porcel <armin76@gentoo.org> tre-0.7.4.ebuild:
  x86 stable

  22 Feb 2007; Piotr Jaroszyński <peper@gentoo.org> ChangeLog:
  Transition to Manifest2.

*tre-0.7.4 (18 Sep 2006)

  18 Sep 2006; Steev Klimaszewski <steev@gentoo.org> +tre-0.7.4.ebuild:
  Version bump, and add ~x86-fbsd keyword.  Kloeri said I could.

  16 Sep 2006; Tobias Scherbaum <dertobi123@gentoo.org> tre-0.7.2.ebuild:
  ppc stable

*tre-0.7.3 (24 Apr 2006)

  24 Apr 2006; Tom Martin <slarti@gentoo.org> +tre-0.7.3.ebuild:
  Version bump to 0.7.3. NB: the licence has changed from GPL-2 to LGPL-2.1.

  21 May 2005; Tom Martin <slarti@gentoo.org> tre-0.7.2.ebuild:
  Change the ewarn slightly.

  21 Apr 2005; Tom Martin <slarti@gentoo.org> metadata.xml,
  tre-0.7.2.ebuild:
  0.7.2 stable on amd64; also taking over maintainership seeing as dragonheart
  didn't want it and I occasionally need to do things to it for crm114.

  12 Jan 2005; Tom Martin <slarti@gentoo.org> tre-0.7.0.ebuild:
  Stabilising on amd64.

*tre-0.7.2 (12 Jan 2005)

  12 Jan 2005; Daniel Black <dragonheart@gentoo.org> +tre-0.7.2.ebuild:
  Version bump as per bug #76796 by John Hampton <pacopablo@pacopablo.com>.

  21 Nov 2004; Daniel Black <dragonheart@gentoo.org> -tre-0.6.6.ebuild,
  -tre-0.6.8.ebuild, tre-0.7.0.ebuild:
  confict with app-text/agrep noted. Added x86 and ppc keywords. Bug #71795
  refers. Thanks to ukenshiro@ngi.it for the bug report

*tre-0.7.0 (28 Oct 2004)

  28 Oct 2004; Daniel Black <dragonheart@gentoo.org> +tre-0.7.0.ebuild:
  version bump as per bug #66523. Bug report by Antonio Dolcetta
  <zagarna@yahoo.com>

  03 Sep 2004; Tom Martin <slarti@gentoo.org> tre-0.6.8.ebuild:
  Marked ~amd64, resolves #58522. Thanks to Gabriel Ebner <ge@gabrielebner.at>
  for reporting.

  18 Jul 2004; Daniel Black <dragonheart@gentoo.org> tre-0.6.8.ebuild:
  x86 stable

  01 Jul 2004; Jeremy Huddleston <eradicator@gentoo.org> tre-0.6.6.ebuild,
  tre-0.6.8.ebuild:
  virtual/glibc -> virtual/libc

  12 Jun 2004; Daniel Black <dragonheart@gentoo.org> tre-0.6.6.ebuild,
  tre-0.6.8.ebuild:
  Added RDEPEND=!app-misc/glimpse due to both providing /usr/bin/agrep. Thanks
  to John Hampton in bug #53250

*tre-0.6.8 (08 Jun 2004)

  08 Jun 2004; Daniel Black <dragonheart@gentoo.org> +tre-0.6.8.ebuild:
  version bump. Note this ebuild and app-misc/glimpse both provide
  /usr/bin/agrep. Similar functionality I think so I haven't made them exclude
  each other. Thanks to John Hampton <pacopablo@pacopablo.com> in bug #53250

  06 Jun 2004; Daniel Black <dragonheart@gentoo.org> tre-0.6.6.ebuild:
  x86 added. QA cvs header fix

  07 May 2004; David Holm <dholm@gentoo.org> tre-0.6.6.ebuild:
  Added to ~ppc.

*tre-0.6.6 (06 May 2004)

  06 May 2004; Daniel Black <dragonheart@gentoo.org> +metadata.xml,
  +tre-0.6.6.ebuild:
  Inital import thanks to John Hampton <pacopablo@pacopablo.com> #49554

