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

*qtserialport-5.4.2 (09 Aug 2015)

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

  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

*qtserialport-5.5.1 (17 Oct 2015)

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

  Package-Manager: portage-2.2.20.1

*qtserialport-5.5.1-r1 (15 Jan 2016)

  15 Jan 2016; Michael Palimaka <kensington@gentoo.org>
  -qtserialport-5.5.1.ebuild, +qtserialport-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)

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

*qtserialport-5.5.1-r2 (18 Apr 2016)

  18 Apr 2016; Davide Pesavento <pesa@gentoo.org>
  -qtserialport-5.5.1-r1.ebuild, +qtserialport-5.5.1-r2.ebuild:
  fix udev dependency

  Package-Manager: portage-2.2.28

*qtserialport-5.6.0 (23 Apr 2016)

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

  Package-Manager: portage-2.2.28

*qtserialport-5.6.1 (14 Jun 2016)

  14 Jun 2016; Davide Pesavento <pesa@gentoo.org> +qtserialport-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>
  qtserialport-5.6.1.ebuild:
  dev-qt: stabilise 5.6.1 on amd64/x86

  Gentoo-bug: 586180

  Package-Manager: portage-2.3.0

*qtserialport-5.7.0 (12 Aug 2016)

  12 Aug 2016; Michael Palimaka <kensington@gentoo.org>
  +qtserialport-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> qtserialport-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>
  -qtserialport-5.6.0.ebuild:
  dev-qt: remove 5.6.0

  Package-Manager: portage-2.3.0

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

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

*qtserialport-5.6.2 (12 Oct 2016)

  12 Oct 2016; Davide Pesavento <pesa@gentoo.org> +qtserialport-5.6.2.ebuild:
  dev-qt: Qt 5.6.2 version bump

  Package-Manager: portage-2.3.1

