# ChangeLog for app-admin/sysstat
# Copyright 1999-2016 Gentoo Foundation; Distributed under the GPL v2
# (auto-generated from git log)

*sysstat-11.1.5-r1 (09 Aug 2015)
*sysstat-11.0.5-r1 (09 Aug 2015)
*sysstat-11.0.2 (09 Aug 2015)

  09 Aug 2015; Robin H. Johnson <robbat2@gentoo.org>
  +files/sysstat-10.0.4-flags.patch, +files/sysstat-11.0.4-cron.patch,
  +files/sysstat.init.d, +metadata.xml, +sysstat-11.0.2.ebuild,
  +sysstat-11.0.5-r1.ebuild, +sysstat-11.1.5-r1.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

*sysstat-11.1.6 (26 Aug 2015)
*sysstat-11.0.6 (26 Aug 2015)

  26 Aug 2015; Jeroen Roovers <jer@gentoo.org> +sysstat-11.0.6.ebuild,
  +sysstat-11.1.6.ebuild:
  Version bump.

  Package-Manager: portage-2.2.20.1

*sysstat-11.1.7 (26 Sep 2015)
*sysstat-11.0.7 (26 Sep 2015)

  26 Sep 2015; Jeroen Roovers <jer@gentoo.org> -sysstat-11.0.5-r1.ebuild,
  +sysstat-11.0.7.ebuild, -sysstat-11.1.5-r1.ebuild, +sysstat-11.1.7.ebuild:
  Version bump.

  Package-Manager: portage-2.2.20.1

*sysstat-11.1.8 (26 Oct 2015)
*sysstat-11.0.8 (26 Oct 2015)

  26 Oct 2015; Jeroen Roovers <jer@gentoo.org> -sysstat-11.0.6.ebuild,
  +sysstat-11.0.8.ebuild, -sysstat-11.1.6.ebuild, +sysstat-11.1.8.ebuild:
  Version bump.

  Package-Manager: portage-2.2.23

  24 Nov 2015; Jeroen Roovers <jer@gentoo.org> sysstat-11.0.8.ebuild,
  sysstat-11.1.8.ebuild:
  Add USE=static by Gwendal Grignou.

  Package-Manager: portage-2.2.25

  24 Nov 2015; Jeroen Roovers <jer@gentoo.org> -sysstat-11.0.7.ebuild,
  -sysstat-11.1.7.ebuild:
  Old.

  Package-Manager: portage-2.2.25

*sysstat-11.2.0 (02 Jan 2016)

  02 Jan 2016; Jeroen Roovers <jer@gentoo.org> +sysstat-11.2.0.ebuild:
  Version bump.

  Package-Manager: portage-2.2.26

  02 Jan 2016; Jeroen Roovers <jer@gentoo.org> -sysstat-11.1.8.ebuild:
  Old.

  Package-Manager: portage-2.2.26

  24 Jan 2016; Michał Górny <mgorny@gentoo.org> metadata.xml:
  Set appropriate maintainer types in metadata.xml (GLEP 67)

  12 Feb 2016; Jeroen Roovers <jer@gentoo.org> sysstat-11.2.0.ebuild:
  Prevent changing file ownership

  Package-Manager: portage-2.2.27

*sysstat-11.3.1 (26 Feb 2016)
*sysstat-11.2.1.1 (26 Feb 2016)

  26 Feb 2016; Jeroen Roovers <jer@gentoo.org> +sysstat-11.2.1.1.ebuild,
  +sysstat-11.3.1.ebuild:
  Version bump.

  Package-Manager: portage-2.2.27

*sysstat-11.3.2 (19 Mar 2016)
*sysstat-11.2.2 (19 Mar 2016)

  19 Mar 2016; Jeroen Roovers <jer@gentoo.org> +sysstat-11.2.2.ebuild,
  +sysstat-11.3.2.ebuild:
  Version bump.

  Package-Manager: portage-2.2.28

  19 Mar 2016; Jeroen Roovers <jer@gentoo.org> -sysstat-11.2.0.ebuild,
  -sysstat-11.3.1.ebuild:
  Old.

  Package-Manager: portage-2.2.28

*sysstat-11.3.3 (13 Apr 2016)
*sysstat-11.2.3 (13 Apr 2016)

  13 Apr 2016; Jeroen Roovers <jer@gentoo.org> +sysstat-11.2.3.ebuild,
  +sysstat-11.3.3.ebuild:
  Version bump.

  Package-Manager: portage-2.2.28

  13 Apr 2016; Jeroen Roovers <jer@gentoo.org> -sysstat-11.0.8.ebuild,
  -sysstat-11.2.1.1.ebuild, -sysstat-11.3.2.ebuild:
  Old.

  Package-Manager: portage-2.2.28

  13 May 2016; Agostino Sarubbo <ago@gentoo.org> sysstat-11.2.2.ebuild:
  amd64 stable wrt bug #579824

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

  18 May 2016; Austin English <wizardedit@gentoo.org> files/sysstat.init.d:
  use #!/sbin/openrc-run instead of #!/sbin/runscript

*sysstat-11.3.4 (18 May 2016)
*sysstat-11.2.4 (18 May 2016)

  18 May 2016; Jeroen Roovers <jer@gentoo.org> +sysstat-11.2.4.ebuild,
  +sysstat-11.3.4.ebuild:
  Version bump.

  Package-Manager: portage-2.3.0_rc1

  25 May 2016; Matt Turner <mattst88@gentoo.org> sysstat-11.2.2.ebuild:
  alpha stable, bug 579824.

*sysstat-11.3.4-r1 (21 Jun 2016)
*sysstat-11.2.4-r1 (21 Jun 2016)

  21 Jun 2016; Jeroen Roovers <jer@gentoo.org> +sysstat-11.2.4-r1.ebuild,
  +sysstat-11.3.4-r1.ebuild:
  Drop USE=doc as it now only controls man page installation (bug #585702 by
  latenite).

  Package-Manager: portage-2.3.0_rc1

  22 Jun 2016; Jeroen Roovers <jer@gentoo.org> sysstat-11.2.4-r1.ebuild,
  sysstat-11.3.4-r1.ebuild:
  Remove "use doc".

  Package-Manager: portage-2.3.0_rc1

  30 Jun 2016; Tobias Klausmann <klausman@gentoo.org>
  sysstat-11.2.4-r1.ebuild:
  11.2.4-r1: add alpha keyword

  Gentoo-Bug: 586566

  Package-Manager: portage-2.3.0

  01 Jul 2016; Jeroen Roovers <jer@gentoo.org> sysstat-11.2.4-r1.ebuild:
  Stable for HPPA PPC64 (bug #586566).

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

*sysstat-11.3.5 (03 Jul 2016)
*sysstat-11.2.5 (03 Jul 2016)

  03 Jul 2016; Jeroen Roovers <jer@gentoo.org> +sysstat-11.2.5.ebuild,
  +sysstat-11.3.5.ebuild:
  Version bump.

  Package-Manager: portage-2.3.0

  03 Jul 2016; Jeroen Roovers <jer@gentoo.org> -sysstat-11.2.3.ebuild,
  -sysstat-11.2.4.ebuild, -sysstat-11.3.3.ebuild, -sysstat-11.3.4.ebuild:
  Old.

  Package-Manager: portage-2.3.0

  11 Jul 2016; Jeroen Roovers <jer@gentoo.org> -sysstat-11.3.4-r1.ebuild:
  Old.

  Package-Manager: portage-2.3.0

*sysstat-11.4.0 (17 Aug 2016)

  17 Aug 2016; Jeroen Roovers <jer@gentoo.org> +sysstat-11.4.0.ebuild:
  Version bump.

  Package-Manager: portage-2.3.0

  17 Aug 2016; Jeroen Roovers <jer@gentoo.org> -sysstat-11.3.5.ebuild:
  Old.

  Package-Manager: portage-2.3.0

*sysstat-11.2.6 (17 Aug 2016)

  17 Aug 2016; Jeroen Roovers <jer@gentoo.org> +sysstat-11.2.6.ebuild:
  Version bump.

  Package-Manager: portage-2.3.0

  21 Sep 2016; Tobias Klausmann <klausman@gentoo.org> sysstat-11.4.0.ebuild:
  11.4.0-r0: add alpha keyword

  Gentoo-Bug: 593920

  24 Sep 2016; Agostino Sarubbo <ago@gentoo.org> sysstat-11.4.0.ebuild:
  amd64 stable wrt bug #593920

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

