# ChangeLog for net-misc/asterisk-rate_engine
# Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/net-misc/asterisk-rate_engine/ChangeLog,v 1.8 2013/11/02 17:56:00 robbat2 Exp $

  02 Nov 2013; Robin H. Johnson <robbat2@gentoo.org>
  asterisk-rate_engine-0.5.4.ebuild:
  Keyword ~amd64 for my own use.

  27 Oct 2013; Pacho Ramos <pacho@gentoo.org> metadata.xml:
  Voip herd is removed: http://article.gmane.org/gmane.linux.gentoo.devel/88434

  01 May 2011; Mark Loeser <halcy0n@gentoo.org>
  asterisk-rate_engine-0.5.4.ebuild:
  Dropping ppc since there is no asterisk keyworded anymore

  16 Aug 2008; Torsten Veller <tove@gentoo.org> metadata.xml:
  Remove stkn from metadata.xml (#27693)

  23 Nov 2006; Francesco Riosa <vivo@gentoo.org>
  asterisk-rate_engine-0.5.4.ebuild:
  dev-db/mysql => virtual/mysql

  27 Aug 2005; <stkn@gentoo.org> asterisk-rate_engine-0.5.4.ebuild:
  Added blocker for >=1.1.0 (does not work with 1.2.0 at the moment)

  10 May 2005; David Holm <dholm@gentoo.org>
  asterisk-rate_engine-0.5.4.ebuild:
  Added to ~ppc.

*asterisk-rate_engine-0.5.4 (20 Feb 2005)

  20 Feb 2005; Stefan Knoblich <stkn@gentoo.org> +metadata.xml,
  +files/rate-engine-0.5.4-astcfg.diff, +asterisk-rate_engine-0.5.4.ebuild:
  Initial import.
