# ChangeLog for dev-ada/adasockets
# Copyright 2002-2007 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/dev-ada/adasockets/ChangeLog,v 1.18 2007/05/27 09:41:18 george Exp $

  27 May 2007; George Shapovalov <george@gentoo.org>
  adasockets-1.8.4.7.ebuild:
  added autotools fix (#165577)

  26 May 2007; George Shapovalov <george@gentoo.org>
  -adasockets-1.7-r1.ebuild, -adasockets-1.8.4.4.ebuild:
  removed old style versions

  25 Jan 2007; Marius Mauch <genone@gentoo.org> adasockets-1.7-r1.ebuild,
  adasockets-1.8.4.4.ebuild:
  Replacing einfo with elog

*adasockets-1.8.4.7 (09 Jun 2006)

  09 Jun 2006; George Shapovalov <george@gentoo.org>
  +adasockets-1.8.4.7.ebuild:
  new version, converted to use new style gnat compilers and gnat.eclass
  (##111340, 134259)

  13 May 2006; George Shapovalov <george@gentoo.org>
  adasockets-1.7-r1.ebuild, adasockets-1.8.4.4.ebuild:
  removed inherit gnat until adapted for new eclass

  24 Apr 2005; Michael Hanselmann <hansmi@gentoo.org>
  adasockets-1.7-r1.ebuild:
  Stable on ppc.

*adasockets-1.8.4.4 (23 Feb 2005)

  23 Feb 2005; David Holm <dholm@gentoo.org> +adasockets-1.8.4.4.ebuild:
  Version bumped, added fixes from Maxim Reznik <reznikmm (at) front (dot) ru>
  (Closing bug #61898)

  23 Feb 2005; David Holm <dholm@gentoo.org> adasockets-1.7-r1.ebuild:
  Fixed gnat dependency

  29 Jun 2004; Aron Griffis <agriffis@gentoo.org> adasockets-1.7-r1.ebuild:
  add sed-4 dep

  28 Oct 2003; David Holm <dholm@gentoo.org> adasockets-1.7-r1.ebuild:
  Added to ADA_INCLUDE_PATH and ADA_OBJECTS_PATH.

  06 Oct 2003; David Holm <dholm@gentoo.org> adasockets-1.7-r1.ebuild,
  adasockets-1.7.ebuild:
  Moved to stable on x86.

  18 Sep 2003; David Holm <dholm@gentoo.org> adasockets-1.7-r1.ebuild:
  Added to ~ppc.

  17 Aug 2003; David Holm <dholm@gentoo.org> metadata.xml:
  Added <longdescription>-tag to metadata.xml.

*adasockets-1.7-r1 (15 Aug 2003)

  15 Aug 2003; David Holm <dholm@gentoo.org> adasockets-1.7-r1.ebuild:
  The shared libraries are now symlinked into /usr/lib. adasockets-config will
  now return valid compiler-flags.

*adasockets-1.7 (12 Aug 2003)

  12 Aug 2003; George Shapovalov <george@gentoo.org> adasockets-1.7.ebuild, Manifest, files/{digest-adasockets-1.7} :
  initial release (#23822)
  An Interface to BSD sockets from Ada (TCP, UDP and multicast).
  ebuild submitted by David Holm <dholm@gentoo.org>
