# ChangeLog for app-text/kbibtex
# Copyright 1999-2014 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/app-text/kbibtex/ChangeLog,v 1.55 2014/10/30 11:26:21 kensington Exp $

  30 Oct 2014; Michael Palimaka <kensington@gentoo.org> -kbibtex-0.4.1.ebuild:
  Remove old.

  30 Oct 2014; Agostino Sarubbo <ago@gentoo.org> kbibtex-0.5.1.ebuild:
  Stable for x86, wrt bug #525166

  29 Oct 2014; Agostino Sarubbo <ago@gentoo.org> kbibtex-0.5.1.ebuild:
  Stable for amd64, wrt bug #525166

*kbibtex-0.5.1 (21 May 2014)

  21 May 2014; Johannes Huber <johu@gentoo.org> +kbibtex-0.5.1.ebuild,
  -files/kbibtex-0.5-build-fix.patch, -kbibtex-0.5.ebuild:
  Version bump, remove old.

*kbibtex-0.5 (13 Mar 2014)

  13 Mar 2014; Johannes Huber <johu@gentoo.org>
  +files/kbibtex-0.5-build-fix.patch, +kbibtex-0.5.ebuild, kbibtex-0.4.1.ebuild:
  Version bump wrt bug #498932.

  17 Mar 2013; Michael Palimaka <kensington@gentoo.org> kbibtex-0.4.1.ebuild:
  Drop poppler subslot since it links only to libpoppler-qt4.

  17 Mar 2013; Andreas K. Huettel <dilfridge@gentoo.org> kbibtex-0.4.1.ebuild:
  EAPI=5 and poppler subslot dependency

  20 Dec 2012; Michael Palimaka <kensington@gentoo.org> -kbibtex-0.4.ebuild:
  Remove old.

  16 Dec 2012; Agostino Sarubbo <ago@gentoo.org> kbibtex-0.4.1.ebuild:
  Stable for x86, wrt bug #445798

  03 Dec 2012; <ago@gentoo.org> kbibtex-0.4.1.ebuild:
  Stable for amd64, wrt bug #445798

*kbibtex-0.4.1 (31 Oct 2012)

  31 Oct 2012; Michael Palimaka <kensington@gentoo.org> +kbibtex-0.4.1.ebuild:
  Version bump, wrt bug #440122.

  18 Apr 2012; Johannes Huber <johu@gentoo.org> -kbibtex-0.3.ebuild:
  Remove old.

  18 Apr 2012; Markus Meier <maekke@gentoo.org> kbibtex-0.4.ebuild:
  x86 stable, bug #409403

  04 Apr 2012; Agostino Sarubbo <ago@gentoo.org> kbibtex-0.4.ebuild:
  Stable for amd64, wrt bug #409403

*kbibtex-0.4 (08 Dec 2011)

  08 Dec 2011; Johannes Huber <johu@gentoo.org> +kbibtex-0.4.ebuild:
  Version bump

  09 Sep 2011; Andreas K. Huettel <dilfridge@gentoo.org> kbibtex-0.3.ebuild:
  Add missing poppler dependency, bug 382203

*kbibtex-0.3 (02 Jun 2011)

  02 Jun 2011; Tomáš Chvátal <scarabeus@gentoo.org>
  -kbibtex-0.3_beta1.ebuild, +kbibtex-0.3.ebuild:
  Update to 0.3. Drop beta.

*kbibtex-0.3_beta1 (05 Mar 2011)

  05 Mar 2011; Andreas K. Huettel <dilfridge@gentoo.org>
  +kbibtex-0.3_beta1.ebuild, -kbibtex-0.3.0_pre20110102.ebuild:
  Bumped to beta version, no need for snapshots anymore

  29 Jan 2011; Andreas K. Huettel <dilfridge@gentoo.org>
  -kbibtex-0.3.0_pre20100222.ebuild, kbibtex-0.3.0_pre20110102.ebuild:
  Remove old; bump EAPI

*kbibtex-0.3.0_pre20110102 (02 Jan 2011)

  02 Jan 2011; Andreas K. Huettel <dilfridge@gentoo.org>
  +kbibtex-0.3.0_pre20110102.ebuild:
  Added new snapshot which fixes bug 345801

*kbibtex-0.3.0_pre20100222 (22 Feb 2010)

  22 Feb 2010; Samuli Suominen <ssuominen@gentoo.org>
  +kbibtex-0.3.0_pre20100222.ebuild:
  Revision bump.

*kbibtex-0.3.0_pre20100211 (11 Feb 2010)

  11 Feb 2010; Samuli Suominen <ssuominen@gentoo.org>
  +kbibtex-0.3.0_pre20100211.ebuild:
  Revision bump.

  10 Feb 2010; Samuli Suominen <ssuominen@gentoo.org>
  kbibtex-0.3.0_pre20100113.ebuild:
  Missing dev-tex/bibtex2html rdepend wrt #304433, thanks to Richard Foltyn
  for reporting.

*kbibtex-0.3.0_pre20100113 (13 Jan 2010)

  13 Jan 2010; Samuli Suominen <ssuominen@gentoo.org>
  +kbibtex-0.3.0_pre20100113.ebuild:
  Revision bump.

*kbibtex-0.3.0_pre20100109 (05 Jan 2010)

  05 Jan 2010; Samuli Suominen <ssuominen@gentoo.org>
  +kbibtex-0.3.0_pre20100109.ebuild:
  Revision bump.

*kbibtex-0.3.0_pre20091225 (25 Dec 2009)

  25 Dec 2009; Samuli Suominen <ssuominen@gentoo.org>
  +kbibtex-0.3.0_pre20091225.ebuild:
  Initial commit wrt #294919, thanks to David Raison for reporting.
