# ChangeLog for sci-biology/abyss
# Copyright 1999-2014 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/sci-biology/abyss/ChangeLog,v 1.21 2015/04/07 14:31:56 jlec Exp $

  06 Jul 2014; Justin Lecher <jlec@gentoo.org> abyss-1.3.6.ebuild:
  Add missing dep on boost, #515156

*abyss-1.3.6 (11 Aug 2013)

  11 Aug 2013; Justin Lecher <jlec@gentoo.org> abyss-1.3.3.ebuild,
  abyss-1.3.4.ebuild, +abyss-1.3.6.ebuild, +files/abyss-1.3.3-ac_prog_ar.patch,
  +files/abyss-1.3.6-ac_prog_ar.patch, +files/abyss-1.3.6-gcc-4.7.patch:
  Version Bump, respect AR, #477580

  11 Aug 2013; Justin Lecher <jlec@gentoo.org> -abyss-1.2.3.ebuild,
  -abyss-1.2.7.ebuild, -abyss-1.3.0.ebuild:
  Drop old

  27 Jul 2013; Agostino Sarubbo <ago@gentoo.org> abyss-1.3.3.ebuild:
  Stable for x86, wrt bug #477144

  21 Jul 2013; Agostino Sarubbo <ago@gentoo.org> abyss-1.3.3.ebuild:
  Stable for amd64, wrt bug #477144

  17 Jul 2013; Justin Lecher <jlec@gentoo.org> abyss-1.3.4.ebuild:
  Moved to autotools-utils.eclass

  11 Mar 2013; Justin Lecher <jlec@gentoo.org> metadata.xml:
  Drop Andrey as maintainer so that bugs get assigned to sci-biology directly

*abyss-1.3.4 (20 Jun 2012)

  20 Jun 2012; Justin Lecher <jlec@gentoo.org> abyss-1.3.0.ebuild,
  abyss-1.3.3.ebuild, +files/abyss-1.3.3-gcc-4.7.patch, +abyss-1.3.4.ebuild,
  +files/abyss-1.3.4-gcc-4.7.patch:
  Fix compilation with gcc-4.7, #422599; install docs inside /usr/share/doc/,
  #297205

*abyss-1.3.3 (29 May 2012)

  29 May 2012; Andrey Kislyuk <weaver@gentoo.org> +abyss-1.3.3.ebuild:
  version bump

*abyss-1.3.0 (24 Sep 2011)

  24 Sep 2011; Andrey Kislyuk <weaver@gentoo.org> +abyss-1.3.0.ebuild:
  Version bump

  28 Apr 2011; Justin Lecher <jlec@gentoo.org> abyss-1.2.3.ebuild,
  abyss-1.2.7.ebuild:
  Added openmp USE

*abyss-1.2.7 (28 Apr 2011)

  28 Apr 2011; Kacper Kowalik <xarthisius@gentoo.org> -abyss-1.2.0.ebuild,
  +abyss-1.2.7.ebuild:
  Version bump. Remove -Werror wrt #365195 by Diego Elio Pettenò
  <flameeyes@gentoo.org>. Fix doc paths. Drop old.

  11 Feb 2011; Markos Chandras <hwoarang@gentoo.org> abyss-1.2.3.ebuild:
  Stable on amd64 wrt bug #335370

  07 Feb 2011; Pawel Hajdan jr <phajdan.jr@gentoo.org> abyss-1.2.3.ebuild:
  x86 stable wrt bug #353570

*abyss-1.2.3 (26 Sep 2010)

  26 Sep 2010; Andrey Kislyuk <weaver@gentoo.org> +abyss-1.2.3.ebuild:
  Version bump

*abyss-1.2.0 (23 Jun 2010)

  23 Jun 2010; Andrey Kislyuk <weaver@gentoo.org> -abyss-1.1.2.ebuild,
  +abyss-1.2.0.ebuild:
  Version bump

*abyss-1.1.2 (26 Mar 2010)

  26 Mar 2010; Andrey Kislyuk <weaver@gentoo.org> -abyss-1.1.1.ebuild,
  +abyss-1.1.2.ebuild:
  Version bump

*abyss-1.1.1 (26 Jan 2010)

  26 Jan 2010; Andrey Kislyuk <weaver@gentoo.org> -abyss-1.1.0.ebuild,
  +abyss-1.1.1.ebuild:
  Version bump

*abyss-1.1.0 (04 Jan 2010)

  04 Jan 2010; Andrey Kislyuk <weaver@gentoo.org> -abyss-1.0.16.ebuild,
  +abyss-1.1.0.ebuild:
  Version bump

*abyss-1.0.16 (24 Nov 2009)

  24 Nov 2009; Andrey Kislyuk <weaver@gentoo.org> +metadata.xml,
  +abyss-1.0.16.ebuild:
  New package, ebuild written by me
