# ChangeLog for sci-biology/emboss
# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/sci-biology/emboss/ChangeLog,v 1.55 2010/03/07 20:58:42 jlec Exp $

*emboss-6.1.0-r1 (07 Mar 2010)

  07 Mar 2010; Justin Lecher (jlec) <jlec@gentoo.org>
  +emboss-6.1.0-r1.ebuild:
  Moved to EAPI=3 for PREFIX support, imported prefix patches from overlay,
  keyworded as in overlay

  01 Sep 2009; Olivier Fisette <ribosome@gentoo.org> metadata.xml:
  Giving up maintainership of this package.

  01 Sep 2009; Olivier Fisette <ribosome@gentoo.org> emboss-6.1.0.ebuild:
  Remove documentation that conflicts with EMBASSY phylipnew.

*emboss-6.1.0 (01 Sep 2009)

  01 Sep 2009; Olivier Fisette <ribosome@gentoo.org> +emboss-6.1.0.ebuild:
  New upstream version.

  01 Sep 2009; Olivier Fisette <ribosome@gentoo.org> emboss-6.0.1.ebuild:
  Stabilised on x86 and amd64.

  31 Aug 2009; Olivier Fisette <ribosome@gentoo.org> emboss-4.0.0.ebuild,
  emboss-6.0.1.ebuild:
  Q.A. fixes, including better dependency on ClustalW.

  27 Aug 2008; Olivier Fisette <ribosome@gentoo.org> -emboss-5.0.0.ebuild:
  Pruning version that will never be stabilised.

  27 Aug 2008; Olivier Fisette <ribosome@gentoo.org> emboss-4.0.0.ebuild:
  Depend on ClustalW 1.83 since version 2.x will soon be added to Portage
  and is incompatible with EMBOSS wrapper programs.

*emboss-6.0.1 (26 Aug 2008)

  26 Aug 2008; Olivier Fisette <ribosome@gentoo.org> +emboss-6.0.1.ebuild:
  New upstream version.

  25 Jan 2008; Markus Dittrich <markusle@gentoo.org>
  +files/emboss-5.0.0-as-needed.patch, emboss-4.0.0.ebuild,
  emboss-5.0.0.ebuild:
  Fixed unresolved symbols with as-needed (see bug #207304).

  22 Jul 2007; Donnie Berkholz <dberkholz@gentoo.org>; emboss-4.0.0.ebuild:
  Drop virtual/x11 references.

  18 Jul 2007; Olivier Fisette <ribosome@gentoo.org>
  +files/emboss-README.Gentoo-1:
  Added updated Gentoo README file in reStructuredText format.

*emboss-5.0.0 (18 Jul 2007)

  18 Jul 2007; Olivier Fisette <ribosome@gentoo.org> +emboss-5.0.0.ebuild:
  New upstream version.

  09 Apr 2007; Jeff Gardner <je_fro@gentoo.org> +files/22emboss,
  -files/22emboss-r1, emboss-4.0.0.ebuild:
  Fixed to use doenvd wrt bug #173884

  10 Dec 2006; Olivier Fisette <ribosome@gentoo.org>
  -emboss-3.0.0-r1.ebuild, emboss-4.0.0.ebuild:
  Pruned old version. Removed ppc-macos keyword, as grobian said the
  package and its dependencies were fully moved into "prefix".

  20 Nov 2006; <blubb@gentoo.org> emboss-4.0.0.ebuild:
  stable on amd64

  15 Nov 2006; Markus Rothe <corsair@gentoo.org> emboss-4.0.0.ebuild:
  Stable on ppc64; bug #153766

  03 Nov 2006; nixnut <nixnut@gentoo.org> emboss-4.0.0.ebuild:
  Stable on ppc wrt bug 153766

  03 Nov 2006; Jeff Gardner <je_fro@gentoo.org> emboss-3.0.0-r1.ebuild:
  Added ~sparc to emboss-3 for embassy-phylip-3.6b.

  02 Nov 2006; Olivier Fisette <ribosome@gentoo.org> emboss-4.0.0.ebuild:
  Added to x86.

  18 Aug 2006; Jason Wever <weeve@gentoo.org> emboss-4.0.0.ebuild:
  Added ~sparc keyword wrt bug #144241.

*emboss-4.0.0 (21 Jul 2006)

  21 Jul 2006; Olivier Fisette <ribosome@gentoo.org> +emboss-4.0.0.ebuild:
  New upstream version. See change log:
  "http://emboss.sourceforge.net/developers/changelog.html".

  20 Apr 2006; Olivier Fisette <ribosome@gentoo.org> -emboss-3.0.0.ebuild:
  Removed old revision.

  08 Apr 2006; Simon Stelling <blubb@gentoo.org> emboss-3.0.0-r1.ebuild:
  stable on amd64

  22 Feb 2006; Fabian Groffen <grobian@gentoo.org> ChangeLog:
  Marked ppc-macos stable (bug #123332)

  22 Feb 2006; <nixnut@gentoo.org> emboss-3.0.0-r1.ebuild:
  Stable on ppc. bug 123332

  21 Feb 2006; Markus Rothe <corsair@gentoo.org> emboss-3.0.0-r1.ebuild:
  Stable on ppc64; bug #123332

  20 Feb 2006; Joshua Jackson <tsunam@gentoo.org> emboss-3.0.0-r1.ebuild:
  Stable on x86; bug #123332

  19 Feb 2006; Olivier Fisette <ribosome@gentoo.org> emboss-3.0.0-r1.ebuild:
  Block old versions of pscan to avoid file collisions (see bug #116236).

  23 Jan 2006; Olivier Fisette <ribosome@gentoo.org> +files/README.Gentoo:
  Added missing README file (fixes bug #120071).

*emboss-3.0.0-r1 (21 Jan 2006)

  21 Jan 2006; Olivier Fisette <ribosome@gentoo.org>
  +emboss-3.0.0-r1.ebuild:
  Install codons and restriction enzyme equivalence files in alternative
  directories. This avoids file collisions on case insensitive filesystems
  (see bug #115446), allows the installation of an updated enzyme prototypes
  file that will give more consistent results (see bug #118832).

  14 Dec 2005; Donnie Berkholz <spyderous@gentoo.org>; emboss-3.0.0.ebuild:
  Add modular X dependencies.

  19 Nov 2005; Simon Stelling <blubb@gentoo.org> emboss-3.0.0.ebuild:
  stable on amd64

  04 Oct 2005; Olivier Fisette <ribosome@gentoo.org> -emboss-2.10.0.ebuild:
  Removed obsolete version.

  03 Oct 2005; Olivier Fisette <ribosome@gentoo.org> emboss-3.0.0.ebuild:
  Stable on ppc-macos (with j4rg0n's permission, bug #102420).

  02 Oct 2005; Michael Hanselmann <hansmi@gentoo.org> emboss-3.0.0.ebuild:
  Stable on ppc.

  24 Sep 2005; Markus Rothe <corsair@gentoo.org> emboss-3.0.0.ebuild:
  Stable on ppc64

  21 Sep 2005; Olivier Fisette <ribosome@gentoo.org> emboss-3.0.0.ebuild:
  Added to x86.

  04 Sep 2005; Simon Stelling <blubb@gentoo.org> emboss-3.0.0.ebuild:
  added ~amd64 keyword

  13 Aug 2005; Olivier Fisette <ribosome@gentoo.org> emboss-3.0.0.ebuild,
  emboss-2.10.0.ebuild:
  Fixed Prosite dependency.

*emboss-3.0.0 (06 Aug 2005)

  06 Aug 2005; Olivier Fisette <ribosome@gentoo.org> +emboss-3.0.0.ebuild:
  New version.

  28 Jul 2005; Olivier Fisette <ribosome@gentoo.org> -emboss-2.9.0.ebuild:
  Removed old version.

  25 Jun 2005; Lina Pezzella <j4rg0n@gentoo.org> emboss-2.10.0.ebuild:
  Stable ppc-macos

  24 Jun 2005; Joseph Jezak <josejx@gentoo.org> emboss-2.10.0.ebuild:
  Marked ppc stable for bug #96819.

  19 Jun 2005; Markus Rothe <corsair@gentoo.org> emboss-2.10.0.ebuild:
  Stable on ppc64

  13 May 2005; Olivier Fisette <ribosome@gentoo.org> emboss-2.10.0.ebuild:
  Added to x86.

  02 May 2005; Omkhar Arasaratnam <omkhar@gentoo.org> emboss-2.10.0.ebuild:
  Added ~ppc64

  02 May 2005; Michael Hanselmann <hansmi@gentoo.org> emboss-2.9.0.ebuild:
  Stable on ppc.

*emboss-2.10.0 (22 Mar 2005)

  22 Mar 2005; Olivier Fisette <ribosome@gentoo.org> +emboss-2.10.0.ebuild:
  New version.

  22 Feb 2005; Olivier Fisette <ribosome@gentoo.org> emboss-2.9.0.ebuild:
  Added support for minimal build.

  09 Feb 2005; Lina Pezzella <j4rg0n@gentoo.org> emboss-2.9.0.ebuild:
  Stable ppc-macos

  30 Jan 2005; Olivier Fisette <ribosome@gentoo.org> emboss-2.9.0.ebuild:
  Ebuild cleanup.

  01 Jan 2005; Lina Pezzella <j4rg0n@gentoo.org> emboss-2.9.0.ebuild:
  Unstable ppc-macos.

*emboss-2.9.0 (23 Dec 2004)

  23 Dec 2004; Olivier Fisette <ribosome@gentoo.org> +metadata.xml,
  +files/22emboss-r1, +emboss-2.9.0.ebuild:
  Moved from app-sci/emboss to sci-biology/emboss.

  31 Oct 2004; Olivier Fisette <ribosome@gentoo.org> emboss-2.9.0.ebuild,
  -emboss-2.8.0-r3.ebuild:
  Removed old version. Added 2.9.0 to x86.

  10 Aug 2004; Olivier Fisette <ribosome@gentoo.org>
  emboss-2.8.0-r3.ebuild:
  Added to x86.
  emboss-2.8.0-r2.ebuild:
  Removed obsolete ebuild.

  21 Jul 2004; David Holm <dholm@gentoo.org> emboss-2.9.0.ebuild:
  Added to ~ppc.

  20 Jul 2004; Olivier Fisette <ribosome@gentoo.org>
  emboss-2.8.0-r3.ebuild, emboss-2.9.0.ebuild:
  Removed icc support since no patching is needed.

  19 Jul 2004; Olivier Fisette <ribosome@gentoo.org> emboss-2.9.0.ebuild:
  Version bump. Changed the configuration and install steps a bit to
  reflect the fact that header files are now installed automatically.

  14 Jul 2004; Olivier Fisette <ribosome@gentoo.org>
  emboss-2.8.0-r3.ebuild: Modified configuration step to make the X and png
  USE flags independent; Added support for icc; Added primer3 and clustalw
  to the dependencies since some EMBOSS programs won't work without them;
  Added support for the biological databases aaindex, cutg, prints, prosite,
  rebase and transfac, which are needed for many EMBOSS programs (the databases
  are PDEPENDencies since they all must be indexed with an EMBOSS program before
  use) (this database support is optional); Added header files installation for
  EMBOSS development.
  emboss-2.8.0-r2.ebuild: Added to x86.
  emboss-2.8.0-r1.ebuild, emboss-2.8.0.ebuild, emboss-2.7.1.ebuild: Removed files.
  metadata.xml: Added long description; Set myself as maintainer.

  02 Jun 2004; Aron Griffis <agriffis@gentoo.org> emboss-2.8.0-r1.ebuild,
  emboss-2.8.0-r2.ebuild:
  Fix use invocation

  12 May 2004; David Holm <dholm@gentoo.org> emboss-2.8.0-r2.ebuild:
  Added to ~ppc.

*emboss-2.8.0-r2 (11 May 2004)

  11 May 2004; Patrick Kursawe <phosphan@gentoo.org> emboss-2.8.0-r2.ebuild,
  files/22emboss-r1:
  Adjusted value of PLPLOT_LIB, see bug #50176

*emboss-2.8.0-r1 (30 Jan 2004)

  30 Jan 2004; Stephen Diener <sediener@gentoo.org> emboss-2.8.0-r1.ebuild:
  Modified to use X and png properly for servers

  28 Jan 2004; Stephen Diener <sediener@gentoo.org> emboss-2.8.0.ebuild:
  Modified 2.8.0 ebuild to require X not just USE it.

*emboss-2.8.0 (13 Dec 2003)

  13 Dec 2003; Stephen Diener <sediener@gentoo.org> emboss-2.7.1.ebuild,
  emboss-2.8.0.ebuild:
  Version bump...

  20 Oct 2003; George Shapovalov <george@gentoo.org> metdata.xml :
  added metadata.xml, marked ebuild stable

*emboss-2.7.1 (03 Sep 2003)

  03 Sep 2003; <sediener@gentoo.org> emboss-2.7.1.ebuild:
  Initial ebuild

