# ChangeLog for net-dns/c-ares
# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/net-dns/c-ares/ChangeLog,v 1.55 2010/01/07 15:27:09 fauli Exp $

  07 Jan 2010; Christian Faulhammer <fauli@gentoo.org> c-ares-1.7.0.ebuild:
  Transfer Prefix keywords

*c-ares-1.7.0 (12 Dec 2009)

  12 Dec 2009; Daniel Black <dragonheart@gentoo.org> +c-ares-1.7.0.ebuild:
  version bump

  04 Feb 2009; Raúl Porcel <armin76@gentoo.org> c-ares-1.5.3.ebuild:
  arm/ia64/s390/sh/sparc stable wrt #255408

  27 Jan 2009; Daniel Black <dragonheart@gentoo.org> -c-ares-1.5.1.ebuild,
  -c-ares-1.5.2.ebuild:
  cleanout

  26 Jan 2009; Jeroen Roovers <jer@gentoo.org> c-ares-1.5.3.ebuild:
  Stable for HPPA (bug #255408 ).

  25 Jan 2009; Tobias Klausmann <klausman@gentoo.org> c-ares-1.5.3.ebuild:
  Stable on alpha, bug #255408

  24 Jan 2009; Tobias Scherbaum <dertobi123@gentoo.org> c-ares-1.5.3.ebuild:
  ppc stable, bug #255408

  23 Jan 2009; Markus Meier <maekke@gentoo.org> c-ares-1.5.3.ebuild:
  amd64/x86 stable, bug #255408

  23 Jan 2009; Brent Baude <ranger@gentoo.org> c-ares-1.5.3.ebuild:
  Marking c-ares-1.5.3 ppc64 for bug 255408

*c-ares-1.6.0 (18 Jan 2009)

  18 Jan 2009; Peter Volkov <pva@gentoo.org> +c-ares-1.6.0.ebuild:
  Version bump.

*c-ares-1.5.3 (18 Sep 2008)

  18 Sep 2008; Peter Volkov <pva@gentoo.org> +c-ares-1.5.3.ebuild:
  Version bump.

*c-ares-1.5.2 (01 Jun 2008)

  01 Jun 2008; Daniel Black <dragonheart@gentoo.org> +c-ares-1.5.2.ebuild:
  version bump

*c-ares-1.5.1 (01 Apr 2008)

  01 Apr 2008; Daniel Black <dragonheart@gentoo.org> +c-ares-1.5.1.ebuild:
  version bump

  06 Mar 2008; Chris Gianelloni <wolf31o2@gentoo.org> c-ares-1.4.0.ebuild:
  Adding back ~x86-fbsd for games-action/bzflag. Someone dropped the KEYWORD
  without a ChangeLog, so I am assuming that it was by accident.

  25 Jan 2008; Fabian Groffen <grobian@gentoo.org> c-ares-1.4.0.ebuild:
  Dropped ppc-macos keyword, see you in prefix

  06 Aug 2007; Daniel Black <dragonheart@gentoo.org> -c-ares-1.3.0.ebuild,
  -c-ares-1.3.1.ebuild, -c-ares-1.3.2.ebuild:
  cleanout

  11 Jun 2007; Gustavo Zacarias <gustavoz@gentoo.org> c-ares-1.4.0.ebuild:
  Stable on sparc wrt security #181373

  10 Jun 2007; Joshua Kinard <kumba@gentoo.org> c-ares-1.4.0.ebuild:
  Stable on mips, per #140068.

  09 Jun 2007; Tobias Scherbaum <dertobi123@gentoo.org> c-ares-1.4.0.ebuild:
  ppc stable, bug #181373

  09 Jun 2007; Jeroen Roovers <jer@gentoo.org> c-ares-1.4.0.ebuild:
  Stable for HPPA (bug #140068).

  09 Jun 2007; Raúl Porcel <armin76@gentoo.org> c-ares-1.4.0.ebuild:
  alpha/ia64/x86 stable wrt security #181373

  09 Jun 2007; Christoph Mende <angelos@gentoo.org> c-ares-1.4.0.ebuild:
  Stable on amd64 wrt security bug 181373

  09 Jun 2007; Markus Rothe <corsair@gentoo.org> c-ares-1.4.0.ebuild:
  Stable on ppc64; bug #181373

*c-ares-1.4.0 (09 Jun 2007)

  09 Jun 2007; Daniel Black <dragonheart@gentoo.org> -c-ares-1.2.0.ebuild,
  -c-ares-1.2.1-r1.ebuild, +c-ares-1.4.0.ebuild:
  version bump and cleanout

  18 Mar 2007; Steve Dibb <beandog@gentoo.org> c-ares-1.3.1.ebuild:
  amd64 stable, bug 140068

  11 Mar 2007; Raúl Porcel <armin76@gentoo.org> c-ares-1.3.1.ebuild:
  x86 stable wrt bug 140068

*c-ares-1.3.2 (06 Nov 2006)

  06 Nov 2006; Daniel Black <dragonheart@gentoo.org> +c-ares-1.3.2.ebuild:
  version bump

  30 Oct 2006; Javier Villavicencio <the_paya@gentoo.org>
  c-ares-1.3.1.ebuild:
  Keyworded ~x86-fbsd.

  05 Aug 2006; Tobias Scherbaum <dertobi123@gentoo.org> c-ares-1.3.1.ebuild:
  ppc stable, bug #140068

  20 Jul 2006; Gustavo Zacarias <gustavoz@gentoo.org> c-ares-1.3.1.ebuild:
  Stable on sparc wrt #140068

  20 Jul 2006; Markus Rothe <corsair@gentoo.org> c-ares-1.3.1.ebuild:
  Stable on ppc64; bug #140068

  18 Jul 2006; Jeroen Roovers <jer@gentoo.org> c-ares-1.3.1.ebuild:
  Stable on HPPA (bug #140068).

  12 Jul 2006; Daniel Black <dragonheart@gentoo.org> c-ares-1.2.0.ebuild,
  c-ares-1.2.1-r1.ebuild, c-ares-1.3.0.ebuild, +c-ares-1.3.1.ebuild:
  version bump. Fix license to MIT.

*c-ares-1.3.1 (12 Jul 2006)

  12 Jul 2006; Daniel Black <dragonheart@gentoo.org> c-ares-1.2.0.ebuild,
  c-ares-1.2.1-r1.ebuild, c-ares-1.3.0.ebuild, +c-ares-1.3.1.ebuild:
  version bump

  07 Feb 2006; Simon Stelling <blubb@gentoo.org> c-ares-1.3.0.ebuild:
  stable on amd64

  06 Feb 2006; Aron Griffis <agriffis@gentoo.org> c-ares-1.3.0.ebuild:
  Mark 1.3.0 stable on alpha

  30 Dec 2005; Markus Rothe <corsair@gentoo.org> c-ares-1.3.0.ebuild:
  Stable on ppc64

  29 Dec 2005; Gustavo Zacarias <gustavoz@gentoo.org> c-ares-1.3.0.ebuild:
  Stable on sparc wrt #117036

  29 Dec 2005; Mark Loeser <halcy0n@gentoo.org> c-ares-1.3.0.ebuild:
  Stable on x86; bug #117036

  28 Dec 2005; Daniel Black <dragonheart@gentoo.org> -c-ares-1.2.1.ebuild,
  c-ares-1.3.0.ebuild:
  added dropped ~alpha and ~ppc64 keywords

  22 Oct 2005; Fabian Groffen <grobian@gentoo.org> c-ares-1.3.0.ebuild:
  Marked ~ppc-macos (bug #109097)

  21 Oct 2005; Bryan Østergaard <kloeri@gentoo.org> c-ares-1.3.0.ebuild:
  ~ia64 keyword.

  20 Oct 2005; Aaron Walker <ka0ttic@gentoo.org> c-ares-1.2.1-r1.ebuild,
  c-ares-1.3.0.ebuild:
  Added ~mips.

  20 Oct 2005; Luis Medinas <metalgod@gentoo.org> c-ares-1.2.1-r1.ebuild:
  Marked Stable on amd64. Bug #109097.

  19 Oct 2005; Jose Luis Rivero <yoswink@gentoo.org> c-ares-1.2.0.ebuild:
  Stable on alpha wrt security bug #109097

  19 Oct 2005; Brent Baude <ranger@gentoo.org> c-ares-1.2.1-r1.ebuild:
  Marking ppc64 stable to resolve deps

  19 Oct 2005; Michael Hanselmann <hansmi@gentoo.org> c-ares-1.3.0.ebuild:
  Stable on ppc.

  19 Oct 2005; Gustavo Zacarias <gustavoz@gentoo.org> c-ares-1.2.1.ebuild,
  c-ares-1.2.1-r1.ebuild, c-ares-1.3.0.ebuild:
  Gimme ~sparc for the rest

  19 Oct 2005; Gustavo Zacarias <gustavoz@gentoo.org> c-ares-1.2.0.ebuild:
  Stable on sparc directly wrt #109097

  19 Oct 2005; Brent Baude <ranger@gentoo.org> c-ares-1.2.1-r1.ebuild:
  Marking c-ares-1.2.1-r1 ~ppc64

  19 Oct 2005; Rene Nussbaumer <killerfox@gentoo.org> c-ares-1.3.0.ebuild:
  Stable on hppa. See bug #109097.

*c-ares-1.3.0 (31 Aug 2005)

  31 Aug 2005; Daniel Black <dragonheart@gentoo.org> +c-ares-1.3.0.ebuild:
  version bump as per bug #104260. thanks to Tupone Alfredo

*c-ares-1.2.1-r1 (16 Jul 2005)

  16 Jul 2005; Daniel Black <dragonheart@gentoo.org>
  +c-ares-1.2.1-r1.ebuild:
  revision bump to enable shared libraries. Bug #99160 thanks to Tupone Alfredo

*c-ares-1.2.1 (21 Apr 2005)

  21 Apr 2005; Daniel Black <dragonheart@gentoo.org> +c-ares-1.2.1.ebuild:
  Version bump as per bug #89690. Thanks to Tupone Alfredo <alfredo@tupone.it>

  28 Aug 2004; David Holm <dholm@gentoo.org> c-ares-1.2.0.ebuild:
  Added to ~ppc.

*c-ares-1.2.0 (15 Aug 2004)

  15 Aug 2004; Daniel Black <dragonheart@gentoo.org> +metadata.xml,
  +c-ares-1.2.0.ebuild:
  Initial ebuild. Thanks to Stefan Briesenick <sbriesen@gmx.de> in bug #52288

