# ChangeLog for www-servers/gorg
# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/www-servers/gorg/ChangeLog,v 1.23 2009/12/25 14:14:13 graaff Exp $

  25 Dec 2009; Hans de Graaff <graaff@gentoo.org> gorg-0.6.3-r2.ebuild,
  gorg-0.6.3-r3.ebuild, gorg-0.6.4.ebuild:
  Remove obsolete virtual/ruby dependency.

*gorg-0.6.4 (17 Oct 2009)

  17 Oct 2009; Alex Legler <a3li@gentoo.org> +gorg-0.6.4.ebuild:
  Version bump, fixes caching, bug 289391

*gorg-0.6.3-r3 (24 Aug 2009)

  24 Aug 2009; Lance Albertson <ramereth@gentoo.org> +gorg-0.6.3-r3.ebuild:
  Add www-server/mod_fcgid dep if both apache2 & fastcgi use flags are
  enabled.
  Fixes bug #251177

  13 Jun 2009; Hans de Graaff <graaff@gentoo.org> -gorg-0.5.ebuild,
  -gorg-0.6.3.ebuild, -gorg-0.6.3-r1.ebuild:
  Remove old versions.

  06 Jun 2009; nixnut <nixnut@gentoo.org> gorg-0.6.3-r2.ebuild:
  ppc stable #271954

  03 Jun 2009; Markus Meier <maekke@gentoo.org> gorg-0.6.3-r2.ebuild:
  amd64/x86 stable, bug #271954

*gorg-0.6.3-r2 (30 Dec 2008)

  30 Dec 2008; Hans de Graaff <graaff@gentoo.org> +gorg-0.6.3-r2.ebuild:
  Add apache2 and fastcgi USE flags as requested in #251177 and how we handle
  this for other similar packages. Move to EAPI=2 so that we can handle the
  mysql USE flag dependency on ruby-dbi better. Don't depend directly on
  underlying dependencies of ruby-dbi and ruby-fcgi. Fix variable quoting.

  05 Sep 2007; Joshua Nichols <nichoj@gentoo.org> gorg-0.5.ebuild,
  gorg-0.6.3.ebuild, gorg-0.6.3-r1.ebuild:
  Removed apache and fastcgi messages. Displays a message during postinstall
  now. See bug #186107.

  29 Jul 2007; Christian Heim <phreak@gentoo.org> gorg-0.5.ebuild,
  gorg-0.6.3.ebuild, gorg-0.6.3-r1.ebuild:
  Fixing the DEPEND/RDEPEND for the move of net-www/apache to
  www-servers/apache (#78622).

  23 Apr 2007; <rb@gentoo.org> gorg-0.6.3-r1.ebuild:
  EAPI shouldn't have been set

*gorg-0.6.3-r1 (23 Apr 2007)

  23 Apr 2007; Richard Brown <rbrown@gentoo.org> metadata.xml,
  -gorg-0.6.ebuild, -gorg-0.6.1.ebuild, +gorg-0.6.3-r1.ebuild:
  Fix bug #133713, #173748, #175204. Remove old versions

  19 Apr 2007; Richard Brown <rbrown@gentoo.org> gorg-0.6.3.ebuild:
  dev-db/mysql => virtual/mysql

*gorg-0.6.3 (08 Mar 2007)

  08 Mar 2007; <genstef@gentoo.org> +gorg-0.6.3.ebuild:
  Version bump for neysx, bug 137258

  10 Feb 2007; Steve Dibb <beandog@gentoo.org> gorg-0.6.1.ebuild:
  Add ~amd64

  23 Nov 2006; Francesco Riosa <vivo@gentoo.org> gorg-0.6.ebuild,
  gorg-0.6.1.ebuild:
  dev-db/mysql => virtual/mysql

  19 Aug 2006; Tobias Scherbaum <dertobi123@gentoo.org> gorg-0.5.ebuild:
  ppc stable

*gorg-0.6.1 (18 May 2006)

  18 May 2006; Lance Albertson <ramereth@gentoo.org> +gorg-0.6.1.ebuild:
  * Version bump
  * Fixed +x bit issue with *.cgi/*.fcgi files

*gorg-0.6 (30 Apr 2006)

  30 Apr 2006; Lance Albertson <ramereth@gentoo.org> +gorg-0.6.ebuild:
  * Version bump

  28 Mar 2006; Diego Pettenò <flameeyes@gentoo.org> gorg-0.5.ebuild:
  Fix keepdir.

  15 Dec 2005; Diego Pettenò <flameeyes@gentoo.org> gorg-0.5.ebuild:
  Added ~amd64 keyword as per bug #104720.

  25 Sep 2005; Tobias Scherbaum <dertobi123@gentoo.org> gorg-0.5.ebuild:
  Added to ~ppc

  13 May 2005; Lance Albertson <ramereth@gentoo.org> gorg-0.5.ebuild:
  Marked stable on x86

*gorg-0.5 (30 Apr 2005)

  30 Apr 2005; Lance Albertson <ramereth@gentoo.org> +metadata.xml,
  +gorg-0.5.ebuild:
  initial commit, thanks neysx for the initial ebuild

