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

*apulse-0.1.6 (09 Aug 2015)
*apulse-0.1.4 (09 Aug 2015)

  09 Aug 2015; Robin H. Johnson <robbat2@gentoo.org> +apulse-0.1.4.ebuild,
  +apulse-0.1.6.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

*apulse-0.1.6-r1 (24 Aug 2015)

  24 Aug 2015; Daniel Campbell <zlg@gentoo.org> +apulse-0.1.6-r1.ebuild,
  +files/apulse:
  Revbump to 0.1.6-r1

  Introduces script to automagically assign libdir based on the
  executable being passed through to apulse. Will need expansion
  if/when arches besides x86 and amd64 need apulse.

  Bug: 547524

  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

  27 Aug 2015; Daniel Campbell <zlg@gentoo.org> apulse-0.1.6-r1.ebuild,
  files/apulse:
  Fix ebuild and script to support all ABIs

  Prior solution was over-engineered and didn't cover all cases.
  Thanks mgorny and jcallen for the assistance.

  Gentoo-Bug: 547524

  Package-Manager: portage-2.2.20.1

  30 Aug 2015; Daniel Campbell <zlg@gentoo.org> apulse-0.1.6-r1.ebuild:
  Rearrange script editing to better fit phases.

  Gentoo-Bug: 547524

  Package-Manager: portage-2.2.20.1

*apulse-0.1.7 (25 Dec 2015)

  25 Dec 2015; Daniel Campbell <zlg@gentoo.org> +apulse-0.1.7.ebuild:
  version bump to 0.1.7

  Package-Manager: portage-2.2.26

  15 Jan 2016; Agostino Sarubbo <ago@gentoo.org> apulse-0.1.6-r1.ebuild:
  amd64 stable wrt bug #571432

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

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

  14 Feb 2016; Agostino Sarubbo <ago@gentoo.org> apulse-0.1.6-r1.ebuild:
  x86 stable wrt bug #571432

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

  06 Mar 2016; Daniel Campbell <zlg@gentoo.org> -apulse-0.1.4.ebuild,
  -apulse-0.1.6.ebuild:
  Cleanup old versions

  Package-Manager: portage-2.2.27

  06 Aug 2016; Andrew Savchenko <bircoph@gentoo.org> metadata.xml:
  add myself to maintainers

  Package-Manager: portage-2.3.0
  Signed-off-by: Andrew Savchenko <bircoph@gentoo.org>

