# ChangeLog for dev-libs/chmlib
# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/dev-libs/chmlib/ChangeLog,v 1.15 2009/10/12 19:20:04 jer Exp $

  12 Oct 2009; Jeroen Roovers <jer@gentoo.org> chmlib-0.40.ebuild:
  Stable for HPPA (bug #286604).

  04 Oct 2009; Tobias Klausmann <klausman@gentoo.org> chmlib-0.40.ebuild:
  Stable on alpha, bug #286604

  27 Sep 2009; nixnut <nixnut@gentoo.org> chmlib-0.40.ebuild:
  ppc stable #286604

  27 Sep 2009; Brent Baude <ranger@gentoo.org> chmlib-0.40.ebuild:
  Marking chmlib-0.40 ppc64 for bug 286604

  27 Sep 2009; Markus Meier <maekke@gentoo.org> chmlib-0.40.ebuild:
  amd64/x86 stable, bug #286604

*chmlib-0.40 (24 May 2009)

  24 May 2009; Ryan Hill <dirtyepic@gentoo.org> +chmlib-0.40.ebuild,
  +files/chmlib-0.40-headers.patch:
  Version bump.

  11 Apr 2009; Raúl Porcel <armin76@gentoo.org> chmlib-0.39-r1.ebuild:
  Add ~alpha/~ia64 wrt #260777

  09 Jan 2009; Brent Baude <ranger@gentoo.org> chmlib-0.39-r1.ebuild:
  stable ppc64, bug 246209

  06 Jan 2009; Ryan Hill <dirtyepic@gentoo.org> -chmlib-0.39.ebuild:
  Remove old.

  20 Dec 2008; nixnut <nixnut@gentoo.org> chmlib-0.39-r1.ebuild:
  Stable on ppc wrt bug 246209

  16 Dec 2008; Jeroen Roovers <jer@gentoo.org> chmlib-0.39-r1.ebuild:
  Stable for HPPA (bug #246209).

  14 Dec 2008; Markus Meier <maekke@gentoo.org> chmlib-0.39-r1.ebuild:
  amd64/x86 stable, bug #246209

*chmlib-0.39-r1 (02 Nov 2008)

  02 Nov 2008; Mike Frysinger <vapier@gentoo.org>
  +files/chmlib-0.39-headers.patch, +files/chmlib-0.39-stdtypes.patch,
  +chmlib-0.39-r1.ebuild:
  Decrappify this ebuild and package and add ppc64 love for KDE 4.

  13 May 2008; Peter Volkov <pva@gentoo.org> +metadata.xml,
  +chmlib-0.39.ebuild:
  Moved from app-doc/chmlib, bug #220741.

  11 Feb 2007; Ryan Hill <dirtyepic@gentoo.org> metadata.xml,
  -chmlib-0.38.ebuild:
  Remove vulnerable version for bug #163989.

  30 Jan 2007; Steve Dibb <beandog@gentoo.org> chmlib-0.39.ebuild:
  amd64 stable, security bug 163989

  27 Jan 2007; Tobias Scherbaum <dertobi123@gentoo.org> chmlib-0.39.ebuild:
  Stable on ppc wrt bug #163989.

  27 Jan 2007; Raúl Porcel <armin76@gentoo.org> chmlib-0.39.ebuild:
  x86 stable wrt bug 163989

*chmlib-0.39 (26 Jan 2007)

  26 Jan 2007; Ryan Hill <dirtyepic@gentoo.org> -chmlib-0.37.4.ebuild,
  +chmlib-0.39.ebuild:
  Version bump, remove old version.

  25 Nov 2006; Ryan Hill <dirtyepic@gentoo.org> Manifest:
  Fixing digest - Bug #155899

  09 Aug 2006; Tobias Scherbaum <dertobi123@gentoo.org> chmlib-0.38.ebuild:
  ppc stable, bug #143181

  09 Aug 2006; Chris Gianelloni <wolf31o2@gentoo.org> chmlib-0.38.ebuild:
  Stable on amd64 and x86 wrt bug #143181.

*chmlib-0.38 (10 Aug 2006)

  08 Aug 2006; <sjl@gentoo.org> +chmlib-0.38.ebuild:
  version bump for security fix (Bug #143181)
  also marked ~hppa 

  05 Aug 2006; Chris White <chriswhite@gentoo.org> -chmlib-0.31.ebuild,
  -chmlib-0.32.ebuild, -chmlib-0.33.ebuild, -chmlib-0.35.ebuild:
  Security punts for bug #140498.

  23 May 2006; Bryan Østergaard <kloeri@gentoo.org> metadata.xml:
  Remove svyatogor from metadata, bug 131936.

  27 Nov 2005; Joseph Jezak <josejx@gentoo.org> chmlib-0.37.4.ebuild:
  Marked ppc stable for bug #110557.

  26 Nov 2005; Simon Stelling <blubb@gentoo.org> chmlib-0.37.4.ebuild:
  stable on amd64 wrt bug 110557

  25 Nov 2005; Chris White <chriswhite@gentoo.org> chmlib-0.37.4.ebuild:
  x86 stable wrt security bug #110557.

*chmlib-0.37.4 (25 Nov 2005)

  25 Nov 2005; Tavis Ormandy <taviso@gentoo.org> -chmlib-0.35-r1.ebuild,
  +chmlib-0.37.4.ebuild:
  security bump

*chmlib-0.35-r1 (24 Nov 2005)

  24 Nov 2005; Tavis Ormandy <taviso@gentoo.org> +chmlib-0.35-r1.ebuild:
  minor adjustment to move compilation into src_compile, rather then src_install.

  24 Jun 2005; Herbie Hopkins <herbs@gentoo.org> chmlib-0.35.ebuild:
  Fixed multilib-strict issue, bug #96958

  19 Dec 2004; Jason Huebel <jhuebel@gentoo.org> chmlib-0.35.ebuild:
  stable on amd64

*chmlib-0.33 (30 Jun 2004)

  30 Jun 2004; Sergey Kuleshov <svyatogor@gentoo.org> +metadata.xml,
  +chmlib-0.33.ebuild, +chmlib-0.35.ebuild:
  Version bumps for 0.33 and 0.35. Added metadata.xml

  29 Jun 2004; Aron Griffis <agriffis@gentoo.org> chmlib-0.31.ebuild,
  chmlib-0.32.ebuild:
  econf || die, add sed-4 dep

*chmlib-0.32 (09 Jun 2004)

  09 Jun 2004; David Holm <dholm@gentoo.org> chmlib-0.32.ebuild:
  Compile fix on ppc.

  31 May 2004; Sergey Kuleshov <svyatogor@gentoo.org> :
  Version bump. Closing bug #49978. Thanks to Rui Lopes.

  20 Apr 2004; Danny van Dyk <kugelfang@gentoo.org> chmlib-0.31.ebuild:
  marked ~amd64

  07 Oct 2003; David Holm <dholm@gentoo.org> chmlib-0.31.ebuild:
  Made some minor modifications to make this compile on ppc.

*chmlib-0.31 (10 Sep 2003)

  10 Sep 2003; Sergey Kuleshov <svyatogor@gentoo.org> chmlib-0.31.ebuild:
  Initial commit of chmlib. Closing the bug #21342. Thanks to Andrew Kirilenko
  <icedank@gmx.net> for the contributed ebuild.

