# ChangeLog for sci-libs/openfoam-solvers
# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/sci-libs/openfoam-solvers/ChangeLog,v 1.4 2009/09/25 09:31:34 flameeyes Exp $

  25 Sep 2009; Diego E. Pettenò <flameeyes@gentoo.org>
  openfoam-solvers-1.5_p20090311.ebuild, -files/OpenFOAM-1.5-compile.patch:
  Move humonguous, duplicated patches to mirrors.

  13 Jun 2009; Torsten Veller <tove@gentoo.org>
  openfoam-solvers-1.5_p20090311.ebuild:
  Add missing die: "..." -> die "..."

  26 Apr 2009; Patrick Lauer <patrick@gentoo.org> metadata.xml:
  Adding Oliver Borm to metadata

*openfoam-solvers-1.5_p20090311 (25 Apr 2009)

  25 Apr 2009; Patrick Lauer <patrick@gentoo.org>
  +files/OpenFOAM-1.5-compile.patch, +files/OpenFOAM-1.5-ggi.patch,
  +metadata.xml, +openfoam-solvers-1.5_p20090311.ebuild:
  Initial import from sunrise. Thanks to Oliver Borm for the ebuild and the
  sunrise people for massaging it into shape.

  17 Apr 2009; Justin Lecher (jlec) <jlec@j-schmitz.net>
  openfoam-solvers-1.5_p20090311.ebuild:
  QA quotes around EAPI version

  14 Mar 2009; Oliver Borm (boroli) <oli.borm@web.de>
  openfoam-solvers-1.5_p20090311.ebuild, files/OpenFOAM-1.5-compile.patch,
  -files/openfoam-solvers-1.5_p20080905.patch:
  Fixed typos

  13 Mar 2009; Oliver Borm (boroli) <oli.borm@web.de>
  -openfoam-solvers-1.5_p20080905.ebuild,
  +openfoam-solvers-1.5_p20090311.ebuild, +files/OpenFOAM-1.5-ggi.patch:
  Version bump

  13 Feb 2009; Oliver Borm (boroli) <oli.borm@web.de>
  -openfoam-solvers-1.4.1_p20080827.ebuild,
  -files/openfoam-solvers-1.4.1_p20080827.patch,
  -files/openfoam-solvers-compile-1.4.1_p20080827.patch:
  Remove old version.

  20 Jan 2009; Christian Ruppert (idl0r) <spooky85@gmail.com>
  openfoam-solvers-1.4.1_p20080827.ebuild,
  openfoam-solvers-1.5_p20080905.ebuild:
  Added suggested DEPEND="${RDEPEND}", moved to EAPI 2, cleanup.

  08 Sep 2008; Oliver Borm (boroli) <oli.borm@web.de>
  -openfoam-solvers-1.5.ebuild, +openfoam-solvers-1.5_p20080905.ebuild,
  +files/openfoam-solvers-1.5_p20080905.patch:
  New patch sets

  31 Aug 2008; Thomas Sachau (Tommy[D]) <tommy@gentoo.org>
  -openfoam-solvers-1.4.1_p20080328.ebuild,
  -files/openfoam-solvers-1.4.1_p20080328.patch,
  -files/openfoam-solvers-compile-1.4.1_p20080328.patch:
  Drop old version

  28 Aug 2008; Oliver Borm (boroli) <oli.borm@web.de>
  +openfoam-solvers-1.4.1_p20080827.ebuild,
  +files/openfoam-solvers-1.4.1_p20080827.patch,
  +files/openfoam-solvers-compile-1.4.1_p20080827.patch:
  Update patches for the OpenFOAM solvers

  04 Aug 2008; Oliver Borm (boroli) <oli.borm@web.de>
  openfoam-solvers-1.4.1_p20080328.ebuild, openfoam-solvers-1.5.ebuild:
  Changed version dependencies

  28 Jul 2008; Oliver Borm (boroli) <oli.borm@web.de>
  openfoam-solvers-1.5.ebuild:
  Added the the removed quoting again.

  28 Jul 2008; Oliver Borm (boroli) <oli.borm@web.de>
  openfoam-solvers-1.5.ebuild:
  Fixed some errors due to wrong relative paths.

  26 Jul 2008; Thomas Anderson <gentoofan23@gentoo.org>
  openfoam-solvers-1.5.ebuild:
  Fix unnecessary quoting, and add some more

  22 Jul 2008; Oliver Borm (boroli) <oli.borm@web.de>
  +openfoam-solvers-1.5.ebuild, +files/OpenFOAM-1.5-compile.patch:
  Version bump to 1.5

  30 Mar 2008; Thomas Sachau (Tommy[D]) tommy@gentoo.org
  -openfoam-solvers-1.4.1_p20080118.ebuild,
  -files/openfoam-solvers-1.4.1_p20080118.patch,
  -files/openfoam-solvers-compile-1.4.1_p20080118.patch:
  Drop old version

  28 Mar 2008; Oliver Borm (boroli) <oli.borm@web.de>
  +openfoam-solvers-1.4.1_p20080328.ebuild,
  +files/openfoam-solvers-1.4.1_p20080328.patch,
  +files/openfoam-solvers-compile-1.4.1_p20080328.patch:
  Some bug fixes.

  29 Jan 2008; Oliver Borm (boroli) <oli.borm@web.de>
  +files/openfoam-solvers-1.4.1_p20080118.patch,
  +files/openfoam-solvers-compile-1.4.1_p20080118.patch, +metadata.xml,
  +openfoam-solvers-1.4.1_p20080118.ebuild:
  New Ebuild for the OpenFOAM solvers

