# ChangeLog for app-text/atril
# Copyright 1999-2016 Gentoo Foundation; Distributed under the GPL v2
# (auto-generated from git log)

*atril-1.8.1 (09 Aug 2015)
*atril-1.8.0 (09 Aug 2015)

  09 Aug 2015; Robin H. Johnson <robbat2@gentoo.org> +atril-1.8.0.ebuild,
  +atril-1.8.1.ebuild, +metadata.xml:
  proj/gentoo: Initial commit

  This commit represents a new era for Gentoo:
  Storing the gentoo-x86 tree in Git, as converted from CVS.

  This commit is the start of the NEW history.
  Any historical data is intended to be grafted onto this point.

  Creation process:
  1. Take final CVS checkout snapshot
  2. Remove ALL ChangeLog* files
  3. Transform all Manifests to thin
  4. Remove empty Manifests
  5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$
  5.1. Do not touch files with -kb/-ko keyword flags.

  Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
  X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration
  tests
  X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this
  project
  X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo
  developer, wrote Git features for the migration
  X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve
  cvs2svn
  X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts
  X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014
  work in migration
  X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging
  X-Thanks: All of other Gentoo developers - many ideas and lots of paint on
  the bikeshed

  24 Aug 2015; Justin Lecher <jlec@gentoo.org> metadata.xml:
  Use https by default

  Convert all URLs for sites supporting encrypted connections from http to
  https

  Signed-off-by: Justin Lecher <jlec@gentoo.org>

  24 Aug 2015; Mike Gilbert <floppym@gentoo.org> metadata.xml:
  Revert DOCTYPE SYSTEM https changes in metadata.xml

  repoman does not yet accept the https version.
  This partially reverts eaaface92ee81f30a6ac66fe7acbcc42c00dc450.

  Bug: https://bugs.gentoo.org/552720

  01 Jan 2016; NP-Hardass <NP-Hardass@gentoo.org> atril-1.8.0.ebuild,
  atril-1.8.1.ebuild, metadata.xml:
  mask USE flag 'ps' and rename it to 'postscript' #564422

  Local use flag 'ps' enables postscript support. However, the global USE
  flag 'postscript' provides the same meaning. Mask the old 'ps' use flag
  in package.use.mask of the base profile and rename it to 'postscript'.

  Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=564422

  Package-Manager: portage-2.2.24
  Signed-off-by: NP-Hardass <NP-Hardass@gentoo.org>

  24 Jan 2016; Michał Górny <mgorny@gentoo.org> metadata.xml:
  Replace all herds with appropriate projects (GLEP 67)

  Replace all uses of herd with appropriate project maintainers, or no
  maintainers in case of herds requested to be disbanded.

  24 Jan 2016; Michał Górny <mgorny@gentoo.org> metadata.xml:
  Set appropriate maintainer types in metadata.xml (GLEP 67)

*atril-1.10.3 (09 Feb 2016)

  09 Feb 2016; NP-Hardass <NP-Hardass@gentoo.org> +atril-1.10.3.ebuild,
  metadata.xml:
  Import 1.10.x from Project:MATE repo

  Package-Manager: portage-2.2.26

*atril-1.10.3-r1 (10 Feb 2016)

  10 Feb 2016; NP-Hardass <NP-Hardass@gentoo.org> -atril-1.10.3.ebuild,
  +atril-1.10.3-r1.ebuild:
  Fix missing configure option. Thanks to joost_op

  Package-Manager: portage-2.2.26

  06 Mar 2016; Mikle Kolyada <zlogene@gentoo.org> atril-1.8.1.ebuild:
  amd64 stable wrt bug #573048

  Package-Manager: portage-2.2.26

  15 Mar 2016; Agostino Sarubbo <ago@gentoo.org> atril-1.8.1.ebuild:
  x86 stable wrt bug #573048

  Package-Manager: portage-2.2.26
  RepoMan-Options: --include-arches="x86"
  Signed-off-by: Agostino Sarubbo <ago@gentoo.org>

*atril-1.10.3-r2 (26 Mar 2016)

  26 Mar 2016; NP-Hardass <NP-Hardass@gentoo.org> -atril-1.10.3-r1.ebuild,
  +atril-1.10.3-r2.ebuild:
  Fix epub USE flag. #578220, Thanks to Klaus Kusche

  Package-Manager: portage-2.2.26

  26 Mar 2016; NP-Hardass <NP-Hardass@gentoo.org> -atril-1.8.0.ebuild:
  Drop old

  Package-Manager: portage-2.2.26

  20 Apr 2016; Michał Górny <mgorny@gentoo.org> metadata.xml:
  Fix libgxps ref

  30 May 2016; Mikle Kolyada <zlogene@gentoo.org> atril-1.10.3-r2.ebuild:
  Add ~arm keyword wrt bug #508072

  Package-Manager: portage-2.2.28

  25 Jul 2016; NP-Hardass <NP-Hardass@gentoo.org> atril-1.10.3-r2.ebuild:
  amd64 x86 stable wrt bug #579644

  Package-Manager: portage-2.2.28

  06 Aug 2016; NP-Hardass <NP-Hardass@gentoo.org> -atril-1.8.1.ebuild:
  Drop 1.8.x

  Package-Manager: portage-2.2.26

*atril-1.12.2-r3 (12 Aug 2016)

  12 Aug 2016; NP-Hardass <NP-Hardass@gentoo.org> +atril-1.12.2-r3.ebuild,
  metadata.xml:
  1.12.x vbump, add gtk3 support, import from project repo

  Package-Manager: portage-2.3.0

  12 Aug 2016; NP-Hardass <NP-Hardass@gentoo.org> metadata.xml:
  Fix typo in metadata.xml

  Package-Manager: portage-2.3.0

