# ChangeLog for media-video/camsource
# Copyright 2002-2007 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/media-video/camsource/ChangeLog,v 1.22 2007/07/02 18:06:14 gustavoz Exp $

  02 Jul 2007; Gustavo Zacarias <gustavoz@gentoo.org>
  camsource-0.7.1.ebuild:
  Stable on sparc wrt #181930

  27 Jun 2007; Christian Faulhammer <opfer@gentoo.org>
  camsource-0.7.1.ebuild:
  stable x86, bug 181930

  21 Jun 2007; Samuli Suominen <drac@gentoo.org> camsource-0.7.1.ebuild:
  filter-ldflags -Wl,-z,now for bug 182775.

  15 Jun 2007; Tobias Scherbaum <dertobi123@gentoo.org>
  camsource-0.7.1.ebuild:
  ppc stable, bug #181930

  14 Jun 2007; Raúl Porcel <armin76@gentoo.org> camsource-0.5.1.ebuild:
  Drop ~alpha keyword

*camsource-0.7.1 (04 Apr 2007)

  04 Apr 2007; Samuli Suominen <drac@gentoo.org>
  +files/camsource-0.7.1-example.patch, +files/camsource.initd,
  +camsource-0.7.1.ebuild:
  Version bump to unofficial release since upstream CVS has been quiet for
  three years. Thanks to Conrad Kostecki in bug 170349.

  22 Feb 2007; Piotr Jaroszyński <peper@gentoo.org> ChangeLog:
  Transition to Manifest2.

  10 Jan 2007; Diego Pettenò <flameeyes@gentoo.org> metadata.xml:
  Add missing email address for herd with name != alias.

  05 Jan 2007; Diego Pettenò <flameeyes@gentoo.org> camsource-0.5.1.ebuild,
  camsource-0.7.0.ebuild, camsource-0.7.0-r1.ebuild:
  Convert to use elog.

  03 Sep 2005; Diego Pettenò <flameeyes@gentoo.org> camsource-0.7.0.ebuild,
  camsource-0.7.0-r1.ebuild:
  Don't install COPYING and INSTALL files.

  16 Aug 2005; Luis Medinas <metalgod@gentoo.org> camsource-0.7.0-r1.ebuild:
  Added ~amd64 keywords. Closes bug #98422.

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

  01 Oct 2004; Patrick Kursawe <phosphan@gentoo.org> +files/gcc34.patch,
  camsource-0.7.0-r1.ebuild:
  Added a missing semicolon (failed with gcc 3.4).

  25 Aug 2004; Sven Wegener <swegener@gentoo.org> camsource-0.5.1.ebuild,
  camsource-0.7.0-r1.ebuild, camsource-0.7.0.ebuild:
  Changed SRC_URI to use mirror:// syntax. Removed RDEPEND="".

  25 Feb 2004; Sven Blumenstein <bazik@gentoo.org> camsource-0.7.0-r1.ebuild:
  Stable on sparc.

*camsource-0.7.0-r1 (10 Jun 2003)

  10 Jun 2003; <zhen@gentoo.org> camsource-0.7.0-r1.ebuild:
  Added ~ppc to the keywords, because it compiles fine on my ibook 750
  

*camsource-0.7.0-r1 (09 Jun 2003)

  09 Jun 2003; <zhen@gentoo.org> camsource-0.7.0-r1.ebuild:
  Initial import, I tagged it as stable because the only change
  from the 0.7.0 ebuild was that installed the necessary docs
  that came with it. I don't know why it wasn't done before,
  must have been an oversight.

*camsource-0.7.0 (09 Jun 2003)

  09 Jun 2003; <zhen@gentoo.org> camsource-0.7.0.ebuild:
  Marked as stable for x86.

*camsource-0.7.0 (05 May 2003)

  05 May 2003; <zhen@gentoo.org> camsource-0.7.0.ebuild:
  just the updated ebuild, nothing too crazy. I changed the description so it
  wasn't so fugly.

*camsource-0.5.1 (26 Nov 2002)

  26 Nov 2002; ZhEN <zhen@gentoo.org> :
  Initial import.
