# ChangeLog for sci-geosciences/viking
# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/sci-geosciences/viking/ChangeLog,v 1.9 2010/01/19 11:10:01 hanno Exp $

*viking-0.9.9 (19 Jan 2010)

  19 Jan 2010; Hanno Boeck <hanno@gentoo.org> +viking-0.9.9.ebuild:
  Version bump.

  11 Sep 2009; Mounir Lamouri <volkmar@gentoo.org> viking-0.9.8.ebuild:
  Keywording for ppc. Fix bug 275134

  10 Aug 2009; Hanno Boeck <hanno@gentoo.org> viking-0.9.8.ebuild,
  +files/viking-new-gpsd.diff:
  Patch from trunk, fixes compilation with latest gpsd.

*viking-0.9.8 (13 Feb 2009)

  13 Feb 2009; Hanno Boeck <hanno@gentoo.org> +viking-0.9.8.ebuild:
  Version bump and new URLs.

*viking-0.9.7 (14 Oct 2008)

  14 Oct 2008; Hanno Boeck <hanno@gentoo.org> +viking-0.9.7.ebuild:
  Version bump.

*viking-0.9.6 (16 Sep 2008)

  16 Sep 2008; Hanno Boeck <hanno@gentoo.org> +viking-0.9.6.ebuild:
  Version bump.

  16 Sep 2008; Hanno Boeck <hanno@gentoo.org> viking-0.9.5.ebuild:
  Add gpsbabel to RDEPEND.

*viking-0.9.5 (30 Jul 2008)

  30 Jul 2008; Hanno Boeck <hanno@gentoo.org>
  +files/viking-0.9.5-newgoogle.diff, +viking-0.9.5.ebuild:
  Version bump.

*viking-0.9.4.20080614 (24 Jun 2008)

  24 Jun 2008; Hanno Boeck <hanno@gentoo.org> +metadata.xml,
  +viking-0.9.4.20080614.ebuild:
  Initial commit of viking, program to handle gps/map-data.

