# ChangeLog for app-shells/localshell
# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/app-shells/localshell/ChangeLog,v 1.11 2009/08/09 15:14:51 ssuominen Exp $

  09 Aug 2009; Samuli Suominen <ssuominen@gentoo.org>
  localshell-1.3.1.ebuild, +files/localshell-1.3.1-glibc-2.10.patch:
  Fix building with GLIBC 2.10+ wrt #277174.

  09 Jan 2009; Robin H. Johnson <robbat2@gentoo.org> localshell-1.1.ebuild,
  localshell-1.2.ebuild:
  New homepage.

*localshell-1.3.1 (09 Jan 2009)

  09 Jan 2009; Robin H. Johnson <robbat2@gentoo.org>
  +localshell-1.3.1.ebuild:
  Version bump.

  13 Dec 2008; Diego E. Pettenò <flameeyes@gentoo.org>
  +files/localshell-1.2+gcc-4.3.patch, localshell-1.2.ebuild:
  Add patch to build with GCC 4.3, thanks to Bert Karwatzki in bug #250713.

  22 Apr 2007; Tobias Scherbaum <dertobi123@gentoo.org>
  localshell-1.2.ebuild:
  ppc stable, bug #173845

  09 Apr 2007; Peter Weller <welp@gentoo.org> localshell-1.2.ebuild:
  Stable on amd64 wrt bug 173845

  24 Jan 2007; Marius Mauch <genone@gentoo.org> localshell-1.1.ebuild,
  localshell-1.2.ebuild:
  Replacing einfo with elog

  30 Aug 2005; Robin H. Johnson <robbat2@gentoo.org> localshell-1.2.ebuild:
  Stable on x86, also add ~amd64.

  18 Jul 2005; David Holm <dholm@gentoo.org> localshell-1.1.ebuild:
  Added to ~ppc.

*localshell-1.2 (18 Jul 2005)

  18 Jul 2005; Robin H. Johnson <robbat2@gentoo.org> +localshell-1.2.ebuild:
  Upstream bump.

*localshell-1.1 (18 Jul 2005)

  18 Jul 2005; Robin H. Johnson <robbat2@gentoo.org> +metadata.xml,
  +localshell-1.1.ebuild:
  Initial commit. Ebuild and upstream package by Robin H. Johnson
  <robbat2@gentoo.org>

