# ChangeLog for media-libs/paragui
# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/media-libs/paragui/ChangeLog,v 1.33 2009/10/10 15:08:40 armin76 Exp $

  10 Oct 2009; Raúl Porcel <armin76@gentoo.org> paragui-1.1.8.ebuild:
  sparc stable wrt #275747

  06 Aug 2009; Michael Sterrett <mr_bones_@gentoo.org> paragui-1.1.8.ebuild:
  EAPI=2

  02 Feb 2009; Alfredo Tupone <tupone@gentoo.org>
  +files/paragui-1.0.4-as-needed.patch, paragui-1.0.4.ebuild:
  Fix --as-needed bug #247303 by flameeyes@gentoo.org

  29 Jun 2008; Peter Alfredsen <loki_val@gentoo.org>
  +files/paragui-1.1.8-gcc43.patch, paragui-1.1.8.ebuild:
  Fix for gcc-4.3, bug #229961. Thanks to Petr Behan <petr.behan@seznam.cz>.

  15 Jan 2008; Tristan Heaven <nyhm@gentoo.org>
  files/paragui-1.1.8-asneeded.patch, paragui-1.1.8.ebuild:
  Add pkgconfig dep, bug #205757; use latest automake

  11 Nov 2007; Tupone Alfredo <tupone@gentoo.org> paragui-1.0.4.ebuild,
  paragui-1.1.7.ebuild, paragui-1.1.8.ebuild:
  Download url changed

  25 Feb 2007; Samuli Suominen <drac@gentoo.org> paragui-1.1.8.ebuild:
  Move eautomake to src_unpack. Noted by Mr_Bones.

  25 Feb 2007; Samuli Suominen <drac@gentoo.org>
  +files/paragui-1.1.8-asneeded.patch, paragui-1.1.8.ebuild:
  Add --as-needed patch for test/keyboard compile.

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

  06 Sep 2006; Chris Gianelloni <wolf31o2@gentoo.org> metadata.xml,
  paragui-1.1.8.ebuild:
  Stealing this for games, since we are the only packages that depend on it.
  Marking stable on ppc/x86 for bug #140707 and bug #133538.

  27 Mar 2006; Chris White <chriswhite@gentoo.org> paragui-1.0.4.ebuild,
  paragui-1.1.7.ebuild:
  Backported the 1.1.8 header patch to all versions. Closes bug #104735.
  Thanks to Shyam Mani for the report.

  12 Mar 2006; Michael Sterrett <mr_bones_@gentoo.org> paragui-1.1.8.ebuild:
  fix quoting

  07 Mar 2006; Diego Pettenò <flameeyes@gentoo.org> +metadata.xml:
  Add maintainer-needed metadata.

  03 Sep 2005; Chris White <chriswhite@gentoo.org>
  +files/paragui-1.1.8-header.patch, paragui-1.1.8.ebuild:
  Added patch to fix undefined size_t errors.

  17 Mar 2005; Jan Brinkmann <luckyduck@gentoo.org> paragui-1.1.8.ebuild:
  added ~amd64 to KEYWORDS, fixes #85561

*paragui-1.1.8 (21 Nov 2004)

  21 Nov 2004; Mike Frysinger <vapier@gentoo.org> +paragui-1.1.8.ebuild:
  Version bump #71783 by Bryan Duff.

  24 Sep 2004; Michael Sterrett <mr_bones_@gentoo.org> -paragui-1.0.3.ebuild:
  remove older ebuild

  31 Aug 2004; Michael Sterrett <mr_bones_@gentoo.org> paragui-1.1.7.ebuild:
  explict deps; docs tidy

  23 Jul 2004; Michael Sterrett <mr_bones_@gentoo.org> paragui-1.1.7.ebuild:
  needs >=dev-libs/libsigc++-1.2.5 (bug #58077)

*paragui-1.1.7 (13 Jul 2004)

  13 Jul 2004; Mike Frysinger <vapier@gentoo.org> paragui-1.0.4.ebuild,
  +paragui-1.1.7.ebuild:
  Version bump #56117 by Kostko.

  26 Dec 2003; Jason Wever <weeve@gentoo.org> paragui-1.0.3.ebuild:
  Changed sparc keyword to ~sparc as the dev-games/physfs had absolutely no
  sparc keywords.

*paragui-1.0.4 (02 Sep 2003)

  02 Sep 2003; Mike Frysinger <vapier@gentoo.org> :
  Version bump + remove internal physicfs since it overwrites real physicfs.

*paragui-1.0.3 (14 Jan 2003)

  02 Sep 2003; Mike Frysinger <vapier@gentoo.org> :
  Remove internal physicfs since it overwrites real physicfs.

  14 Jan 2003; Daniel Robbins <drobbins@gentoo.org>: closes bug #13909; enabled
  internal physicFS since external lib is still masked, and this version
  apparently fixes some build issues. Thanks to Guillaume Schmid for this bug
  report.

  06 Dec 2002; Rodney Rees <manson@gentoo.org> : changed sparc ~sparc keywords
 
*paragui-1.0.2 (9 May 2002) 

  9 Jul 2002; Ryan Phillips <rphillips@gentoo.org> paragui-1.0.2.ebuild :

  New version

*paragui-1.0.1-r1 (2 May 2002) 

  19 May 2002; Ryan Phillips <rphillips@gentoo.org> paragui-1.0.1-r1.ebuild :

  Added expat dependency

  02 May 2002; Spider <spider@gentoo.org> paragui-1.0.1-r1.ebuild
  Fix a missing S= 

*paragui-1.0.1 (28 Apr 2002)

  28 Apr 2002; Ryan Phillips <rphillips@gentoo.org> ChangeLog :
  
  Added initial ChangeLog which should be updated whenever the package is
  updated in any way. This changelog is targetted to users. This means that the
  comments should well explained and written in clean English. The details about
  writing correct changelogs are explained in the skel.ChangeLog file which you
  can find in the root directory of the portage repository.

