# ChangeLog for games-emulation/hugo
# Copyright 2000-2006 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/games-emulation/hugo/ChangeLog,v 1.7 2006/10/09 21:43:56 nyhm Exp $

  09 Oct 2006; Tristan Heaven <nyhm@gentoo.org> hugo-2.12.ebuild:
  Add gtk+-2 to DEPEND

  02 May 2006; <Tupone@gentoo.org> +files/hugo-2.12-gcc41.patch,
  hugo-2.12.ebuild:
  Fixing gcc-4.1 compilation

  10 Feb 2006; Chris Gianelloni <wolf31o2@gentoo.org> -hugo-2.09.ebuild,
  hugo-2.12.ebuild:
  Added modular X dependencies and closing bug #121620.

*hugo-2.12 (29 Nov 2005)

  29 Nov 2005; Michael Sterrett <mr_bones_@gentoo.org> +hugo-2.12.ebuild:
  version bump - ebuild submitted by Steve Carlson via bug #113871

  01 Jul 2004; Jeremy Huddleston <eradicator@gentoo.org> hugo-2.09.ebuild:
  virtual/glibc -> virtual/libc

*hugo-2.09 (11 Jan 2004)

  11 Jan 2004; Mike Frysinger <vapier@gentoo.org> :
  Initial import.  Ebuild submitted by Chris Aniszczyk <zx@mea-culpa.net> #37760.
