# ChangeLog for net-libs/libwhisker
# Copyright 1999-2014 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/net-libs/libwhisker/ChangeLog,v 1.17 2014/11/09 22:12:31 dilfridge Exp $

*libwhisker-2.5-r1 (09 Nov 2014)

  09 Nov 2014; Andreas K. Huettel <dilfridge@gentoo.org>
  -libwhisker-2.5.ebuild, +libwhisker-2.5-r1.ebuild:
  Revbump without changes, since the EAPI was increased to 5 in the past
  without revbump

  09 Nov 2014; Andreas K. Huettel <dilfridge@gentoo.org> libwhisker-2.5.ebuild:
  Replace perlinfo with perl_set_version

  15 Jul 2014; Mikle Kolyada <zlogene@gentoo.org> libwhisker-2.5.ebuild:
  Bump to EAPI=5

*libwhisker-2.5 (20 Feb 2010)

  20 Feb 2010; Torsten Veller <tove@gentoo.org> -libwhisker-2.2.ebuild,
  +libwhisker-2.5.ebuild, metadata.xml:
  Version bump. Cleanup

  09 Feb 2007; Diego Pettenò <flameeyes@gentoo.org> ChangeLog:
  Regenerate digest in Manifest2 format.

  13 Mar 2005; Michael Cummings <mcummings@gentoo.org>
  -libwhisker-1.8.ebuild, -libwhisker-2.1.ebuild, libwhisker-2.2.ebuild:
  Removing old versions based on keywords

  13 Mar 2005; Michael Cummings <mcummings@gentoo.org>
  libwhisker-2.2.ebuild:
  Removing mirror restriction from this library. From RFP: 
  If you want to tweak wget by using -U parameter so you can straight download 
  from wiretrip.net, that's fine too.  If you want to download from 
  sourceforge.net, that's fine too (three?).  I do want to note that I 
  majorly slack in updating the copy on sourceforge, so it's not as up to 
  date as wiretrip.net.  And if you want to mirror it on your own servers, 
  that's fine...just please try to keep it up to date (I always announce new 
  versions to the libwhisker mailing list, so as long as someone is 
  monitoring that, it should be fine).

  31 Jan 2005; Gustavo Zacarias <gustavoz@gentoo.org> libwhisker-2.2.ebuild:
  Stable on sparc

*libwhisker-2.2 (31 Jan 2005)

  31 Jan 2005; Michael Cummings <mcummings@gentoo.org> +libwhisker-2.2.ebuild:
  New version of library, upstream bump in -current's version

  19 Nov 2004; Jason Wever <weeve@gentoo.org> libwhisker-1.8.ebuild:
  Stable on sparc.

*libwhisker-2.1 (21 Sep 2004)

  21 Sep 2004; Michael Cummings <mcummings@gentoo.org> +libwhisker-2.1.ebuild:
  New version of the ever popular libwhisker. Please read the output before
  filing a bug - the author of this library has asked that we not mirror or
  allow wget's of his source code. Do not file (another) bug about this.

  21 Sep 2004; Michael Cummings <mcummings@gentoo.org> :
  Update digest

  29 Mar 2004; Michael Cummings <mcummings@gentoo.org> libwhisker-1.8.ebuild:
  fixed SRC_URI

  21 Mar 2004; Michael Boman <mboman@gentoo.org> libwhisker-1.8.ebuild:
  QA: Unnecessary definition of S and RDEPEND removed. Adding categories to
  dependencies. See bug 45110 for details.

  14 Mar 2004; Michael Cummings <mcummings@gentoo.org> libwhisker-1.8.ebuild:
  Swapped depend and rdepend, closing bug 44513

  27 Feb 2004; Michael Cummings <mcummings@gentoo.org> libwhisker-1.8.ebuild:
  Unmasking after 144 days masked

  29 Nov 2003; <rac@gentoo.org> libwhisker-1.8.ebuild:
  Fix SRC_URI, digest.  Address bug 34208

*libwhisker-1.8 (06 Oct 2003)

  06 Oct 2003; Michael Cummings <mcummings@gentoo.org> Changelog,
  libwhisker-1.8.ebuild, metadata.xml:
  Finally closing bug 12116. Version bumped, but the original ebuild was by
  Marlon Jabbur <mjabbur@terra.com.br>
