# ChangeLog for sci-libs/hdf5
# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/sci-libs/hdf5/ChangeLog,v 1.53 2010/02/10 17:21:57 bicatali Exp $

  10 Feb 2010; Sébastien Fabbro <bicatali@gentoo.org> hdf5-1.8.4-r1.ebuild:
  Added some warnings for mpi

  05 Feb 2010; Raúl Porcel <armin76@gentoo.org> hdf5-1.8.4-r1.ebuild,
  +files/hdf5-1.8.4-sigbus.patch:
  Add patch from debian for unaligned acceses, alpha/ia64/sparc stable wrt
  #299710

  21 Jan 2010; Jeroen Roovers <jer@gentoo.org> hdf5-1.8.4-r1.ebuild:
  Stable for HPPA (bug #299710).

  20 Jan 2010; Markus Meier <maekke@gentoo.org> hdf5-1.8.4-r1.ebuild:
  amd64 stable, bug #299710

  19 Jan 2010; nixnut <nixnut@gentoo.org> hdf5-1.8.4-r1.ebuild:
  ppc stable #299710

  15 Jan 2010; Christian Faulhammer <fauli@gentoo.org> hdf5-1.8.4-r1.ebuild:
  stable x86, bug 299710

  11 Dec 2009; Sébastien Fabbro <bicatali@gentoo.org>
  files/hdf5-1.8.3-destdir.patch, hdf5-1.8.4-r1.ebuild:
  Removed destdir patch, now done with sed's. This also solves bug #286492

*hdf5-1.8.4-r1 (03 Dec 2009)

  03 Dec 2009; Sébastien Fabbro <bicatali@gentoo.org> -hdf5-1.8.4.ebuild,
  +hdf5-1.8.4-r1.ebuild, +files/hdf5-1.8.4-gnutools.patch,
  +files/hdf5-1.8.4-scaleoffset.patch:
  Forced compilation -O0 on some buggy files, fixed some tests,
  re-introduced the fortran+mpi possibility, and keyworded ia64. Thanks
  Kacper Kowalik to do all this.

  24 Nov 2009; Markus Dittrich <markusle@gentoo.org> hdf5-1.6.7.ebuild:
  Added a few improvements.

*hdf5-1.8.4 (20 Nov 2009)

  20 Nov 2009; Sébastien Fabbro <bicatali@gentoo.org> +hdf5-1.8.4.ebuild:
  Version bump. mpi and fortran do not compile together, so disable
  simultaneous mpi/fortran uses until patch

  12 Oct 2009; Jeroen Roovers <jer@gentoo.org> hdf5-1.8.3-r1.ebuild:
  Stable for HPPA (bug #245707).

  02 Oct 2009; Sébastien Fabbro <bicatali@gentoo.org> hdf5-1.8.3-r1.ebuild,
  files/hdf5-1.8.3-destdir.patch:
  Set CC=mpicc when building with mpi enabled (bug #286353), added
  --enabled-shared which was disabled with mpi enabled (bug #287124), and
  added slashes in destdir patch

  01 Oct 2009; Tobias Klausmann <klausman@gentoo.org> hdf5-1.8.3-r1.ebuild:
  Keyworded on alpha, bug #285148

  23 Sep 2009; Patrick Lauer <patrick@gentoo.org> hdf5-1.6.6.ebuild,
  hdf5-1.6.7.ebuild:
  Remove virtual/libc

  17 Sep 2009; Sébastien Fabbro <bicatali@gentoo.org> hdf5-1.8.3-r1.ebuild:
  Removed the forced PIC configure line which was compiling static libraries
  with PIC

*hdf5-1.8.3-r1 (15 Sep 2009)

  15 Sep 2009; Steve Arnold <nerdboy@gentoo.org> -hdf5-1.8.3.ebuild,
  +hdf5-1.8.3-r1.ebuild:
  Updated to install the shared libs correctly.  This allows other packages
  that link against hdf5 to actually build...

  11 Sep 2009; Sébastien Fabbro <bicatali@gentoo.org> hdf5-1.8.3.ebuild,
  files/hdf5-1.8.3-as-needed.patch:
  More as-needed fixes, thanks to Kacper Kowalik closing bug #284518

  24 Aug 2009; Sébastien Fabbro <bicatali@gentoo.org> hdf5-1.8.3.ebuild:
  Replaced use-based dependency for virtual by atom based ones. Thanks
  Mr_Bones.

*hdf5-1.8.3 (18 Aug 2009)

  18 Aug 2009; Sébastien Fabbro <bicatali@gentoo.org> +hdf5-1.8.3.ebuild,
  +files/hdf5-1.8.3-as-needed.patch, +files/hdf5-1.8.3-destdir.patch,
  +files/hdf5-1.8.3-gnutools.patch, +files/hdf5-1.8.3-includes.patch,
  +files/hdf5-1.8.3-noreturn.patch, +files/hdf5-1.8.3-signal.patch,
  metadata.xml:
  Version bump. Many fixes and cleanups, rewrote ebuild from scratch,
  merging from science overlay

  04 Feb 2009; Patrick Lauer <patrick@gentoo.org>
  +files/hdf5-gcc4.3.3-fix.patch, hdf5-1.6.7.ebuild:
  fortify_sources fix, patch from Simon C. Ion, closes #257177

  23 Jan 2009; Steve Arnold <nerdboy@gentoo.org> hdf5-1.6.7.ebuild:
  Updated for upstream changes in test-tools and a more appropriate sed 
  invocation.

*hdf5-1.6.7 (17 Aug 2008)

  17 Aug 2008; Markus Dittrich <markusle@gentoo.org> -hdf5-1.6.5.ebuild,
  +hdf5-1.6.7.ebuild:
  Version bump and replaced "which" with "type -p". Removed obsolete
  ebuild.

  07 Aug 2008; Ulrich Mueller <ulm@gentoo.org> metadata.xml:
  Add USE flag description to metadata wrt GLEP 56.

  22 Jun 2008; Markus Dittrich <markusle@gentoo.org>
  +files/hdf5-1.6.6-gcc4.3.patch, hdf5-1.6.6.ebuild:
  Added patch to allow compilation with gcc-4.3 (fixes bug #228341). 
  Thanks much to Pinky <master_up@post.cz> for his patch.

  13 Jun 2008; Markus Dittrich <markusle@gentoo.org> hdf5-1.6.6.ebuild:
  Removed sparc specific mask of mpi in DEPEND in favor of package.use.mask
  (see bug #217854).

  06 Jun 2008; Markus Dittrich <markusle@gentoo.org> hdf5-1.6.5-r1.ebuild,
  hdf5-1.6.6.ebuild:
  Removed quotes around myconf since they break configure 
  (see bug #225021). Thanks much to Nuno Sucena Almeida 
  <slug@aeminium.org> for pointing this out.

  04 Jun 2008; Steve Arnold <nerdboy@gentoo.org> hdf5-1.6.6.ebuild:
  Adding ~hppa back in (doh! needed a full tree updated)

  04 Jun 2008; Steve Arnold <nerdboy@gentoo.org> hdf5-1.6.6.ebuild:
  Fixed some build and test script issues, and updated the test function so 
  the MPI tests work on a single CPU box.

  15 Apr 2008; Markus Dittrich <markusle@gentoo.org> hdf5-1.6.6.ebuild:
  Fixed messed up symlinks for libh5test.so (see bug #217720).
  Also re-added spark KEYWORD without mpi support for now.

  09 Apr 2008; Jeroen Roovers <jer@gentoo.org> hdf5-1.6.6.ebuild:
  Marked ~hppa (bug #216855).

  04 Feb 2008; Steve Arnold <nerdboy@gentoo.org> hdf5-1.6.6.ebuild:
  fixed QA issues and added additional tools via use flag

  06 Dec 2007; Markus Dittrich <markusle@gentoo.org> hdf5-1.6.6.ebuild:
  Fixed misplaced quotation mark (fixes bug #201479).

  05 Dec 2007; Markus Dittrich <markusle@gentoo.org> hdf5-1.6.6.ebuild:
  Removed quotes around myconf since they confuse configure (fixes bug #201205).

*hdf5-1.6.6 (03 Dec 2007)

  03 Dec 2007; Steve Arnold <nerdboy@gentoo.org> +files/hdf5-mpich2.patch,
  +hdf5-1.6.6.ebuild:
  Updated to latest upstream release, with mpi fixes, however, this version
  is locked to mpich2-1.0.6 due to pvfs2, however, sparc is dropped until
  the parallel I/O thing is worked out with other MPI libs.
  Tests work, including mpi (but needs testing in a real cluster).

  01 Nov 2006; Donnie Berkholz <dberkholz@gentoo.org>; ChangeLog:
  Update for my nick change spyderous -> dberkholz.

  13 Jul 2006; Steve Arnold <nerdboy@gentoo.org> hdf5-1.6.5-r1.ebuild:
  removed pgi fortran detection

  08 Jul 2006; Markus Rothe <corsair@gentoo.org> hdf5-1.6.4.ebuild:
  Stable on ppc64

  28 Jun 2006; Steve Arnold <nerdboy@gentoo.org> hdf5-1.6.5-r1.ebuild:
  Reverted to original (and standard) library location; even though it
  was much tidier, it was causing linkage issues...

*hdf5-1.6.5-r1 (24 Jun 2006)

  24 Jun 2006; Steve Arnold <nerdboy@gentoo.org> +files/mpd.conf,
  hdf5-1.6.5.ebuild, +hdf5-1.6.5-r1.ebuild:
  Updated for bug 134439, fortran support, tests, and creeping complexity.
  Added use flags and logic for incompatible configure options, and support
  for additional Fortran compilers (currently only tested with gfortran).
  See comments and einfo for more details.  Backport install fixes.  Also
  made SHLIB change for issue below (bug #118777).

  14 Jun 2006; Ferris McCormick <fmccor@gentoo.org> hdf5-1.6.5.ebuild:
  Add ~sparc keyword, closing Bug #118777 --- but please see Comments 4 and 5
  on the bug for conditions under which hdf5 should be built.  (USE flags and
  environment variables curiosities.)

*hdf5-1.6.5 (25 May 2006)

  25 May 2006; Steve Arnold <nerdboy@gentoo.org> hdf5-1.6.4.ebuild,
  +hdf5-1.6.5.ebuild:
  Early stable bump for gdal (required), plus new testing version
  (since the only real issue besides the sparc bug was the mpi thing).
  To do: 1) resolve virtual/mpi issues for ppc64 and others
	 2) need fix for buss error on sparc
         3) get szip support working for other arches

  21 May 2006; Steve Arnold <nerdboy@gentoo.org> hdf5-1.6.2.ebuild,
  hdf5-1.6.4.ebuild:
  Updated to fix a few minor odds and ends (extra configure options,
  get_libdir, etc).  Verified working with mpich2-1.0.3 (bug #107161).
  Need to stablize for gdal; also needs some work on other arches 
  (eg, the sparc bug #118777).  Go back to virtual/mpi when deps are
  fixed (mpich is dorked).

  17 Mar 2006; Markus Rothe <corsair@gentoo.org> hdf5-1.6.4.ebuild:
  Added ~ppc64; bug #126527

  14 Feb 2006; Donnie Berkholz <dberkholz@gentoo.org>; hdf5-1.6.4.ebuild:
  Use virtual/mpi instead of an || for lam-mpi and mpich. It caused issues
  with octave, reported by humpback@gentoo.org.

  16 Dec 2005; Diego Pettenò <flameeyes@gentoo.org> hdf5-1.6.4.ebuild:
  Remove --with-gnu-ld option, bug #108386.

  11 Sep 2005; Steve Arnold <nerdboy@gentoo.org> hdf5-1.6.2.ebuild:
  stable bump for sparc

  18 Apr 2005; Joseph Jezak <josejx@gentoo.org> hdf5-1.6.2.ebuild:
  Marked ppc stable.

*hdf5-1.6.4 (17 Apr 2005)

  17 Apr 2005; Olivier Fisette <ribosome@gentoo.org> -hdf5-1.4.5.ebuild,
  -hdf5-1.6.0.ebuild, -hdf5-1.6.1.ebuild, +hdf5-1.6.4.ebuild:
  Removed obsolete versions.

*hdf5-1.6.4 (17 Apr 2005)

  17 Apr 2005; Olivier Fisette <ribosome@gentoo.org> +hdf5-1.6.4.ebuild:
  New version. Added MPI support.

  01 Apr 2005; Aron Griffis <agriffis@gentoo.org> hdf5-1.6.2.ebuild:
  stable on ia64

  29 Dec 2004; Ciaran McCreesh <ciaranm@gentoo.org> :
  Change encoding to UTF-8 for GLEP 31 compliance

*hdf5-1.6.2 (28 Dec 2004)

  28 Dec 2004; Olivier Fisette <ribosome@gentoo.org> +metadata.xml,
  +hdf5-1.4.5.ebuild, +hdf5-1.6.0.ebuild, +hdf5-1.6.1.ebuild,
  +hdf5-1.6.2.ebuild:
  Moved from dev-libs/hdf5 to sci-libs/hdf5.

  25 Jun 2004; Danny van Dyk <kugelfang@gentoo.org> hdf5-1.6.2.ebuild:
  Marked stable on amd64.

  15 Jun 2004; Michael Sterrett <mr_bones_@gentoo.org> hdf5-1.4.5.ebuild,
  hdf5-1.6.0.ebuild, hdf5-1.6.1.ebuild, hdf5-1.6.2.ebuild:
  PROVIDE is for virtuals

  05 May 2004; Bryan Østergaard <kloeri@gentoo.org> hdf5-1.6.2.ebuild:
  Stable on alpha.

  03 Apr 2004; Peter Bienstman <pbienst@gentoo.org> hdf5-1.6.2.ebuild:
  Marked stable on x86.

*hdf5-1.6.2 (03 Mar 2004)

  3 Mar 2004; <pbienst@gentoo.org> hdf5-1.6.2.ebuild:
  New version.

  3 Mar 2004; <pbienst@gentoo.org> hdf5-1.6.1.ebuild:
  Mark stable on x86.

  18 Feb 2004; <augustus@gentoo.org> hdf5-1.6.1.ebuild:
  Added ~amd64 to keywords.

  16 Feb 2004; Aron Griffis <agriffis@gentoo.org> hdf5-1.6.1.ebuild:
  add ~alpha and ~ia64

  15 Feb 2004; Jason Wever <weeve@gentoo.org> hdf5-1.6.1.ebuild:
  Added ~sparc keyword to fix broken dependencies of app-sci/octave.

*hdf5-1.6.1 (06 jan 2004)

  06 Jan 2004; George Shapovalov <george@gentoo.org> hdf5-1.6.1.ebuild :
  new version (#35792) thanks to Peter Bienstman <Peter.Bienstman@rug.ac.be> for notification

*hdf5-1.6.0 (24 Aug 2003)

  24 Aug 2003; George Shapovalov <george@gentoo.org> hdf5-1.6.0.ebuild :
  added few chenges from #21071, added ssl to IUSE
  thanks to Donald Giuliano <guido@ou.edu> for some configure flags suggestions

  24 Aug 2003; George Shapovalov <george@gentoo.org> hdf5-1.6.0.ebuild :
  new version (#25365),
  this one installs examples, and of course in a wrong place :), had to fix location.
  thanks to James Cloos <cloos@jhcloos.com> for notification

*hdf5-1.4.5 (19 Jun 2003)

  19 Jun 2003; George Shapovalov <george@gentoo.org> hdf5-1.4.5.ebuild, Manifest, files/{digest-hdf5-1.4.5} :
  initial release (#21071)
  HDF5 is a general purpose library and file format for storing scientific data.
  ebuild submitted by Castel?o <castelao@oceanologia.net> and Shaun Cloherty <s.cloherty@gsbme.unsw.edu.au>
