# ChangeLog for app-office/ledger
# Copyright 1999-2015 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/app-office/ledger/ChangeLog,v 1.37 2015/06/07 08:09:57 jlec Exp $

  07 Jun 2015; Justin Lecher <jlec@gentoo.org> ledger-2.6.3-r1.ebuild,
  ledger-3.1.ebuild:
  Add SLOT operators

  07 Jun 2015; Justin Lecher <jlec@gentoo.org> metadata.xml:
  Add github to remote-id in metadata.xml

  19 Jan 2015; Jan Matejka <yac@gentoo.org> metadata.xml:
  Taking ledger as a maintainer

  19 Jan 2015; Tim Harder <radhermit@gentoo.org> metadata.xml:
  Drop myself from metadata.

  19 Jan 2015; Jan Matejka <yac@gentoo.org> ledger-3.1.ebuild:
  Fix things  1. download tar.gz instead of zip (which was missing unzip in
  DEPEND)  2. Depend on boost properly to ensure rebuilds on boost slot changes
  3. put utfcpp only in DEPEND

  19 Jan 2015; Jan Matejka <yac@gentoo.org> ledger-3.1.ebuild:
  Add missing dependency on dev-libs/utfcpp

  13 Jan 2015; Jan Matejka <yac@gentoo.org> ledger-3.1.ebuild:
  fix distfile name

*ledger-3.1 (13 Jan 2015)

  13 Jan 2015; Jan Matejka <yac@gentoo.org> +ledger-3.1.ebuild:
  Add ledger 3.1

  06 Jun 2012; Jeremy Olexa <darkside@gentoo.org> ledger-2.6.3-r1.ebuild:
  Fix out of Prefix errors, bug 419654

  02 Nov 2011; Tim Harder <radhermit@gentoo.org> -ledger-2.6.3.ebuild:
  Remove old.

  02 Nov 2011; Pawel Hajdan jr <phajdan.jr@gentoo.org> ledger-2.6.3-r1.ebuild:
  x86 stable wrt bug #389061

  01 Nov 2011; Tony Vroon <chainsaw@gentoo.org> ledger-2.6.3-r1.ebuild:
  Marked stable on AMD64 based on arch testing by Agostino "ago" Sarubbo &
  Elijah "Armageddon" El Lazkani in bug #389061.

  31 Oct 2011; Tim Harder <radhermit@gentoo.org> ledger-2.6.3-r1.ebuild:
  Use github mirror.

  05 Sep 2011; Tim Harder <radhermit@gentoo.org> ledger-2.6.3-r1.ebuild:
  Fix emacs files install location (bug #381593 by Tom Prince).

*ledger-2.6.3-r1 (07 Jun 2011)

  07 Jun 2011; Tim Harder <radhermit@gentoo.org> +ledger-2.6.3-r1.ebuild:
  Revision bump. Add vim-syntax USE flag (bug #369473 by Marek Szuba), update
  to EAPI 4, update HOMEPAGE, and add static-libs USE flag.

  11 Mar 2011; Tim Harder <radhermit@gentoo.org>
  -files/ledger-2.6.1-glibc-2.10.patch, -ledger-2.6.2.ebuild:
  Remove old.

  29 Sep 2010; Tim Harder <radhermit@gentoo.org> metadata.xml:
  Add myself as maintainer.

  14 Jul 2010; Markos Chandras <hwoarang@gentoo.org> ledger-2.6.3.ebuild:
  Stable on amd64 wrt bug #323265

  14 Jul 2010; Christian Faulhammer <fauli@gentoo.org> ledger-2.6.3.ebuild:
  stable x86, bug 323265

  14 Jul 2010; Christian Faulhammer <fauli@gentoo.org> ledger-2.6.3.ebuild:
  fix automagic detection of Emacs flavours for disabled emacs USE flag

*ledger-2.6.3 (08 Jul 2010)

  08 Jul 2010; Víctor Ostorga <vostorga@gentoo.org> +ledger-2.6.3.ebuild:
  Version bump to 2.6.3 , patch thanks to Tim Harder <radhermit@gmail.com>
  bug #327133

  20 May 2010; Jeremy Olexa <darkside@gentoo.org> -ledger-2.5-r2.ebuild,
  -ledger-2.6.1.ebuild:
  Remove old versions, bug 320649

  20 Feb 2010; Jonathan Callen <abcd@gentoo.org> ledger-2.6.2.ebuild:
  Transfer prefix keywords, bump EAPI

  15 Jan 2010; Ulrich Mueller <ulm@gentoo.org> ledger-2.5-r2.ebuild,
  ledger-2.6.1.ebuild, ledger-2.6.2.ebuild:
  LICENSE is identical with BSD, bug 301123.

*ledger-2.6.2 (29 Sep 2009)

  29 Sep 2009; Víctor Ostorga <vostorga@gentoo.org> +ledger-2.6.2.ebuild:
  Version bump to 2.6.2 patch thanks to Tim Harder <radhermit@gmail.com> bug
  286831

  06 Sep 2009; Christian Ruppert <idl0r@gentoo.org>
  -files/50ledger-mode-gentoo.el, ledger-2.5-r2.ebuild, ledger-2.6.1.ebuild:
  Removed unused 50ledger-mode-gentoo.el. Fix repoman complains.

  08 Aug 2009; Samuli Suominen <ssuominen@gentoo.org> ledger-2.6.1.ebuild,
  +files/ledger-2.6.1-glibc-2.10.patch:
  Fix building with GLIBC 2.10+ wrt #275905, thanks to Arttu Valo for patch.

  05 Jun 2009; Peter Alfredsen <loki_val@gentoo.org> metadata.xml:
  Retiring, bug 220219.

  17 May 2009; Peter Alfredsen <loki_val@gentoo.org> ledger-2.5-r2.ebuild,
  ledger-2.6.1.ebuild:
  Update HOMEPAGE, bug 270152. Thanks to Justin Lecher (jlec)
  <jlec@j-schmitz.net>.

*ledger-2.6.1 (19 Dec 2008)

  19 Dec 2008; Peter Alfredsen <loki_val@gentoo.org> -ledger-2.5-r1.ebuild,
  +ledger-2.6.1.ebuild:
  Add ledger-2.6.1 w.r.t. bug 183938, thus fixing also bug 239608.

*ledger-2.5-r2 (14 Oct 2007)

  14 Oct 2007; Christian Faulhammer <opfer@gentoo.org>
  +files/50ledger-gentoo.el, +ledger-2.5-r2.ebuild:
  fixed Emacs support, see bug 193463

  16 Sep 2007; Christian Faulhammer <opfer@gentoo.org> ledger-2.5-r1.ebuild:
  adding elisp-site-regen, so Emacs start-up is updated, see bug 158073

  15 May 2007; Thilo Bangert <bangert@gentoo.org> metadata.xml:
  add <herd>no-herd</herd>

  14 Feb 2007; Christian Faulhammer <opfer@gentoo.org> ledger-2.5-r1.ebuild:
  change from elisp.eclass to elisp-common.eclass, as reported in bug 158073

  22 Nov 2006; Piotr Jaroszyński <peper@gentoo.org> ledger-2.5-r1.ebuild:
  Add ~amd64 wrt bug #155839.

*ledger-2.5-r1 (20 Nov 2006)

  20 Nov 2006; <wrobel@gentoo.org> -ledger-2.5.ebuild,
  +ledger-2.5-r1.ebuild:
  Fixed installation with use flag emacs activated. see #155682.

  18 Nov 2006; <wrobel@gentoo.org> +files/50ledger-mode-gentoo.el,
  +metadata.xml, +ledger-2.5.ebuild:
  app-office/ledger-2.5 now in the tree. License added, local use flags
  described and ebuild fixed.

*ledger-2.5 (18 Nov 2006)

  18 Nov 2006; <wrobel@gentoo.org> +files/50ledger-mode-gentoo.el,
  +metadata.xml, +ledger-2.5.ebuild:
  Added app-office/ledger-2.5 to the tree.
