# ChangeLog for sci-electronics/vbs
# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/sci-electronics/vbs/ChangeLog,v 1.8 2009/07/11 04:14:09 calchan Exp $

  11 Jul 2009; Denis Dupeyron <calchan@gentoo.org> vbs-1.4.0.ebuild:
  Fixed compatibility with glibc 2.10, thanks to Diego Pettenò (bug
  #276734).

  16 Feb 2009; Peter Alfredsen <loki_val@gentoo.org>
  +files/vbs-1.4.0-gcc-4.3.patch, vbs-1.4.0.ebuild:
  Add gcc-4.3 patch per bug 251627. Thanks to Gene Seto
  <geneseto@hotmail.com> for the patch.

  09 Mar 2007; Denis Dupeyron <calchan@gentoo.org>
  +files/vbs-1.4.0-gcc-4.1.patch, -files/vbs-gcc-3.4.patch,
  vbs-1.4.0.ebuild:
  Cleanups and gcc 4.1 compatibility fixes.

  21 Feb 2007; Denis Dupeyron <calchan@gentoo.org> files/digest-vbs-1.4.0,
  Manifest:
  Transition to Manifest2.

  02 Jul 2006; Denis Dupeyron <calchan@gentoo.org> metadata.xml:
  Adjusted metadata, see bug #138062.

  17 May 2005; Michael Hanselmann <hansmi@gentoo.org> vbs-1.4.0.ebuild:
  Stable on ppc.

*vbs-1.4.0 (27 Dec 2004)

  27 Dec 2004; Olivier Fisette <ribosome@gentoo.org> +metadata.xml,
  +files/vbs-gcc-3.4.patch, +vbs-1.4.0.ebuild:
  Moved from app-sci/vbs to sci-electronics/vbs.

  03 Oct 2004; <plasmaroo@gentoo.org> vbs-1.4.0.ebuild,
  +files/vbs-gcc-3.4.patch:
  Patching VBS for gcc-3.4; bug #65613.

  05 Jun 2004; David Holm <dholm@gentoo.org> vbs-1.4.0.ebuild:
  Added to ~ppc.

  19 Apr 2004; Patrick Kursawe <phosphan@gentoo.org> vbs-1.4.0.ebuild:
  Adding IUSE

*vbs-1.4.0 (30 Nov 2003)

  30 Nov 2003; <plasmaroo@gentoo.org> vbs-1.4.0.ebuild:
  Initial commit...

