# ChangeLog for media-gfx/opcion
# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/media-gfx/opcion/ChangeLog,v 1.19 2010/03/09 11:31:13 abcd Exp $

  09 Mar 2010; Jonathan Callen <abcd@gentoo.org> opcion-1.1.1-r2.ebuild:
  QA: When not using an absolute path, you MUST NOT use a file extension
  (.png, .svg, or .xpm) on the icon name for make_desktop_entry; use newicon
  instead of insinto/newins

  25 Oct 2008; Peter Volkov <pva@gentoo.org> -opcion-1.1.1-r1.ebuild:
  Removed old.

  25 Oct 2008; nixnut <nixnut@gentoo.org> opcion-1.1.1-r2.ebuild:
  Stable on ppc wrt bug 241726

  24 Oct 2008; Markus Meier <maekke@gentoo.org> opcion-1.1.1-r2.ebuild:
  x86 stable, bug #241726

  23 Oct 2008; Jeremy Olexa <darkside@gentoo.org> opcion-1.1.1-r2.ebuild:
  amd64 stable, bug 241726

*opcion-1.1.1-r2 (21 Aug 2008)

  21 Aug 2008; Peter Volkov <pva@gentoo.org> +opcion-1.1.1-r2.ebuild:
  Added desktop menu entry.

  15 Jan 2008; Ryan Hill <dirtyepic@gentoo.org> opcion-1.1.1-r1.ebuild:
  Add missing app-arch/unzip DEPEND for bug #205836.

  24 Oct 2007; William L. Thomson Jr. <wltjr@gentoo.org>
  -opcion-1.1.1.ebuild:
  Removed java gen 1 ebuild

  24 Aug 2007; Tobias Scherbaum <dertobi123@gentoo.org>
  opcion-1.1.1-r1.ebuild:
  ppc stable, bug #189383

  22 Aug 2007; Christian Faulhammer <opfer@gentoo.org>
  opcion-1.1.1-r1.ebuild:
  stable x86, bug 189383

  19 Aug 2007; William L. Thomson Jr. <wltjr@gentoo.org>
  opcion-1.1.1-r1.ebuild:
  amd64 stable, bug #189383.

*opcion-1.1.1-r1 (29 Apr 2007)

  29 Apr 2007; Vlastimil Babka <caster@gentoo.org>
  +files/opcion-1.1.1-fix-source.patch, +opcion-1.1.1-r1.ebuild:
  Revbump for migration to gen-2 eclasses and building from source instead of
  just installing upstream's jar. Introduces jgoodies-looks-1.2 dependency
  that upstream bundles in its jar.

  22 Nov 2006; Christian Faulhammer <opfer@gentoo.org> opcion-1.1.1.ebuild:
  stable x86, bug #155740

  20 Nov 2006; <blubb@gentoo.org> opcion-1.1.1.ebuild:
  stable on amd64

  20 Nov 2006; nixnut <nixnut@gentoo.org> opcion-1.1.1.ebuild:
  Stable on ppc wrt bug 155740

  07 Apr 2006; Scott Stoddard <deltacow@gentoo.org> opcion-1.1.1.ebuild:
  Added ~amd64 (bug #127517)

  17 Oct 2004; David Holm <dholm@gentoo.org> opcion-1.1.1.ebuild:
  Added to ~ppc.

  17 Oct 2004; Thomas Matthijs <axxo@gentoo.org> opcion-1.1.1.ebuild:
  dojar --> java-pkg_dojar

*opcion-1.1.1 (02 Oct 2004)

  02 Oct 2004; Mamoru KOMACHI <usata@gentoo.org> +metadata.xml,
  +opcion-1.1.1.ebuild:
  Initial import. This closes bug #54307.

