# ChangeLog for dev-cpp/gtksourceviewmm
# Copyright 1999-2015 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/dev-cpp/gtksourceviewmm/ChangeLog,v 1.37 2015/07/25 12:12:25 pacho Exp $

  25 Jul 2015; Pacho Ramos <pacho@gentoo.org> gtksourceviewmm-3.12.0.ebuild:
  ppc stable wrt bug #551814

  26 Jun 2015; Agostino Sarubbo <ago@gentoo.org> gtksourceviewmm-3.12.0.ebuild:
  Stable for x86, wrt bug #551814

  21 Jun 2015; Mikle Kolyada <zlogene@gentoo.org> gtksourceviewmm-3.12.0.ebuild:
  amd64 stable wrt bug #551814

*gtksourceviewmm-3.12.0 (01 May 2015)

  01 May 2015; Gilles Dartiguelongue <eva@gentoo.org>
  +gtksourceviewmm-3.12.0.ebuild:
  Version bump.

  27 Apr 2014; Pacho Ramos <pacho@gentoo.org> gtksourceviewmm-3.2.0.ebuild:
  Move to ~ppc as they won't stabilize newer deps

  05 Mar 2013; Gilles Dartiguelongue <eva@gentoo.org>
  -gtksourceviewmm-2.10.2.ebuild,
  -files/gtksourceviewmm-2.10.2-glib-2.31.patch:
  Clean up old revision.

  16 Oct 2012; Anthony G. Basile <blueness@gentoo.org>
  gtksourceviewmm-2.10.3.ebuild:
  stable ppc, bug #427544

  04 Oct 2012; Agostino Sarubbo <ago@gentoo.org> gtksourceviewmm-2.10.3.ebuild:
  Stable for amd64, wrt bug #427544

  03 Oct 2012; Pawel Hajdan jr <phajdan.jr@gentoo.org>
  gtksourceviewmm-2.10.3.ebuild:
  x86 stable wrt bug #427544

  21 Jul 2012; Pacho Ramos <pacho@gentoo.org>
  +files/gtksourceviewmm-3.2.0-glib-single-include.patch,
  -gtksourceviewmm-3.0.0.ebuild, gtksourceviewmm-3.2.0.ebuild:
  Let it compile against glib-2.32, drop old.

  24 May 2012; Samuli Suominen <ssuominen@gentoo.org>
  gtksourceviewmm-3.2.0.ebuild:
  ppc stable wrt #410611

*gtksourceviewmm-2.10.3 (22 May 2012)

  22 May 2012; Alexandre Rostovtsev <tetromino@gentoo.org>
  +gtksourceviewmm-2.10.3.ebuild:
  Version bump.

  04 May 2012; Jeff Horelick <jdhore@gentoo.org> gtksourceviewmm-2.10.2.ebuild,
  gtksourceviewmm-3.0.0.ebuild, gtksourceviewmm-3.2.0.ebuild:
  dev-util/pkgconfig -> virtual/pkgconfig

  02 May 2012; Alexandre Rostovtsev <tetromino@gentoo.org>
  gtksourceviewmm-2.10.2.ebuild, +files/gtksourceviewmm-2.10.2-glib-2.31.patch:
  Fix building with >=glib-2.31 (bug #414127, thanks to salamanderrake for
  reporting).

  29 Apr 2012; Markus Meier <maekke@gentoo.org> gtksourceviewmm-3.2.0.ebuild:
  x86 stable, bug #410611

  18 Apr 2012; Agostino Sarubbo <ago@gentoo.org> gtksourceviewmm-3.2.0.ebuild:
  Stable for amd64, wrt bug #410611

*gtksourceviewmm-3.2.0 (21 Nov 2011)

  21 Nov 2011; Gilles Dartiguelongue <eva@gentoo.org>
  -gtksourceviewmm-2.10.1.ebuild, +gtksourceviewmm-3.2.0.ebuild:
  Version bump. Clean up old revision.

  21 Oct 2011; Pawel Hajdan jr <phajdan.jr@gentoo.org>
  gtksourceviewmm-2.10.2.ebuild:
  x86 stable wrt bug #385699

  16 Oct 2011; Kacper Kowalik <xarthisius@gentoo.org>
  gtksourceviewmm-2.10.2.ebuild:
  ppc stable wrt #385699

  14 Oct 2011; Samuli Suominen <ssuominen@gentoo.org>
  gtksourceviewmm-2.10.2.ebuild:
  amd64 stable wrt #385699

  10 Oct 2011; Pacho Ramos <pacho@gentoo.org> gtksourceviewmm-2.10.2.ebuild:
  Drop .la files, bug #386665 by Ago.

  26 Jun 2011; Pacho Ramos <pacho@gentoo.org> gtksourceviewmm-2.10.2.ebuild:
  Set 'DOCS' again.

*gtksourceviewmm-2.10.2 (26 Jun 2011)

  26 Jun 2011; Pacho Ramos <pacho@gentoo.org> +gtksourceviewmm-2.10.2.ebuild:
  Version bump.

  15 Jun 2011; Pacho Ramos <pacho@gentoo.org> gtksourceviewmm-3.0.0.ebuild:
  Prepare to set 'xz' as default compressor for eapi4.

*gtksourceviewmm-3.0.0 (08 May 2011)

  08 May 2011; Gilles Dartiguelongue <eva@gentoo.org>
  +gtksourceviewmm-3.0.0.ebuild:
  Add slot 3.0 from gnome overlay, bug #361127.

  24 Jan 2011; Gilles Dartiguelongue <eva@gentoo.org>
  -gtksourceviewmm-2.2.0.ebuild, gtksourceviewmm-2.10.1.ebuild:
  Pin gtkmm and gtksourceviewmm dependencies to appropriate slot. Move DOCS to
  pkg_setup. Clean up old revision.

  11 Sep 2010; Joseph Jezak <josejx@gentoo.org>
  gtksourceviewmm-2.10.1.ebuild:
  Marked ppc for bug #324077.

  30 Aug 2010; Gilles Dartiguelongue <eva@gentoo.org>
  gtksourceviewmm-2.2.0.ebuild, gtksourceviewmm-2.10.1.ebuild:
  Add missing pkg_setup.

  01 Aug 2010; Christian Faulhammer <fauli@gentoo.org>
  gtksourceviewmm-2.10.1.ebuild:
  x86 stable, bug 324077

  31 Jul 2010; Pacho Ramos <pacho@gentoo.org> gtksourceviewmm-2.10.1.ebuild:
  amd64 stable, bug 324077

*gtksourceviewmm-2.10.1 (21 Jul 2010)

  21 Jul 2010; Pacho Ramos <pacho@gentoo.org>
  +gtksourceviewmm-2.10.1.ebuild:
  Version bump (bug #266221 by Tim Harder), also update homepage, update
  license, fix doc configure options...

  20 Jul 2010; Jeroen Roovers <jer@gentoo.org> gtksourceviewmm-2.2.0.ebuild:
  Drop HPPA keywording (bug #324511).

  30 Sep 2008; Jeroen Roovers <jer@gentoo.org> gtksourceviewmm-2.2.0.ebuild:
  Stable for HPPA (bug #229709).

  10 Aug 2008; Markus Meier <maekke@gentoo.org>
  gtksourceviewmm-2.2.0.ebuild:
  x86 stable, bug #229709

  30 Jul 2008; Brent Baude <ranger@gentoo.org> gtksourceviewmm-2.2.0.ebuild:
  Marking gtksourceviewmm-2.2.0 ppc stable for bug 229709

  27 Jul 2008; Olivier Crête <tester@gentoo.org>
  gtksourceviewmm-2.2.0.ebuild:
  Stable on amd64, bug #229709

*gtksourceviewmm-2.2.0 (19 May 2008)

  19 May 2008; Rémi Cardona <remi@gentoo.org> +metadata.xml,
  +gtksourceviewmm-2.2.0.ebuild:
  New package gtksourceviewmm which is just a rename of libgtksourceviewmm,
  API and installed files are the same
