# ChangeLog for app-portage/eclass-manpages
# Copyright 1999-2015 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/app-portage/eclass-manpages/ChangeLog,v 1.37 2015/01/13 22:08:06 floppym Exp $

  13 Jan 2015; Mike Gilbert <floppym@gentoo.org>
  -eclass-manpages-20120718.ebuild, -eclass-manpages-20130110.ebuild,
  eclass-manpages-20150113.ebuild:
  Stable for all. Remove old.

*eclass-manpages-20150113 (13 Jan 2015)

  13 Jan 2015; Mike Gilbert <floppym@gentoo.org>
  +eclass-manpages-20150113.ebuild:
  Bump.

  11 Jan 2013; Mike Frysinger <vapier@gentoo.org>
  eclass-manpages-20130110.ebuild:
  Re-add bash call #451352 by Justin Lecher.

  10 Jan 2013; Mike Frysinger <vapier@gentoo.org> files/eclass-to-manpage.awk:
  Add optional @BUGREPORTS and @VCSURL fields so people can point their eclasses
  in their overlays to their own trackers.

  10 Jan 2013; Mike Frysinger <vapier@gentoo.org>
  eclass-manpages-20130110.ebuild:
  Update to EAPI=4.

*eclass-manpages-20130110 (10 Jan 2013)

  10 Jan 2013; Mike Frysinger <vapier@gentoo.org>
  +eclass-manpages-20130110.ebuild:
  Version bump.  Support all overlays if available.

*eclass-manpages-20120718 (18 Jul 2012)

  18 Jul 2012; Mike Frysinger <vapier@gentoo.org>
  +eclass-manpages-20120718.ebuild, -eclass-manpages-20100821.ebuild,
  -eclass-manpages-20111014.ebuild, files/eclass-to-manpage.awk:
  Add support for @ROFF (idea from Ulrich Müller), and escape any leading .
  chars in comments to avoid mangling of the content #420153 by Michał Górny.

  18 Jul 2012; Mike Frysinger <vapier@gentoo.org> files/eclass-to-manpage.awk:
  Error out when we hit an unknown keyword in an @ECLASS block.

  18 Jul 2012; Mike Frysinger <vapier@gentoo.org> files/eclass-to-manpage.sh:
  Add a -d (debugger) flag to quickly run dgawk.

  08 Dec 2011; Sergei Trofimovich <slyfox@gentoo.org>
  eclass-manpages-20100821.ebuild, eclass-manpages-20111014.ebuild:
  Removed blocker on app-portage/portage-manpages (not in tree for 3 years now).

  24 Nov 2011; Mike Frysinger <vapier@gentoo.org> files/eclass-to-manpage.awk:
  Add checks for duplicate func/var documentation (copy & paste).

  17 Oct 2011; Justin Lecher <jlec@gentoo.org> metadata.xml,
  eclass-manpages-20111014.ebuild:
  Call bash instead the script directly, because things in FILESDIR might not be
  executable

*eclass-manpages-20111014 (14 Oct 2011)

  14 Oct 2011; Mike Frysinger <vapier@gentoo.org>
  +eclass-manpages-20111014.ebuild, +files/eclass-to-manpage.sh:
  Split out generation logic so people can quickly run it by hand when updating
  their eclasses.

  22 Aug 2011; Mike Frysinger <vapier@gentoo.org> files/eclass-to-manpage.awk:
  Add sources.g.o url to SEE ALSO.

  22 Aug 2011; Mike Frysinger <vapier@gentoo.org> files/eclass-to-manpage.awk:
  Add support for @AUTHOR block since people are going to cram it in there
  otherwise #375975 by Ralph Sennhauser.

  20 Jul 2011; Mike Frysinger <vapier@gentoo.org> files/eclass-to-manpage.awk:
  Add @INTERNAL support #375545 by Ralph Sennhauser.

  10 Feb 2011; Ulrich Mueller <ulm@gentoo.org> files/eclass-to-manpage.awk:
  Add UTF-8 coding tag, bug 244499.

  19 Oct 2010; Mart Raudsepp <leio@gentoo.org>
  eclass-manpages-20100821.ebuild:
  Drop to ~mips

*eclass-manpages-20100821 (21 Aug 2010)

  21 Aug 2010; Mike Frysinger <vapier@gentoo.org>
  +eclass-manpages-20100821.ebuild:
  Bump to push out accumulated changes in the tree.

  01 Jan 2010; Christian Faulhammer <fauli@gentoo.org>
  eclass-manpages-20091209.ebuild:
  Transfer Prefix keywords

*eclass-manpages-20091209 (09 Dec 2009)

  09 Dec 2009; Mike Frysinger <vapier@gentoo.org>
  +eclass-manpages-20091209.ebuild, files/eclass-to-manpage.awk:
  Detect variables given default values via :${var:=val}.

*eclass-manpages-20091007 (07 Oct 2009)

  07 Oct 2009; Mike Frysinger <vapier@gentoo.org>
  +eclass-manpages-20091007.ebuild:
  Bump to push out accumulated changes in the tree.

  30 Aug 2008; Mike Frysinger <vapier@gentoo.org>
  eclass-manpages-20080531.ebuild:
  Stabilize.

  02 Jun 2008; Zac Medico <zmedico@gentoo.org>
  eclass-manpages-20070615.ebuild, eclass-manpages-20080531.ebuild:
  Bug #224421 - Drop the webapp-config blocker since it no longer
  installs webapp.eclass.5.

*eclass-manpages-20080531 (01 Jun 2008)

  01 Jun 2008; Mike Frysinger <vapier@gentoo.org>
  +eclass-manpages-20080531.ebuild:
  Bump to push out accumulated changes in the tree.

  25 May 2008; Zac Medico <zmedico@gentoo.org>
  eclass-manpages-20070615.ebuild:
  Block app-admin/webapp-config due to webapp.eclass.5 file collision.

  19 Feb 2008; Doug Klima <cardoe@gentoo.org> metadata.xml:
  fix herd

  19 Feb 2008; Mike Frysinger <vapier@gentoo.org>
  files/eclass-to-manpage.awk:
  Add a new "@DEAD" tag so we skip dead eclasses.

  19 Feb 2008; Mike Frysinger <vapier@gentoo.org>
  files/eclass-to-manpage.awk:
  Do not abort if @DESCRIPTION is not set #209665 by mren.

  01 Sep 2007; Mike Frysinger <vapier@gentoo.org>
  files/eclass-to-manpage.awk:
  Add support for global-scope variables #190871 and improve handling of
  variables and errors in general.

  30 Aug 2007; Ulrich Mueller <ulm@gentoo.org> files/eclass-to-manpage.awk:
  Finally fix whitespace issues of bug #184779.

  07 Aug 2007; Mike Frysinger <vapier@gentoo.org>
  files/eclass-to-manpage.awk:
  Add support for @VARIABLE descriptions.
  Add support for @RETURN values.
  Add support for @CODE and re-order trailing sections.

  02 Aug 2007; Zac Medico <zmedico@gentoo.org> eclass-manpages-20070615.ebuild:
  Block app-portage/portage-manpages due to eutils.eclass.5 file collision.

  24 Jul 2007; Mike Frysinger <vapier@gentoo.org>
  files/eclass-to-manpage.awk:
  Dont require trailing whitespace to continue paragraphs as that just sets
  off QA checkers #184779 by Ulrich Mueller.

*eclass-manpages-20070615 (16 Jun 2006)

  16 Jun 2006; Mike Frysinger <vapier@gentoo.org> :
  Initial import.  Ebuild submitted by me.
