# ChangeLog for dev-python/cairocffi
# Copyright 1999-2016 Gentoo Foundation; Distributed under the GPL v2
# (auto-generated from git log)

*cairocffi-0.7.2 (09 Aug 2015)
*cairocffi-0.7.1 (09 Aug 2015)
*cairocffi-0.6-r1 (09 Aug 2015)
*cairocffi-0.6 (09 Aug 2015)
*cairocffi-0.5.4 (09 Aug 2015)
*cairocffi-0.5.3-r1 (09 Aug 2015)

  09 Aug 2015; Robin H. Johnson <robbat2@gentoo.org>
  +cairocffi-0.5.3-r1.ebuild, +cairocffi-0.5.4.ebuild, +cairocffi-0.6.ebuild,
  +cairocffi-0.6-r1.ebuild, +cairocffi-0.7.1.ebuild, +cairocffi-0.7.2.ebuild,
  +files/cairocffi-0.7.1-test.patch, +files/mapping.patch, +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

  23 Aug 2015; Sean Vig <sean.v.775@gmail.com> cairocffi-0.5.3-r1.ebuild,
  cairocffi-0.5.4.ebuild, cairocffi-0.6.ebuild, cairocffi-0.6-r1.ebuild,
  cairocffi-0.7.1.ebuild, cairocffi-0.7.2.ebuild:
  Don't enable pypy Python target on dev-python/cffi

  Also, check that new enough (>=2.6.0) PyPy installed to ensure correct
  cffi version.

  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

  24 Sep 2015; Justin Lecher <jlec@gentoo.org> -cairocffi-0.5.3-r1.ebuild,
  -cairocffi-0.5.4.ebuild, -cairocffi-0.6-r1.ebuild, -cairocffi-0.7.1.ebuild:
  Clean old

  Package-Manager: portage-2.2.21
  Signed-off-by: Justin Lecher <jlec@gentoo.org>

  24 Sep 2015; Agostino Sarubbo <ago@gentoo.org> cairocffi-0.7.2.ebuild:
  amd64 stable wrt bug #561362

  Package-Manager: portage-2.2.20.1
  RepoMan-Options: --include-arches="amd64"

  25 Sep 2015; Agostino Sarubbo <ago@gentoo.org> cairocffi-0.7.2.ebuild:
  x86 stable wrt bug #561362

  Package-Manager: portage-2.2.20.1
  RepoMan-Options: --include-arches="x86"

  25 Sep 2015; Justin Lecher <jlec@gentoo.org> -cairocffi-0.6.ebuild:
  Drop old

  Package-Manager: portage-2.2.21
  Signed-off-by: Justin Lecher <jlec@gentoo.org>

  17 Jan 2016; Tim Harder <radhermit@gentoo.org> cairocffi-0.7.2.ebuild:
  add py3.5 support

  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)

  09 Oct 2016; Jeroen Roovers <jer@gentoo.org> cairocffi-0.7.2.ebuild:
  Mark ~ppc64 (bug #593058).

  Package-Manager: portage-2.3.1
  RepoMan-Options: --ignore-arches

