# ChangeLog for perl-core/IO-Compress
# Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/perl-core/IO-Compress/ChangeLog,v 1.42 2011/07/30 12:18:17 tove Exp $

  30 Jul 2011; Torsten Veller <tove@gentoo.org> IO-Compress-2.024.ebuild,
  IO-Compress-2.33.ebuild, IO-Compress-2.35.0.ebuild,
  IO-Compress-2.36.0.ebuild, IO-Compress-2.37.0.ebuild:
  Drop ~sparc-fbsd KEYWORD

*IO-Compress-2.37.0 (23 Jun 2011)

  23 Jun 2011; Torsten Veller <tove@gentoo.org> +IO-Compress-2.37.0.ebuild:
  Version bump

*IO-Compress-2.36.0 (21 Jun 2011)

  21 Jun 2011; Torsten Veller <tove@gentoo.org> +IO-Compress-2.36.0.ebuild:
  Version bump

*IO-Compress-2.35.0 (12 May 2011)

  12 May 2011; Torsten Veller <tove@gentoo.org> +IO-Compress-2.35.0.ebuild:
  Version bump

  02 May 2011; Fabian Groffen <grobian@gentoo.org> IO-Compress-2.33.ebuild:
  Marked ~x64-freebsd

  17 Jan 2011; Torsten Veller <tove@gentoo.org> -IO-Compress-2.021.ebuild,
  -IO-Compress-2.025.ebuild, -IO-Compress-2.026.ebuild,
  -IO-Compress-2.027.ebuild, -IO-Compress-2.030.ebuild:
  Cleanup

*IO-Compress-2.33 (13 Jan 2011)

  13 Jan 2011; Torsten Veller <tove@gentoo.org> +IO-Compress-2.33.ebuild:
  Version bump

  22 Oct 2010; Samuli Suominen <ssuominen@gentoo.org>
  IO-Compress-2.024.ebuild:
  ppc64 stable wrt #333421

  22 Oct 2010; Jeroen Roovers <jer@gentoo.org> IO-Compress-2.024.ebuild:
  Stable for HPPA (bug #333421).

  12 Sep 2010; Raúl Porcel <armin76@gentoo.org> IO-Compress-2.024.ebuild:
  alpha/arm/ia64/m68k/s390/sh/sparc stable wrt #333421

  23 Aug 2010; Markus Meier <maekke@gentoo.org> IO-Compress-2.024.ebuild:
  arm stable, bug #333421

  23 Aug 2010; Mike Frysinger <vapier@gentoo.org> IO-Compress-2.021.ebuild,
  IO-Compress-2.024.ebuild, IO-Compress-2.025.ebuild, IO-Compress-2.026.ebuild,
  IO-Compress-2.027.ebuild, IO-Compress-2.030.ebuild:
  Add proper blockers to old split packages #274443.

  20 Aug 2010; Christian Faulhammer <fauli@gentoo.org>
  IO-Compress-2.024.ebuild:
  stable x86, bug 333421

  19 Aug 2010; Markos Chandras <hwoarang@gentoo.org>
  IO-Compress-2.024.ebuild:
  Stable on amd64 wrt bug #333421

*IO-Compress-2.030 (26 Jul 2010)

  26 Jul 2010; Torsten Veller <tove@gentoo.org> +IO-Compress-2.030.ebuild:
  Version bump

*IO-Compress-2.027 (25 Apr 2010)

  25 Apr 2010; Torsten Veller <tove@gentoo.org> +IO-Compress-2.027.ebuild:
  Version bump

*IO-Compress-2.026 (08 Apr 2010)

  08 Apr 2010; Torsten Veller <tove@gentoo.org> +IO-Compress-2.026.ebuild:
  Version bump

*IO-Compress-2.025 (07 Apr 2010)

  07 Apr 2010; Torsten Veller <tove@gentoo.org> +IO-Compress-2.025.ebuild:
  Version bump

  25 Jan 2010; Torsten Veller <tove@gentoo.org> IO-Compress-2.021.ebuild,
  IO-Compress-2.024.ebuild:
  Remove Test-Pod causing circular dependencies

  25 Jan 2010; Torsten Veller <tove@gentoo.org> -IO-Compress-2.020.ebuild,
  -IO-Compress-2.023.ebuild:
  Cleanup

*IO-Compress-2.024 (12 Jan 2010)

  12 Jan 2010; Torsten Veller <tove@gentoo.org> +IO-Compress-2.024.ebuild:
  Version bump

  05 Jan 2010; nixnut <nixnut@gentoo.org> IO-Compress-2.021.ebuild:
  ppc stable #288026

  16 Dec 2009; Jonathan Callen <abcd@gentoo.org> IO-Compress-2.020.ebuild,
  IO-Compress-2.021.ebuild, IO-Compress-2.023.ebuild:
  QA: Transfer prefix keywords

  14 Dec 2009; Raúl Porcel <armin76@gentoo.org> IO-Compress-2.021.ebuild:
  alpha/ia64/m68k/s390/sh/sparc stable wrt #288026

  10 Dec 2009; Brent Baude <ranger@gentoo.org> ChangeLog:
  Marking IO-Compress-2.021 ppc64 stable for bug 288026

  07 Dec 2009; Markus Meier <maekke@gentoo.org> IO-Compress-2.021.ebuild:
  arm stable, bug #288026

  07 Dec 2009; Jeroen Roovers <jer@gentoo.org> IO-Compress-2.021.ebuild:
  Stable for HPPA (bug #288026).

  04 Dec 2009; Torsten Veller <tove@gentoo.org> IO-Compress-2.021.ebuild:
  Stable on amd64 (#288026)

  04 Dec 2009; Christian Faulhammer <fauli@gentoo.org>
  IO-Compress-2.021.ebuild:
  x86 stable, bug 288026

*IO-Compress-2.023 (10 Nov 2009)

  10 Nov 2009; Robin H. Johnson <robbat2@gentoo.org>
  +IO-Compress-2.023.ebuild:
  Version bump via perl-bump experimental tool.

*IO-Compress-2.022 (10 Nov 2009)

  10 Nov 2009; Robin H. Johnson <robbat2@gentoo.org>
  +IO-Compress-2.022.ebuild:
  Version bump via perl-bump experimental tool.

*IO-Compress-2.021 (31 Aug 2009)

  31 Aug 2009; Torsten Veller <tove@gentoo.org> +IO-Compress-2.021.ebuild:
  Version bump

  19 Jul 2009; Torsten Veller <tove@gentoo.org> -IO-Compress-2.019.ebuild:
  Cleanup

  19 Jul 2009; nixnut <nixnut@gentoo.org> IO-Compress-2.020.ebuild:
  ppc stable #273141

  22 Jun 2009; Torsten Veller <tove@gentoo.org> IO-Compress-2.020.ebuild:
  Stable on amd64 (#273141)

  19 Jun 2009; Brent Baude <ranger@gentoo.org> IO-Compress-2.020.ebuild:
  Marking IO-Compress-2.020 ppc64 for bug 273141

  14 Jun 2009; Jeroen Roovers <jer@gentoo.org> IO-Compress-2.020.ebuild:
  Stable for HPPA (bug #273141).

  14 Jun 2009; Raúl Porcel <armin76@gentoo.org> IO-Compress-2.020.ebuild:
  alpha/arm/ia64/m68k/s390/sh/sparc/x86 stable wrt #273141

*IO-Compress-2.020 (03 Jun 2009)

  03 Jun 2009; Torsten Veller <tove@gentoo.org> +IO-Compress-2.020.ebuild:
  Version bump

  05 May 2009; Torsten Veller <tove@gentoo.org> IO-Compress-2.019.ebuild:
  Add missing keywords (#268615)

  05 May 2009; Jeroen Roovers <jer@gentoo.org> IO-Compress-2.019.ebuild:
  Marked ~hppa (bug #268615).

*IO-Compress-2.019 (04 May 2009)

  04 May 2009; Torsten Veller <tove@gentoo.org> -IO-Compress-2.017.ebuild,
  +IO-Compress-2.019.ebuild:
  Version bump

*IO-Compress-2.017 (25 Apr 2009)

  25 Apr 2009; Torsten Veller <tove@gentoo.org> +metadata.xml,
  +IO-Compress-2.017.ebuild:
  Initial commit. IO-Compress replaces Compress-Zlib, IO-Compress-Zlib,
  IO-Compress-Bzip2 and IO-Compress-Base

