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

*qdbus-5.4.2 (09 Aug 2015)

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

  23 Aug 2015; Jeroen Roovers <jer@gentoo.org> qdbus-5.4.2.ebuild:
  Stable for HPPA (bug #543326).

  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; Mikle Kolyada <zlogene@gentoo.org> qdbus-5.4.2.ebuild:
  gentoo/dev-qt: amd64 stable wrt bug #543326

  Package-Manager: portage-2.2.20.1

  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

  26 Aug 2015; Mikle Kolyada <zlogene@gentoo.org> qdbus-5.4.2.ebuild:
  arm stable wrt bug #543326

  Package-Manager: portage-2.2.20.1

  21 Sep 2015; Jeroen Roovers <jer@gentoo.org> qdbus-5.4.2.ebuild:
  Stable for PPC64 (bug #543326).

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

*qdbus-5.5.1 (17 Oct 2015)

  17 Oct 2015; Michael Palimaka <kensington@gentoo.org> +qdbus-5.5.1.ebuild:
  dev-qt: version bump 5.5.1

  Package-Manager: portage-2.2.20.1

*qdbus-5.5.1-r1 (15 Jan 2016)

  15 Jan 2016; Michael Palimaka <kensington@gentoo.org> -qdbus-5.5.1.ebuild,
  +qdbus-5.5.1-r1.ebuild:
  dev-qt: further revbumps to prevent mixing of Qt versions

  Gentoo-bug: 563898
  Gentoo-bug: 564560
  Gentoo-bug: 564920
  Gentoo-bug: 564922
  Gentoo-bug: 565806
  Gentoo-bug: 566580

  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)

  05 Mar 2016; Mikle Kolyada <zlogene@gentoo.org> qdbus-5.5.1-r1.ebuild:
  amd64 stable wrt bug #569924

  Package-Manager: portage-2.2.26

  09 Mar 2016; Jeroen Roovers <jer@gentoo.org> qdbus-5.5.1-r1.ebuild:
  Stable for HPPA PPC64 (bug #569924).

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

  24 Mar 2016; Markus Meier <maekke@gentoo.org> qdbus-5.5.1-r1.ebuild:
  arm stable, bug #569924

  Package-Manager: portage-2.2.28
  RepoMan-Options: --include-arches="arm"

  27 Mar 2016; Agostino Sarubbo <ago@gentoo.org> qdbus-5.5.1-r1.ebuild:
  ppc stable wrt bug #569924

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

  07 Apr 2016; Davide Pesavento <pesa@gentoo.org> -qdbus-5.4.2.ebuild:
  dev-qt: remove Qt 5.4.2

*qdbus-5.6.0 (23 Apr 2016)

  23 Apr 2016; Michael Palimaka <kensington@gentoo.org> metadata.xml,
  +qdbus-5.6.0.ebuild:
  dev-qt: version bump 5.6.0

  Package-Manager: portage-2.2.28

  01 Jun 2016; Michael Palimaka <kensington@gentoo.org> qdbus-5.5.1-r1.ebuild:
  dev-qt: stabilise 5.5.1 on x86

  Gentoo-bug: 569924

  Package-Manager: portage-2.3.0_rc1

*qdbus-5.6.1 (14 Jun 2016)

  14 Jun 2016; Davide Pesavento <pesa@gentoo.org> +qdbus-5.6.1.ebuild:
  dev-qt: Qt 5.6.1 version bump

  Package-Manager: portage-2.3.0_rc1

  22 Jul 2016; Michael Palimaka <kensington@gentoo.org> qdbus-5.6.1.ebuild:
  dev-qt: stabilise 5.6.1 on amd64/x86

  Gentoo-bug: 586180

  Package-Manager: portage-2.3.0

*qdbus-5.7.0 (12 Aug 2016)

  12 Aug 2016; Michael Palimaka <kensington@gentoo.org> +qdbus-5.7.0.ebuild:
  dev-qt: version bump 5.7.0

  Package-Manager: portage-2.3.0

  15 Aug 2016; Jeroen Roovers <jer@gentoo.org> qdbus-5.6.1.ebuild:
  Stable for HPPA PPC64 (bug #586180).

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

  18 Aug 2016; Michael Palimaka <kensington@gentoo.org> -qdbus-5.6.0.ebuild:
  dev-qt: remove 5.6.0

  Package-Manager: portage-2.3.0

  23 Aug 2016; Markus Meier <maekke@gentoo.org> qdbus-5.6.1.ebuild:
  arm stable, bug #586180

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

