# ChangeLog for x11-apps/xf86dga
# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/x11-apps/xf86dga/ChangeLog,v 1.30 2009/11/21 19:57:41 armin76 Exp $

  21 Nov 2009; Raúl Porcel <armin76@gentoo.org> xf86dga-1.0.2.ebuild:
  ia64/sparc stable

  11 Oct 2009; nixnut <nixnut@gentoo.org> xf86dga-1.0.2.ebuild:
  ppc stable #282290

  24 Sep 2009; Rémi Cardona <remi@gentoo.org> xf86dga-1.0.2.ebuild,
  +files/xf86dga-1.0.2-fix-deps.patch:
  remove useless deps on libXt, libXaw and libXmu (fixes bug #227895)

  07 Jul 2009; Jeroen Roovers <jer@gentoo.org> xf86dga-1.0.2.ebuild:
  Stable for HPPA too.

  23 Jun 2009; Tobias Klausmann <klausman@gentoo.org> xf86dga-1.0.2.ebuild:
  Stable on alpha for xorg-server-1.5/xorg-x11-7.4

  28 May 2009; Raúl Porcel <armin76@gentoo.org> xf86dga-1.0.2.ebuild:
  Add ~alpha

  05 May 2009; Christian Faulhammer <fauli@gentoo.org> xf86dga-1.0.2.ebuild:
  fix repoman warnings

  04 Oct 2008; Markus Rothe <corsair@gentoo.org> xf86dga-1.0.2.ebuild:
  Added ~ppc

  03 Oct 2008; Raúl Porcel <armin76@gentoo.org> xf86dga-1.0.2.ebuild:
  Add ~ia64 wrt #237411

  26 Sep 2008; Jeroen Roovers <jer@gentoo.org> xf86dga-1.0.2.ebuild:
  Marked ~hppa (bug #237411).

  24 Sep 2008; Alexis Ballier <aballier@gentoo.org> xf86dga-1.0.2.ebuild:
  keyword ~x86-fbsd

  31 Jan 2008; Donnie Berkholz <dberkholz@gentoo.org>;
  -files/xf86dga-1.0.1-setuid.diff, -xf86dga-1.0.1-r1.ebuild:
  Clean up.

  21 Jan 2008; Samuli Suominen <drac@gentoo.org> xf86dga-1.0.2.ebuild:
  amd64 stable.

  11 Jan 2008; Donnie Berkholz <dberkholz@gentoo.org>;
  xf86dga-1.0.1-r1.ebuild, xf86dga-1.0.2.ebuild:
  (#204654) Missed build-time dep on xf86dgaproto (Patrick Lauer).

  19 Dec 2007; Dawid Węgliński <cla@gentoo.org> xf86dga-1.0.2.ebuild:
  Stable on x86 (bug #202087)

*xf86dga-1.0.2 (21 Oct 2006)

  21 Oct 2006; Joshua Baergen <joshuabaergen@gentoo.org>
  +xf86dga-1.0.2.ebuild:
  Version bump.

  10 Oct 2006; Donnie Berkholz <dberkholz@gentoo.org>;
  xf86dga-1.0.1-r1.ebuild:
  Update description to be less generic.

  30 Jun 2006; Chris Gianelloni <wolf31o2@gentoo.org>
  xf86dga-1.0.1-r1.ebuild:
  Stable on amd64.

*xf86dga-1.0.1-r1 (20 Jun 2006)

  20 Jun 2006; Donnie Berkholz <spyderous@gentoo.org>;
  +files/xf86dga-1.0.1-setuid.diff, -xf86dga-1.0.1.ebuild,
  +xf86dga-1.0.1-r1.ebuild:
  Security bump. Failure to check the return value of setuid() in a privileged
  process could be used by a local user for file overwriting and possible
  privilege escalation in corner cases. See
  http://lists.freedesktop.org/archives/xorg/2006-June/016146.html for more
  information.

  14 Feb 2006; Markus Rothe <corsair@gentoo.org> xf86dga-1.0.1.ebuild:
  Added ~ppc64

  26 Dec 2005; Joshua Baergen <joshuabaergen@gentoo.org>
  -xf86dga-0.99.3.ebuild, -xf86dga-1.0.0.ebuild:
  Pull old versions.

*xf86dga-1.0.1 (23 Dec 2005)

  23 Dec 2005; Donnie Berkholz <spyderous@gentoo.org>;
  +xf86dga-1.0.1.ebuild:
  Bump for 7.0.

*xf86dga-1.0.0 (18 Dec 2005)

  18 Dec 2005; Joshua Baergen <joshuabaergen@gentoo.org>
  +xf86dga-1.0.0.ebuild:
  Bump for 7.0RC4.

  09 Dec 2005; Donnie Berkholz <spyderous@gentoo.org>;
  -xf86dga-0.99.0.ebuild, -xf86dga-0.99.1.ebuild, -xf86dga-0.99.2.ebuild:
  Pull old versions.

*xf86dga-0.99.3 (04 Dec 2005)

  04 Dec 2005; Joshua Baergen <joshuabaergen@gentoo.org>
  +xf86dga-0.99.3.ebuild:
  Bump for 7.0RC3.

*xf86dga-0.99.2 (11 Nov 2005)

  11 Nov 2005; Joshua Baergen <joshuabaergen@gentoo.org>
  +xf86dga-0.99.2.ebuild:
  Bump for 7.0RC2.

*xf86dga-0.99.1 (20 Oct 2005)

  20 Oct 2005; Donnie Berkholz <spyderous@gentoo.org>;
  +xf86dga-0.99.1.ebuild:
  Bump for 7.0 RC1.

  09 Sep 2005; Donnie Berkholz <spyderous@gentoo.org>; +metadata.xml:
  Add metadata.

  08 Aug 2005; Ferris McCormick <fmccor@gentoo.org> xf86dga-0.99.0.ebuild:
  Add ~sparc keyword (Modular X testing).

*xf86dga-0.99.0 (08 Aug 2005)

  08 Aug 2005; Donnie Berkholz <spyderous@gentoo.org>;
  +xf86dga-0.99.0.ebuild:
  Initial commit for modular X.

