# ChangeLog for app-text/trang
# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/app-text/trang/ChangeLog,v 1.24 2010/03/04 17:05:54 betelgeuse Exp $

  04 Mar 2010; Petteri Räty <betelgeuse@gentoo.org> trang-20091111.ebuild,
  +files/test.xml:
  Add src_test.

  04 Mar 2010; Petteri Räty <betelgeuse@gentoo.org> trang-20091111.ebuild,
  files/build.xml:
  Migrate to EANT_GENTOO_CLASSPATH.

*trang-20091111 (04 Mar 2010)

  04 Mar 2010; Petteri Räty <betelgeuse@gentoo.org> +trang-20091111.ebuild,
  +files/build.xml:
  Version bump. Fixes bug #258643. Thanks to Ralph Sennhauser
  <gentoo.sera@bluewin.ch>.

  02 Jul 2007; Ulrich Mueller <ulm@gentoo.org> metadata.xml:
  Remove emacs herd from metadata.

  04 May 2007; Petteri Räty <betelgeuse@gentoo.org>
  trang-20030619-r3.ebuild:
  Prefer virtual/jdk-1.5 over virtual/jdk-1.4.

  02 Mar 2007; Christian Faulhammer <opfer@gentoo.org>
  trang-20030619-r3.ebuild:
  adjusted DESCRIPTION: removed ebuild name

  04 Feb 2007; Vlastimil Babka <caster@gentoo.org> -files/build.xml,
  -trang-20030619-r1.ebuild, -trang-20030619-r2.ebuild:
  Cleanup.

  03 Feb 2007; Steve Dibb <beandog@gentoo.org> trang-20030619-r3.ebuild:
  amd64 stable, bug 157328

  02 Jan 2007; Andrej Kacian <ticho@gentoo.org> trang-20030619-r3.ebuild:
  Stable on x86, bug #157328.

  30 Nov 2006; Vlastimil Babka <caster@gentoo.org> trang-20030619-r1.ebuild,
  trang-20030619-r2.ebuild, trang-20030619-r3.ebuild:
  Fix xerces-2 dep to ensure it pulls ebuild of the right slot.

*trang-20030619-r3 (25 Nov 2006)

  25 Nov 2006; Petteri Räty <betelgeuse@gentoo.org> +files/build-r1.xml,
  +trang-20030619-r3.ebuild:
  Added doc and source use flags and fixed compile to properly use both 1.3
  and 2 slots of xerces.

*trang-20030619-r2 (24 Nov 2006)

  24 Nov 2006; Christian Faulhammer <opfer@gentoo.org>
  trang-20030619-r1.ebuild, +trang-20030619-r2.ebuild:
  added dependency on xerces-2 in -r1, as reported in bug #121599 by Josh Sled
  <jsled-gentoo@asynchronous.org>. -r2 is a version ported to new Java system
  with the help from three Java guys on IRC: nichoj, caster and betelgeuse,
  they spotted a lot! Hand-crafted launcher removed, we use java-dolauncher
  now; correct header date; some cosmetic changes (obsolte cd ${S} e.g.);
  compiler selection via java-config not by USE flags

  12 Jul 2005; Thomas Matthijs <axxo@gentoo.org> trang-20030619-r1.ebuild:
  Deps/Style fixs

  15 May 2005; Jan Brinkmann <luckyduck@gentoo.org>
  trang-20030619-r1.ebuild:
  stable on amd64

  03 May 2005; Jan Brinkmann <luckyduck@gentoo.org> -trang-20030619.ebuild,
  trang-20030619-r1.ebuild:
  stable on x86, fixed xerces depend and added ~amd64 to KEYWORDS.

  20 Jan 2005; Jan Brinkmann <luckyduck@gentoo.org> trang-20030619-r1.ebuild:
  added missing dependencies (jikes, unzip)

*trang-20030619-r1 (14 Nov 2004)

  14 Nov 2004; Thomas Matthijs <axxo@gentoo.org> +files/build.xml,
  +trang-20030619-r1.ebuild:
  build from source, submitted by Jan Brinkmann <lucky@the-luckyduck.de>

  03 Nov 2004; Thomas Matthijs <axxo@gentoo.org> trang-20030619.ebuild:
  depend on app-arch/unzip

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

  23 Aug 2004; Chris Aniszczyk <zx@gentoo.org> trang-20030619.ebuild:
  Marking stable on x86

  01 Aug 2004; Michael Sterrett <mr_bones_@gentoo.org> trang-20030619.ebuild:
  dev-java/saxon -> dev-java/saxon-bin

*trang-20030619 (13 May 2004)

  13 May 2004; <mkennedy@gentoo.org> +metadata.xml, +trang-20030619.ebuild:
  Initial port.  Ebuild contributed by Matthew Kennedy <mkennedy@gentoo.org>

