# ChangeLog for app-emulation/docker
# Copyright 1999-2015 Gentoo Foundation; Distributed under the GPL v2
# $Header: /var/cvsroot/gentoo-x86/app-emulation/docker/ChangeLog,v 1.58 2015/08/07 04:53:18 vapier Exp $

  07 Aug 2015; Mike Frysinger <vapier@gentoo.org> docker-1.7.1.ebuild:
  Make UTS_NS check non-fatal too #555434 by Deniss Gaplevsky.

  28 Jul 2015; Kacper Kowalik <xarthisius@gentoo.org> docker-1.7.1.ebuild:
  Make kernel checks non fatal. Thanks to Tianon <admwiggin@gmail.com> for the
  patch. Fixes #555434 by Deniss Gaplevsky  <slim@inbox.lv>

*docker-1.7.1 (24 Jul 2015)

  24 Jul 2015; Kacper Kowalik <xarthisius@gentoo.org> +docker-1.7.1.ebuild,
  -docker-1.7.0-r1.ebuild, -docker-1.7.0.ebuild:
  Version bump, grabbed from tianon's docker overlay. Fixes #554306. Drop old

*docker-1.7.0-r1 (07 Jul 2015)

  07 Jul 2015; William Hubbs <williamh@gentoo.org> +docker-1.7.0-r1.ebuild:
  add slot dependency on dev-lang/go, approved by all maintainers

  05 Jul 2015; Manuel Rüger <mrueg@gentoo.org> docker-1.6.2.ebuild,
  docker-1.7.0.ebuild:
  [QA] Install zsh-completion unconditionally.

*docker-1.7.0 (04 Jul 2015)

  04 Jul 2015; Alex Brandt <alunduil@gentoo.org> +docker-1.7.0.ebuild,
  files/docker-r2.confd, files/docker.initd, metadata.xml:
  add version 1.7.0  * from tianon's docker-overlay * fixes bug #553708

*docker-1.6.2 (04 Jul 2015)

  04 Jul 2015; Alex Brandt <alunduil@gentoo.org> +docker-1.6.2.ebuild,
  +files/7179-add-audit_write-cap.patch, +files/docker-r3.confd,
  +files/docker-r3.initd, +files/docker.initd, files/docker-r2.confd,
  files/docker-r2.initd, files/docker.service:
  add version 1.6.2  fixes bug #553706

  04 Jul 2015; Alex Brandt <alunduil@gentoo.org> metadata.xml:
  add alunduil to maintainers

  30 Jun 2015; Manuel Rüger <mrueg@gentoo.org> docker-1.6.1.ebuild:
  Install zsh-completions unconditionally.

  07 Jun 2015; Justin Lecher <jlec@gentoo.org> docker-1.6.1.ebuild:
  Add missing eclass

  07 Jun 2015; Justin Lecher <jlec@gentoo.org> metadata.xml:
  Add github to remote-id in metadata.xml

  08 May 2015; Kacper Kowalik <xarthisius@gentoo.org> -docker-1.5.0.ebuild:
  drop old wrt #548884

*docker-1.6.1 (08 May 2015)

  08 May 2015; Kacper Kowalik <xarthisius@gentoo.org> +docker-1.6.1.ebuild,
  -docker-1.6.0.ebuild:
  Version bump, drop old wrt #548884

  04 May 2015; Justin Lecher <jlec@gentoo.org> docker-1.6.0.ebuild:
  Add missing dependency on aufs4, thanks jbergstroem for the report

  29 Apr 2015; Kacper Kowalik <xarthisius@gentoo.org> docker-1.6.0.ebuild:
  Drop ~CFS_BANDWIDTH as it's not yet used by 1.6.0, add warning message for
  CONFIG_MEMCG_SWAP_ENABLED. Thanks to Thomas Capricelli for the report

*docker-1.6.0 (28 Apr 2015)

  28 Apr 2015; Kacper Kowalik <xarthisius@gentoo.org> +docker-1.6.0.ebuild:
  Version bump, grabbed from tianon's docker overlay. Fixes #547316

  14 Mar 2015; Kacper Kowalik <xarthisius@gentoo.org> docker-1.5.0.ebuild:
  Check if CPUSETS are enabled in kernel wrt bug #536546 by Dirk Best <mail
  @dirk-best.de>. Thanks to Tianon <admwiggin@gmail.com> for reporting and
  fixing it upstream

  03 Mar 2015; Kacper Kowalik <xarthisius@gentoo.org> docker-1.5.0.ebuild,
  metadata.xml:
  Port changes from Tianon's overlay. Fixes bug #541742 by Thomas Capricelli
  <orzel@freehackers.org>

  19 Feb 2015; Patrick Lauer <patrick@gentoo.org> -docker-1.3.3-r1.ebuild,
  -docker-1.4.1.ebuild:
  Remove old versions with unsatisfiable dependencies

  15 Feb 2015; Patrick Lauer <patrick@gentoo.org> docker-1.3.3-r1.ebuild,
  docker-1.4.1.ebuild, docker-1.5.0.ebuild:
  Make kernel checks nonfatal to allow building (binpkgs etc.)

*docker-1.5.0 (11 Feb 2015)

  11 Feb 2015; Kacper Kowalik <xarthisius@gentoo.org> +docker-1.5.0.ebuild:
  Version bump, grabbed from tianon's docker overlay

*docker-1.4.1 (23 Dec 2014)

  23 Dec 2014; Kacper Kowalik <xarthisius@gentoo.org> +docker-1.4.1.ebuild,
  -docker-1.4.0.ebuild:
  Version bump, drop old

*docker-1.3.3-r1 (16 Dec 2014)

  16 Dec 2014; Alex Brandt <alunduil@gentoo.org> +docker-1.3.3-r1.ebuild:
  add version 1.3.3-r1 from tianon's docker overlay

  Version 1.4.0 of docker has a nasty bug when using volumes that are bind
  mounts.  Thus, I've added 1.3.3-r1 until 1.4.1 is released and fixes this
  issue, or longer that's OK too.

*docker-1.4.0 (12 Dec 2014)

  12 Dec 2014; Kacper Kowalik <xarthisius@gentoo.org> +docker-1.4.0.ebuild,
  -docker-1.3.2.ebuild:
  Version bump, drop vulnerable versions wrt #532344

  26 Nov 2014; Kacper Kowalik <xarthisius@gentoo.org> docker-1.3.2.ebuild:
  Update with ebuild from Tianon's overlay

  26 Nov 2014; Kacper Kowalik <xarthisius@gentoo.org> metadata.xml:
  Add myself as co-maintainer

*docker-1.3.2 (26 Nov 2014)

  26 Nov 2014; Kacper Kowalik <xarthisius@gentoo.org> +docker-1.3.2.ebuild,
  -docker-1.3.1.ebuild:
  Version bump, drop old wrt bug #530518

  19 Nov 2014; Yixun Lan <dlan@gentoo.org> -docker-1.0.0.ebuild,
  -docker-1.0.1.ebuild, -docker-1.1.0.ebuild, -docker-1.2.0.ebuild:
  clean vulnerable versions due to security bug 529670, proxy for maintainer

*docker-1.3.1 (31 Oct 2014)

  31 Oct 2014; Kacper Kowalik <xarthisius@gentoo.org> +docker-1.3.1.ebuild:
  1.3.1 version bump

*docker-1.2.0 (09 Sep 2014)

  09 Sep 2014; Greg Kroah-Hartman <gregkh@gentoo.org> +docker-1.2.0.ebuild:
  1.2.0 version bump

  06 Aug 2014; Patrick Lauer <patrick@gentoo.org> docker-1.0.0.ebuild,
  docker-1.0.1.ebuild, docker-1.1.0.ebuild:
  Make description more repoman-happy

  04 Jul 2014; Greg Kroah-Hartman <gregkh@gentoo.org> -docker-0.10.0.ebuild,
  -docker-0.11.1.ebuild, -docker-0.7.1-r1.ebuild, -docker-0.7.1.ebuild,
  -docker-0.7.2.ebuild, -docker-0.7.3.ebuild, -docker-0.7.4.ebuild,
  -docker-0.7.5.ebuild, -docker-0.7.6.ebuild, -docker-0.8.0.ebuild,
  -docker-0.8.1.ebuild, -docker-0.9.0.ebuild, -docker-0.9.1.ebuild:
  remove obsolete ebuilds

*docker-1.1.0 (04 Jul 2014)

  04 Jul 2014; Greg Kroah-Hartman <gregkh@gentoo.org> +docker-1.1.0.ebuild:
  1.1.0 update

*docker-1.0.1 (29 Jun 2014)

  29 Jun 2014; Greg Kroah-Hartman <gregkh@gentoo.org> +docker-1.0.1.ebuild:
  1.0.1 version bump

  25 Jun 2014; Patrick Lauer <patrick@gentoo.org> -docker-0.7.0.ebuild:
  Remove ebuild that fetches from live git

*docker-1.0.0 (09 Jun 2014)

  09 Jun 2014; Greg Kroah-Hartman <gregkh@gentoo.org> +docker-1.0.0.ebuild:
  1.0.0 release

  03 Jun 2014; Jeroen Roovers <jer@gentoo.org> metadata.xml:
  Add proxy-maint herd.

*docker-0.11.1 (09 May 2014)

  09 May 2014; Greg Kroah-Hartman <gregkh@gentoo.org> +docker-0.11.1.ebuild,
  metadata.xml:
  0.11.1 version bump

*docker-0.10.0 (09 Apr 2014)

  09 Apr 2014; Greg Kroah-Hartman <gregkh@gentoo.org> +docker-0.10.0.ebuild:
  0.10.0 bump

*docker-0.9.1 (26 Mar 2014)

  26 Mar 2014; Greg Kroah-Hartman <gregkh@gentoo.org> +docker-0.9.1.ebuild:
  0.9.1 bump

*docker-0.9.0 (11 Mar 2014)

  11 Mar 2014; Greg Kroah-Hartman <gregkh@gentoo.org> +docker-0.9.0.ebuild,
  metadata.xml:
  0.9.0 version bump

*docker-0.8.1 (21 Feb 2014)

  21 Feb 2014; Greg Kroah-Hartman <gregkh@gentoo.org> +docker-0.8.1.ebuild:
  0.8.1 bump

*docker-0.8.0 (05 Feb 2014)

  05 Feb 2014; Greg Kroah-Hartman <gregkh@gentoo.org> +docker-0.8.0.ebuild,
  metadata.xml:
  0.8.0 bump

*docker-0.7.6 (16 Jan 2014)

  16 Jan 2014; Greg Kroah-Hartman <gregkh@gentoo.org> +docker-0.7.6.ebuild:
  0.7.6 version bump

  10 Jan 2014; Greg Kroah-Hartman <gregkh@gentoo.org> -docker-0.6.3-r1.ebuild,
  -docker-0.6.3.ebuild, -docker-0.6.5.ebuild, -docker-0.6.6.ebuild,
  -docker-0.6.7.ebuild:
  remove 0.6.* versions

*docker-0.7.5 (10 Jan 2014)

  10 Jan 2014; Greg Kroah-Hartman <gregkh@gentoo.org> +docker-0.7.5.ebuild:
  0.7.5 bump

*docker-0.7.4 (10 Jan 2014)

  10 Jan 2014; Greg Kroah-Hartman <gregkh@gentoo.org> +docker-0.7.4.ebuild:
  0.7.4 bump

*docker-0.7.3 (04 Jan 2014)

  04 Jan 2014; Greg Kroah-Hartman <gregkh@gentoo.org> +docker-0.7.3.ebuild:
  0.7.3 version bump

  31 Dec 2013; Tom Wijsman <TomWij@gentoo.org> -files/docker.initd,
  metadata.xml:
  [QA] Remove unused files. Added proxy-maintainers to metadata.xml due to non-
  gorg e-mail address.

*docker-0.7.2 (17 Dec 2013)
*docker-0.7.1-r1 (17 Dec 2013)

  17 Dec 2013; Greg Kroah-Hartman <gregkh@gentoo.org> +docker-0.7.1-r1.ebuild,
  +docker-0.7.2.ebuild:
  0.7.1-rc1 and 0.7.2 version bump

*docker-0.7.1 (10 Dec 2013)

  10 Dec 2013; Greg Kroah-Hartman <gregkh@gentoo.org> +docker-0.7.1.ebuild:
  0.7.1 bump

*docker-0.7.0 (26 Nov 2013)

  26 Nov 2013; Greg Kroah-Hartman <gregkh@gentoo.org> +docker-0.7.0.ebuild,
  metadata.xml:
  add 0.7.0 release

*docker-0.6.7 (23 Nov 2013)

  23 Nov 2013; Greg Kroah-Hartman <gregkh@gentoo.org> +docker-0.6.7.ebuild:
  0.6.7 version bump

*docker-0.6.6 (11 Nov 2013)

  11 Nov 2013; Greg Kroah-Hartman <gregkh@gentoo.org> +docker-0.6.6.ebuild:
  0.6.6 version bump

*docker-0.6.5 (31 Oct 2013)

  31 Oct 2013; Greg Kroah-Hartman <gregkh@gentoo.org> +docker-0.6.5.ebuild:
  version bump to 0.6.5

*docker-0.6.3-r1 (05 Oct 2013)

  05 Oct 2013; Greg Kroah-Hartman <gregkh@gentoo.org> +docker-0.6.3-r1.ebuild:
  add dependancy on app-arch/xz-utils as it is needed

*docker-0.6.3 (25 Sep 2013)

  25 Sep 2013; Greg Kroah-Hartman <gregkh@gentoo.org> +docker-0.6.3.ebuild,
  +files/docker-r2.confd, +files/docker-r2.initd, +files/docker.initd,
  +files/docker.service, +metadata.xml:
  initial docker ebuild taken (with permission) from git@github.com:tianon
  /docker-overlay.git
