# ChangeLog for sci-biology/raxml
# Copyright 1999-2015 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/sci-biology/raxml/ChangeLog,v 1.12 2015/04/07 14:34:43 jlec Exp $

  29 Mar 2015; Justin Lecher <jlec@gentoo.org> raxml-7.2.6.ebuild:
  Use REQUIRED_USE to constrain sse3 compatibility

  29 Jan 2015; Michał Górny <mgorny@gentoo.org> metadata.xml,
  raxml-7.2.6.ebuild:
  Switch to CPU_FLAGS_X86.

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

  18 Feb 2013; Justin Lecher <jlec@gentoo.org> -raxml-7.2.2.ebuild,
  -raxml-7.2.5.ebuild, -raxml-7.2.5-r1.ebuild, raxml-7.2.6.ebuild,
  metadata.xml:
  Drop old; stop building when non sse3 capable CPU is detected, #375061

*raxml-7.2.6 (27 Jun 2011)

  27 Jun 2011; Justin Lecher <jlec@gentoo.org> +raxml-7.2.6.ebuild,
  +files/raxml-7.2.6-makefile.patch, metadata.xml:
  Version Bump, 312897

*raxml-7.2.5-r1 (21 Jun 2011)

  21 Jun 2011; Justin Lecher <jlec@gentoo.org> raxml-7.2.2.ebuild,
  raxml-7.2.5.ebuild, +raxml-7.2.5-r1.ebuild,
  +files/raxml-7.2.5-makefile.patch, metadata.xml:
  Tweaking ebuild, respect LDFLAGS #335629

*raxml-7.2.5 (27 Jan 2010)

  27 Jan 2010; Andrey Kislyuk <weaver@gentoo.org> -raxml-7.0.4.ebuild,
  +raxml-7.2.5.ebuild:
  Version bump

  31 Oct 2009; Markus Meier <maekke@gentoo.org> raxml-7.2.2.ebuild:
  amd64/x86 stable, bug #290929

  04 Sep 2009; Andrey Kislyuk <weaver@gentoo.org> raxml-7.2.2.ebuild:
  Tweak build process

*raxml-7.2.2 (04 Sep 2009)

  04 Sep 2009; Andrey Kislyuk <weaver@gentoo.org> +raxml-7.2.2.ebuild:
  Version bump (but no mpi support in 7.2.2)

*raxml-7.0.4 (03 Sep 2009)

  03 Sep 2009; Andrey Kislyuk <weaver@gentoo.org> +metadata.xml,
  +raxml-7.0.4.ebuild:
  New package, ebuild written by me
