# ChangeLog for kde-frameworks/solid
# Copyright 1999-2016 Gentoo Foundation; Distributed under the GPL v2
# (auto-generated from git log)

*solid-5.12.0 (09 Aug 2015)

  09 Aug 2015; Robin H. Johnson <robbat2@gentoo.org> +metadata.xml,
  +solid-5.12.0.ebuild:
  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

*solid-5.13.0 (12 Aug 2015)

  12 Aug 2015; Michael Palimaka <kensington@gentoo.org> +solid-5.13.0.ebuild:
  kde-frameworks: add 5.13.0

  Package-Manager: portage-2.2.20.1

  15 Aug 2015; Johannes Huber <johu@gentoo.org> -solid-5.12.0.ebuild:
  kde-frameworks: Remove 5.12.0

  Package-Manager: portage-2.2.20.1

  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

*solid-5.14.0 (12 Sep 2015)

  12 Sep 2015; Manuel Rüger <mrueg@gentoo.org> +solid-5.14.0.ebuild:
  kde-frameworks: Version bump

  Package-Manager: portage-2.2.20.1

  27 Sep 2015; Manuel Rüger <mrueg@gentoo.org> -solid-5.13.0.ebuild:
  kde-frameworks: Remove KDE Frameworks 5.13.0

  Package-Manager: portage-2.2.22

*solid-5.15.0 (11 Oct 2015)

  11 Oct 2015; Michael Palimaka <kensington@gentoo.org> +solid-5.15.0.ebuild:
  kde-frameworks: version bump 5.15.0

  Package-Manager: portage-2.2.20.1

*solid-5.16.0 (13 Nov 2015)

  13 Nov 2015; Michael Palimaka <kensington@gentoo.org> +solid-5.16.0.ebuild:
  kde-frameworks: version bump 5.16.0

  Package-Manager: portage-2.2.24

  16 Nov 2015; Michael Palimaka <kensington@gentoo.org> -solid-5.14.0.ebuild:
  kde-frameworks: remove 5.14.0

  Package-Manager: portage-2.2.24

*solid-5.17.0 (14 Dec 2015)

  14 Dec 2015; Michael Palimaka <kensington@gentoo.org> +solid-5.17.0.ebuild:
  kde-frameworks: version bump 5.17.0

  Package-Manager: portage-2.2.26

  06 Jan 2016; Michael Palimaka <kensington@gentoo.org> -solid-5.15.0.ebuild:
  kde-frameworks: remove 5.15.0

  Package-Manager: portage-2.2.26

  08 Jan 2016; Alexey Shvetsov <alexxy@gentoo.org> solid-5.17.0.ebuild:
  kde-frameworks: Add ~arm keywords

  Package-Manager: portage-2.2.26

*solid-5.18.0 (12 Jan 2016)

  12 Jan 2016; Michael Palimaka <kensington@gentoo.org> +solid-5.18.0.ebuild:
  kde-frameworks: version bump 5.18.0

  Package-Manager: portage-2.2.26

  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 Feb 2016; Michael Palimaka <kensington@gentoo.org> -solid-5.16.0.ebuild:
  kde-frameworks: Drop Frameworks 5.16.0

  Package-Manager: portage-2.2.27

*solid-5.19.0 (14 Feb 2016)

  14 Feb 2016; Michael Palimaka <kensington@gentoo.org> +solid-5.19.0.ebuild:
  kde-frameworks: version bump 5.19.0

  Package-Manager: portage-2.2.27

  08 Mar 2016; Johannes Huber <johu@gentoo.org> -solid-5.17.0.ebuild:
  kde-frameworks: Remove KDE Frameworks 5.17.0

  Package-Manager: portage-2.2.27

*solid-5.20.0 (20 Mar 2016)

  20 Mar 2016; Michael Palimaka <kensington@gentoo.org> +solid-5.20.0.ebuild:
  kde-frameworks: version bump 5.20

  Package-Manager: portage-2.2.28

  27 Mar 2016; Johannes Huber <johu@gentoo.org> solid-5.18.0.ebuild:
  KDE Frameworks 5.18.0 stable amd64

  Gentoo-bug: 558460
  Acked-by: Agostino Sarubbo <ago@gentoo.org>

  Package-Manager: portage-2.2.28

  04 Apr 2016; Johannes Huber <johu@gentoo.org> -solid-5.19.0.ebuild:
  kde-frameworks: Remove KDE Frameworks 5.19.0

  Package-Manager: portage-2.2.28

*solid-5.21.0 (10 Apr 2016)

  10 Apr 2016; Johannes Huber <johu@gentoo.org> +solid-5.21.0.ebuild:
  kde-frameworks: Version bump KDE Frameworks 5.21.0

  Package-Manager: portage-2.2.28

  15 Apr 2016; Johannes Huber <johu@gentoo.org> -solid-5.20.0.ebuild:
  kde-frameworks: Remove KDE Frameworks 5.20.0

  Package-Manager: portage-2.2.28

*solid-5.22.0 (15 May 2016)

  15 May 2016; Johannes Huber <johu@gentoo.org> +solid-5.22.0.ebuild:
  kde-frameworks: Version bump KDE Frameworks 5.22.0

  Package-Manager: portage-2.2.28

  19 May 2016; Mikle Kolyada <zlogene@gentoo.org> solid-5.21.0.ebuild:
  kde-frameworks: amd64 stable wrt bug #580248 (5.21 series)

  Package-Manager: portage-2.2.28

  19 May 2016; Johannes Huber <johu@gentoo.org> -solid-5.18.0.ebuild:
  kde-frameworks: Remove KDE Frameworks 5.18.0

  Package-Manager: portage-2.3.0_rc1

  01 Jun 2016; Michael Palimaka <kensington@gentoo.org> solid-5.21.0.ebuild:
  kde-frameworks: stabilise 5.21.0 on x86

  Package-Manager: portage-2.3.0_rc1

*solid-5.23.0 (16 Jun 2016)

  16 Jun 2016; Michael Palimaka <kensington@gentoo.org> +solid-5.23.0.ebuild:
  kde-frameworks: version bump 5.23.0

  Package-Manager: portage-2.3.0_rc1

  21 Jun 2016; Johannes Huber <johu@gentoo.org> -solid-5.22.0.ebuild:
  kde-frameworks: Remove KDE Frameworks 5.22.0

  Package-Manager: portage-2.3.0_rc1

*solid-5.24.0 (09 Jul 2016)

  09 Jul 2016; Johannes Huber <johu@gentoo.org> +solid-5.24.0.ebuild:
  kde-frameworks: Version bump KDE Frameworks 5.24.0

  Package-Manager: portage-2.3.0

  25 Jul 2016; Michael Palimaka <kensington@gentoo.org> solid-5.23.0.ebuild:
  kde-frameworks: stabilise 5.23.0 for amd64/x86

  Gentoo-bug: 586112

  Package-Manager: portage-2.3.0

  25 Jul 2016; Johannes Huber <johu@gentoo.org> -solid-5.21.0.ebuild:
  kde-frameworks: Remove KDE Frameworks 5.21

  Package-Manager: portage-2.3.0

*solid-5.25.0 (13 Aug 2016)

  13 Aug 2016; Michael Palimaka <kensington@gentoo.org> +solid-5.25.0.ebuild:
  kde-frameworks: version bump 5.25.0

  Package-Manager: portage-2.3.0

  21 Aug 2016; Michael Palimaka <kensington@gentoo.org> -solid-5.24.0.ebuild:
  kde-frameworks: remove 5.24.0

  Package-Manager: portage-2.3.0

*solid-5.26.0 (14 Sep 2016)

  14 Sep 2016; Michael Palimaka <kensington@gentoo.org> +solid-5.26.0.ebuild:
  kde-frameworks: version bump 5.26.0

  Package-Manager: portage-2.3.0

  28 Sep 2016; Michael Palimaka <kensington@gentoo.org> -solid-5.25.0.ebuild:
  kde-frameworks: remove 5.25.0

  Package-Manager: portage-2.3.1

  07 Oct 2016; Michael Palimaka <kensington@gentoo.org> solid-5.26.0.ebuild:
  kde-frameworks: stabilise 5.26.0 for amd64/x86

  Gentoo-bug: 596282

  Package-Manager: portage-2.3.1

