# ChangeLog for media-libs/clutter-gst
# Copyright 1999-2016 Gentoo Foundation; Distributed under the GPL v2
# (auto-generated from git log)

*clutter-gst-3.0.8 (09 Aug 2015)
*clutter-gst-3.0.6 (09 Aug 2015)
*clutter-gst-2.0.16 (09 Aug 2015)

  09 Aug 2015; Robin H. Johnson <robbat2@gentoo.org>
  +clutter-gst-2.0.16.ebuild, +clutter-gst-3.0.6.ebuild,
  +clutter-gst-3.0.8.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

*clutter-gst-3.0.10 (05 Sep 2015)

  05 Sep 2015; Pacho Ramos <pacho@gentoo.org> +clutter-gst-3.0.10.ebuild:
  Version bump

  Package-Manager: portage-2.2.20.1

  05 Sep 2015; Pacho Ramos <pacho@gentoo.org> -clutter-gst-3.0.6.ebuild:
  Drop old

  Package-Manager: portage-2.2.20.1

  07 Sep 2015; Mikle Kolyada <zlogene@gentoo.org> clutter-gst-3.0.10.ebuild:
  amd64 stable wrt bug #551826

  Package-Manager: portage-2.2.20.1

  12 Sep 2015; Agostino Sarubbo <ago@gentoo.org> clutter-gst-3.0.10.ebuild:
  x86 stable wrt bug #551826

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

*clutter-gst-3.0.12 (04 Oct 2015)

  04 Oct 2015; Pacho Ramos <pacho@gentoo.org> +clutter-gst-3.0.12.ebuild:
  Version bump

  Package-Manager: portage-2.2.22

  04 Oct 2015; Pacho Ramos <pacho@gentoo.org> -clutter-gst-3.0.8.ebuild:
  Drop old

  Package-Manager: portage-2.2.22

*clutter-gst-3.0.14 (17 Oct 2015)

  17 Oct 2015; Pacho Ramos <pacho@gentoo.org> +clutter-gst-3.0.14.ebuild:
  Version bump

  Package-Manager: portage-2.2.23

  10 Nov 2015; Agostino Sarubbo <ago@gentoo.org> clutter-gst-3.0.14.ebuild:
  amd64 stable wrt bug #565086

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

  11 Nov 2015; Agostino Sarubbo <ago@gentoo.org> clutter-gst-3.0.14.ebuild:
  x86 stable wrt bug #565086

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

*clutter-gst-3.0.14-r1 (24 Nov 2015)

  24 Nov 2015; Gilles Dartiguelongue <eva@gentoo.org>
  +clutter-gst-3.0.14-r1.ebuild,
  +files/clutter-gst-3.0.14-automagic-udev.patch:
  make udev support optional

  It was forced on because upstream had it automagic. Patch submitted and
  accepted upstream. Also add X USE flag and make it synchronized with
  clutter since there is conditional code being built depending on whether
  clutter has X11 support or not ending up in clutter-gst linking to
  libX11.

  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)

  20 Feb 2016; Pacho Ramos <pacho@gentoo.org> -clutter-gst-3.0.10.ebuild,
  -clutter-gst-3.0.12.ebuild:
  Drop old

  Package-Manager: portage-2.2.27

*clutter-gst-3.0.16 (20 Feb 2016)

  20 Feb 2016; Pacho Ramos <pacho@gentoo.org> +clutter-gst-3.0.16.ebuild:
  Version bump

  Package-Manager: portage-2.2.27

  21 Feb 2016; Pacho Ramos <pacho@gentoo.org> clutter-gst-3.0.16.ebuild:
  amd64 stable, bug 566378

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

  06 Mar 2016; Mikle Kolyada <zlogene@gentoo.org> clutter-gst-3.0.16.ebuild:
  x86 stable wrt bug #566378

  Package-Manager: portage-2.2.26

  03 Apr 2016; Pacho Ramos <pacho@gentoo.org> -clutter-gst-3.0.14.ebuild,
  -clutter-gst-3.0.14-r1.ebuild,
  -files/clutter-gst-3.0.14-automagic-udev.patch:
  Drop old

  Package-Manager: portage-2.2.28

*clutter-gst-3.0.18 (03 Apr 2016)
*clutter-gst-2.0.18 (03 Apr 2016)

  03 Apr 2016; Pacho Ramos <pacho@gentoo.org> +clutter-gst-2.0.18.ebuild,
  +clutter-gst-3.0.18.ebuild:
  Version bump

  Package-Manager: portage-2.2.28

  11 Jun 2016; Pacho Ramos <pacho@gentoo.org> clutter-gst-2.0.18.ebuild,
  clutter-gst-3.0.18.ebuild:
  amd64 stable, bug 584468

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

  11 Jun 2016; Pacho Ramos <pacho@gentoo.org> clutter-gst-2.0.18.ebuild,
  clutter-gst-3.0.18.ebuild:
  x86 stable, bug 584468

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

*clutter-gst-3.0.20 (08 Sep 2016)

  08 Sep 2016; Gilles Dartiguelongue <eva@gentoo.org>
  +clutter-gst-3.0.20.ebuild:
  version bump from 3.0.18 to 3.0.20

  Package-Manager: portage-2.3.0

  01 Oct 2016; Pacho Ramos <pacho@gentoo.org> clutter-gst-3.0.20.ebuild:
  amd64 stable, bug 587010

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

  01 Oct 2016; Pacho Ramos <pacho@gentoo.org> clutter-gst-3.0.20.ebuild:
  x86 stable, bug 587010

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

