From 3c1016376d4761ecca61e5d4c43bbd3e4ba180bc Mon Sep 17 00:00:00 2001 From: BlackNoxis Date: Sat, 2 Apr 2016 12:17:01 +0300 Subject: [docker] added docker to the repo. included support for our binary kernel and systemd --- app-emulation/docker/ChangeLog | 152 +++++++++++ app-emulation/docker/ChangeLog-2015 | 283 +++++++++++++++++++++ app-emulation/docker/Manifest | 29 +++ app-emulation/docker/docker-1.10.0.ebuild | 270 ++++++++++++++++++++ app-emulation/docker/docker-1.6.1.ebuild | 246 ++++++++++++++++++ app-emulation/docker/docker-1.6.2.ebuild | 246 ++++++++++++++++++ app-emulation/docker/docker-1.7.1.ebuild | 268 +++++++++++++++++++ app-emulation/docker/docker-1.8.1.ebuild | 268 +++++++++++++++++++ app-emulation/docker/docker-1.8.2.ebuild | 270 ++++++++++++++++++++ app-emulation/docker/docker-1.9.0.ebuild | 268 +++++++++++++++++++ app-emulation/docker/docker-1.9.1.ebuild | 265 +++++++++++++++++++ app-emulation/docker/docker-9999.ebuild | 267 +++++++++++++++++++ app-emulation/docker/files/15404-fix-go14_15.patch | 85 +++++++ .../docker/files/18074-disable-journald-arm.patch | 30 +++ .../docker/files/7179-add-audit_write-cap.patch | 29 +++ .../docker/files/docker-1.7.1-service-patch.patch | 12 + app-emulation/docker/files/docker-r2.confd | 18 ++ app-emulation/docker/files/docker-r2.initd | 54 ++++ app-emulation/docker/files/docker-r3.confd | 13 + app-emulation/docker/files/docker-r3.initd | 31 +++ app-emulation/docker/files/docker.initd | 31 +++ app-emulation/docker/files/docker.service | 13 + 22 files changed, 3148 insertions(+) create mode 100644 app-emulation/docker/ChangeLog create mode 100644 app-emulation/docker/ChangeLog-2015 create mode 100644 app-emulation/docker/Manifest create mode 100644 app-emulation/docker/docker-1.10.0.ebuild create mode 100644 app-emulation/docker/docker-1.6.1.ebuild create mode 100644 app-emulation/docker/docker-1.6.2.ebuild create mode 100644 app-emulation/docker/docker-1.7.1.ebuild create mode 100644 app-emulation/docker/docker-1.8.1.ebuild create mode 100644 app-emulation/docker/docker-1.8.2.ebuild create mode 100644 app-emulation/docker/docker-1.9.0.ebuild create mode 100644 app-emulation/docker/docker-1.9.1.ebuild create mode 100644 app-emulation/docker/docker-9999.ebuild create mode 100644 app-emulation/docker/files/15404-fix-go14_15.patch create mode 100644 app-emulation/docker/files/18074-disable-journald-arm.patch create mode 100644 app-emulation/docker/files/7179-add-audit_write-cap.patch create mode 100644 app-emulation/docker/files/docker-1.7.1-service-patch.patch create mode 100644 app-emulation/docker/files/docker-r2.confd create mode 100644 app-emulation/docker/files/docker-r2.initd create mode 100644 app-emulation/docker/files/docker-r3.confd create mode 100644 app-emulation/docker/files/docker-r3.initd create mode 100644 app-emulation/docker/files/docker.initd create mode 100644 app-emulation/docker/files/docker.service (limited to 'app-emulation') diff --git a/app-emulation/docker/ChangeLog b/app-emulation/docker/ChangeLog new file mode 100644 index 00000000..521e992b --- /dev/null +++ b/app-emulation/docker/ChangeLog @@ -0,0 +1,152 @@ +# ChangeLog for app-emulation/docker +# Copyright 1999-2016 Gentoo Foundation; Distributed under the GPL v2 +# (auto-generated from git log) + +*docker-1.7.1 (09 Aug 2015) +*docker-1.6.2 (09 Aug 2015) +*docker-1.6.1 (09 Aug 2015) + + 09 Aug 2015; Robin H. Johnson +docker-1.6.1.ebuild, + +docker-1.6.2.ebuild, +docker-1.7.1.ebuild, + +files/7179-add-audit_write-cap.patch, +files/docker-r2.confd, + +files/docker-r2.initd, +files/docker-r3.confd, +files/docker-r3.initd, + +files/docker.initd, +files/docker.service, +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 + X-Thanks: Alec Warner - did the GSoC 2006 migration + tests + X-Thanks: Robin H. Johnson - infra guy, herding this + project + X-Thanks: Nguyen Thai Ngoc Duy - Former Gentoo + developer, wrote Git features for the migration + X-Thanks: Brian Harring - wrote much python to improve + cvs2svn + X-Thanks: Rich Freeman - validation scripts + X-Thanks: Patrick Lauer - Gentoo dev, running new 2014 + work in migration + X-Thanks: Michał Górny - scripts, QA, nagging + X-Thanks: All of other Gentoo developers - many ideas and lots of paint on + the bikeshed + + 09 Aug 2015; Ulrich Müller files/docker-r2.initd, + files/docker-r3.initd, files/docker.initd: + [QA] Remove executable bit from files, bug 550434. + + 24 Aug 2015; Justin Lecher metadata.xml: + Use https by default + + Convert all URLs for sites supporting encrypted connections from http to + https + + Signed-off-by: Justin Lecher + + 24 Aug 2015; Mike Gilbert 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 + + 25 Aug 2015; William Hubbs metadata.xml: + add myself as a maintainer + + This was approved by both alunduil and xarthisius. + +*docker-1.8.1 (25 Aug 2015) + + 25 Aug 2015; William Hubbs +docker-1.8.1.ebuild: + version bump for 1.8.1 + + This is for bug #557972. + +*docker-9999 (25 Aug 2015) + + 25 Aug 2015; William Hubbs +docker-9999.ebuild: + add live ebuild + + 27 Aug 2015; Kacper Kowalik docker-1.8.1.ebuild, + +files/15404-fix-go14_15.patch: + Apply upstream patch fixing issue with go>=1.4. Fixes #558344 + + Package-Manager: portage-2.2.20 + + 19 Sep 2015; Agostino Sarubbo docker-1.7.1.ebuild: + amd64 stable wrt bug #550894 + + Package-Manager: portage-2.2.20.1 + RepoMan-Options: --include-arches="amd64" + +*docker-1.8.2 (28 Sep 2015) + + 28 Sep 2015; Kacper Kowalik +docker-1.8.2.ebuild: + Version bump for 1.8.2. Ebuild ported from Tianon's overlay + + Package-Manager: portage-2.2.20 + + 29 Sep 2015; Justin Lecher docker-1.8.2.ebuild: + Apply compat patch for go-1.5 + + Gentoo-Bug: https://bugs.gentoo.org/show_bug.cgi?id=558344 + + Package-Manager: portage-2.2.22 + Signed-off-by: Justin Lecher + + 29 Sep 2015; Justin Lecher docker-1.6.2.ebuild, + docker-1.7.1.ebuild, docker-1.8.2.ebuild, docker-9999.ebuild: + Inherit eutils.eclass for epatch_user + + Package-Manager: portage-2.2.22 + Signed-off-by: Justin Lecher + +*docker-1.9.0 (03 Nov 2015) + + 03 Nov 2015; Kacper Kowalik +docker-1.9.0.ebuild: + version bump to 1.9.0. Ebuild ported from Tianon's overlay + + Package-Manager: portage-2.2.20 + +*docker-1.9.1 (24 Nov 2015) + + 24 Nov 2015; Kacper Kowalik +docker-1.9.1.ebuild, + +files/18074-disable-journald-arm.patch: + version bump, fixes #566432 + + 24 Jan 2016; Michał Górny 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 metadata.xml: + Set appropriate maintainer types in metadata.xml (GLEP 67) + +*docker-1.10.0 (08 Feb 2016) + + 08 Feb 2016; Kacper Kowalik +docker-1.10.0.ebuild: + version bump to 1.10.0 + + Fixes bug 574086 reported by RAPHEAD + Ported from Tianon's overlay with following modifications: + + * dropped ~arm ~x86 keywords + * simplified gcc-specs-pie sed invocation + * moved libseccomp to CDEPEND (*.h required for build) + + Package-Manager: portage-2.2.27 + diff --git a/app-emulation/docker/ChangeLog-2015 b/app-emulation/docker/ChangeLog-2015 new file mode 100644 index 00000000..477d682e --- /dev/null +++ b/app-emulation/docker/ChangeLog-2015 @@ -0,0 +1,283 @@ +# 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 docker-1.7.1.ebuild: + Make UTS_NS check non-fatal too #555434 by Deniss Gaplevsky. + + 28 Jul 2015; Kacper Kowalik docker-1.7.1.ebuild: + Make kernel checks non fatal. Thanks to Tianon for the + patch. Fixes #555434 by Deniss Gaplevsky + +*docker-1.7.1 (24 Jul 2015) + + 24 Jul 2015; Kacper Kowalik +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 +docker-1.7.0-r1.ebuild: + add slot dependency on dev-lang/go, approved by all maintainers + + 05 Jul 2015; Manuel Rüger 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 +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 +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 metadata.xml: + add alunduil to maintainers + + 30 Jun 2015; Manuel Rüger docker-1.6.1.ebuild: + Install zsh-completions unconditionally. + + 07 Jun 2015; Justin Lecher docker-1.6.1.ebuild: + Add missing eclass + + 07 Jun 2015; Justin Lecher metadata.xml: + Add github to remote-id in metadata.xml + + 08 May 2015; Kacper Kowalik -docker-1.5.0.ebuild: + drop old wrt #548884 + +*docker-1.6.1 (08 May 2015) + + 08 May 2015; Kacper Kowalik +docker-1.6.1.ebuild, + -docker-1.6.0.ebuild: + Version bump, drop old wrt #548884 + + 04 May 2015; Justin Lecher docker-1.6.0.ebuild: + Add missing dependency on aufs4, thanks jbergstroem for the report + + 29 Apr 2015; Kacper Kowalik 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 +docker-1.6.0.ebuild: + Version bump, grabbed from tianon's docker overlay. Fixes #547316 + + 14 Mar 2015; Kacper Kowalik docker-1.5.0.ebuild: + Check if CPUSETS are enabled in kernel wrt bug #536546 by Dirk Best . Thanks to Tianon for reporting and + fixing it upstream + + 03 Mar 2015; Kacper Kowalik docker-1.5.0.ebuild, + metadata.xml: + Port changes from Tianon's overlay. Fixes bug #541742 by Thomas Capricelli + + + 19 Feb 2015; Patrick Lauer -docker-1.3.3-r1.ebuild, + -docker-1.4.1.ebuild: + Remove old versions with unsatisfiable dependencies + + 15 Feb 2015; Patrick Lauer 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 +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 +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 +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 +docker-1.4.0.ebuild, + -docker-1.3.2.ebuild: + Version bump, drop vulnerable versions wrt #532344 + + 26 Nov 2014; Kacper Kowalik docker-1.3.2.ebuild: + Update with ebuild from Tianon's overlay + + 26 Nov 2014; Kacper Kowalik metadata.xml: + Add myself as co-maintainer + +*docker-1.3.2 (26 Nov 2014) + + 26 Nov 2014; Kacper Kowalik +docker-1.3.2.ebuild, + -docker-1.3.1.ebuild: + Version bump, drop old wrt bug #530518 + + 19 Nov 2014; Yixun Lan -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 +docker-1.3.1.ebuild: + 1.3.1 version bump + +*docker-1.2.0 (09 Sep 2014) + + 09 Sep 2014; Greg Kroah-Hartman +docker-1.2.0.ebuild: + 1.2.0 version bump + + 06 Aug 2014; Patrick Lauer 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 -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 +docker-1.1.0.ebuild: + 1.1.0 update + +*docker-1.0.1 (29 Jun 2014) + + 29 Jun 2014; Greg Kroah-Hartman +docker-1.0.1.ebuild: + 1.0.1 version bump + + 25 Jun 2014; Patrick Lauer -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 +docker-1.0.0.ebuild: + 1.0.0 release + + 03 Jun 2014; Jeroen Roovers metadata.xml: + Add proxy-maint herd. + +*docker-0.11.1 (09 May 2014) + + 09 May 2014; Greg Kroah-Hartman +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 +docker-0.10.0.ebuild: + 0.10.0 bump + +*docker-0.9.1 (26 Mar 2014) + + 26 Mar 2014; Greg Kroah-Hartman +docker-0.9.1.ebuild: + 0.9.1 bump + +*docker-0.9.0 (11 Mar 2014) + + 11 Mar 2014; Greg Kroah-Hartman +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 +docker-0.8.1.ebuild: + 0.8.1 bump + +*docker-0.8.0 (05 Feb 2014) + + 05 Feb 2014; Greg Kroah-Hartman +docker-0.8.0.ebuild, + metadata.xml: + 0.8.0 bump + +*docker-0.7.6 (16 Jan 2014) + + 16 Jan 2014; Greg Kroah-Hartman +docker-0.7.6.ebuild: + 0.7.6 version bump + + 10 Jan 2014; Greg Kroah-Hartman -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 +docker-0.7.5.ebuild: + 0.7.5 bump + +*docker-0.7.4 (10 Jan 2014) + + 10 Jan 2014; Greg Kroah-Hartman +docker-0.7.4.ebuild: + 0.7.4 bump + +*docker-0.7.3 (04 Jan 2014) + + 04 Jan 2014; Greg Kroah-Hartman +docker-0.7.3.ebuild: + 0.7.3 version bump + + 31 Dec 2013; Tom Wijsman -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 +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 +docker-0.7.1.ebuild: + 0.7.1 bump + +*docker-0.7.0 (26 Nov 2013) + + 26 Nov 2013; Greg Kroah-Hartman +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 +docker-0.6.7.ebuild: + 0.6.7 version bump + +*docker-0.6.6 (11 Nov 2013) + + 11 Nov 2013; Greg Kroah-Hartman +docker-0.6.6.ebuild: + 0.6.6 version bump + +*docker-0.6.5 (31 Oct 2013) + + 31 Oct 2013; Greg Kroah-Hartman +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 +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 +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 diff --git a/app-emulation/docker/Manifest b/app-emulation/docker/Manifest new file mode 100644 index 00000000..1075f099 --- /dev/null +++ b/app-emulation/docker/Manifest @@ -0,0 +1,29 @@ +AUX 15404-fix-go14_15.patch 2545 SHA256 343ff859cc237cb190e60ed083c83b68ea93fbb6aabccefe3777a49588708ed5 SHA512 f064498fd8d12372c81489fd41959ff3ee24f31e9e16821ffc33a884cb7194c32d3ad980c2bfcc81769fc33b9769e9d6bac839c1f83c46c06ab76acf5ee8a938 WHIRLPOOL c3bdc7650ff538d0739e958398a6aa861901b5dae48f34117713c155237cd432cb9d13f683301ec34a566cc4fba5e6501ac7b50b8516b4092fc587e7b59ad09e +AUX 18074-disable-journald-arm.patch 1017 SHA256 c02469b8329018cdb054a256a1cf51d8dc58a2cabaca5aea93904c9ed88d3222 SHA512 04fe749cbef896fe039f0967c792d1b06418194e61acafd2f41be7aff1dc5408c16869241ddc823e30019291106efc8a12d1d910faf8340e2da1de10988505f6 WHIRLPOOL 3722fa9b0ed7690ee4208e58ca12513ca262629831c4b69ea4976004ecd85c83912400163bf7a05c53aee88b3d37b365295d52de433b75a7932f2f15ae50d66d +AUX 7179-add-audit_write-cap.patch 901 SHA256 a776377cf2aae6f832eda127153817b9bd8564295a02a4ffe1cc75a13b3f4828 SHA512 59c6859e3e843c44650706d359cded1fce42033c13e9c332abd28f8d6434bc4396559ec7d204a5da78535b388546797b2edb03dd765a25f346db33a925d2a734 WHIRLPOOL 6ceecfda3af9de7e31c03716a65c91d228b2ec99cf76e0e8dfdebc59c73ce1ca82b0880259f50566b935c48551b2897c817b72fd002c8ebd550aec5630bdbfb6 +AUX docker-1.7.1-service-patch.patch 423 SHA256 23018c3c64dbd6e71a843510d58c41ce9ab03c19cec4c742760279e180c0b201 SHA512 e199d2dfe2b52f7b74a97465b10840b7cf0eee669ba39a988d936a4a46b82525afdc45da3e9a64ba1db20d6c432d05b0668eb5ec00c310eec1898840c55488c9 WHIRLPOOL 203338c29a87090c9affc39c015aa5765969268d26c235821239bfe20c4501342582b8468ef6428838c7da3f8777107597e5cc57398a06efc81286c92e93804d +AUX docker-r2.confd 581 SHA256 94e1c07b09701f3b0b1c4f6f917206da3b32f8d7e961c3850c4391ebd59df0b4 SHA512 5838270ff9ce7b9a562b2449ba5f4ad72db956dd03f6a1b006c8019ff43fea1c4ae1e2a4818fb092b6096cff6bd9ce539b05b7940412c55b3bb3e30c356da944 WHIRLPOOL a8e3759b6c86855afa7e784d50a7926fc888d50ec03dc2d9dcd70c3f2dd11caf6670196d91f383cab1d603f32a968bed4b3a0668ec1a38d41dc1142ec92235cc +AUX docker-r2.initd 1620 SHA256 17c2a455f5bc1cc73e2c37d93d9a0cb94c6c77244fa553993578ec3ca1701a80 SHA512 fe5555782f795d5edf0309a6c57a58a623dd9789e44de52f36d9509b710558059c3731e6ccc44e163f056698b5cbe50b2013870a493dfaac56a8e0f3f28e8562 WHIRLPOOL 95158b66bdbc8a5cad73dec62aa8a9cc8c2a09cf62c698f1beff8bfb175c91dfb53279c435f47d0aae2861efcf74ea4589b683f15d16521f3f9c8d19d8208e83 +AUX docker-r3.confd 356 SHA256 be66cae5c678687ad989e8b8409b98e99c6f7dc484babb6018907ce53a01c33d SHA512 3fed48b59ca329f755f883fe794556179fb85c093342716f0455b716c0408e3e7a074ba32fe66579f0ca79b7a0cc82718a1d05c84c5d69f53a474b6f1e167eb0 WHIRLPOOL fef81b13617bba43a31f32c0df8a25173556ddb4accf8a985435cf374cf939c5f2da657a3435d03cf9e551858a4c1bcc714e2a1744a7e4abb3d097df8fbb7c8c +AUX docker-r3.initd 783 SHA256 ad5b136feeda30b7357263da628760c3edde5c4cac4344835dc2631f607cb534 SHA512 8d0d38985fd1efbb0449b068587293396945744aac0512828da040d81874018a19a9c06119b92d5dd55f44a8a6184c4cfd55f8751d0dc15c840c2fe1f70687b2 WHIRLPOOL 78bbb5716d631e009938ed7ef23e7ba121ac52f1b5926e4a2723dee766b2decdcfe1dc0bf8aaf4e8bff3904c14d742d1f1b059a667a2e870d022922b04febf4b +AUX docker.initd 774 SHA256 acffd404e1ffee5142efa59096c1e4e2e44dae6c5eedcf143948e3fd3421fa70 SHA512 ce016bdffe246abc2e763c9ec8f959876a3a042977d38adb224dedd8b2c3e4f820a30f03914fa04813cc58f23e93f82e14905c4576e2c33b52c792e380a0dd05 WHIRLPOOL c4631c099b49c0e8a714d841235ebd6622bf90560408ecff0fe857d7f8aec91616a07b57a6cb4174c5934fd5c317a8f114caf5f2549f1494ec3db4009274d697 +AUX docker.service 337 SHA256 09dbd144ed916d2b80916785109936d51eea13f59fef3d06b3a910c403dd9eea SHA512 9d9e571d4650668956e0344bdbcddb00803a87cf7bbf5d27ec5889691533407705b0531c3d9ce3fe686d57d5f3c6dc24ceaf3c7b9173262538b4fb90182a8472 WHIRLPOOL 27a201e507c24c78854e6ecb4d2e727de21adce7b3f212d8a5ef8c4295e518dd6a80c5f0f38a83ae514f94ace1eb6c4dcd1615678851358564a4646b36cfd20a +DIST docker-1.10.0.tar.gz 9966458 SHA256 4321baec0839a0f57b9bb3a20d84f2ab1ff045fbe631c3aa76bbc1db67012635 SHA512 dc8c421e704990882dce26d23929d71dffeac605e07d595872f1fa5c0920f214a368c902ecd7c739f32a468c276001acf3cef1676aeaeffc8e4530ec028db070 WHIRLPOOL 583f186e338624ddb8d67941e62c5cc9f12af99a13939b20739dbe2d46eff0b3aa21fc8dec508d7b6f8dd13c4ff4e0f52cf7afd174d5289f7966c2cfefa3a081 +DIST docker-1.6.1.tar.gz 5713944 SHA256 aa3534277d11b32bc3564b801aeed0502f067317e7e111bd91ce2d989d34c51e SHA512 d2647f191fd295c8a9326e11ddbf6e77f33b70f14e3ebd37db3c9fa1f4946e0e3f426078ee847f52d7c57fc7783d26afe3e5d2e7ff17d8e6bb4f71609e8f5ef2 WHIRLPOOL e12c799ef63a0646f7393b00b6c1e200f350f7089445c58819ae5b53d66d18d985cb9f8fde1cd3ecfa55c2f0186064fc7080b7ebba132404aa15502029881602 +DIST docker-1.6.2.tar.gz 5714121 SHA256 f3a031b23ea9ff0fdbf3ffb9449c64ec51bb053491b47b28000eb4cce9f23203 SHA512 c27bdafabcb8ad2e49bee9e1529141a25596ba2b59435fb9368fc406950d0d7d1cbd876f1f4248dfc7089a22b8a2d13009dd164bde87e37b95a8e502bb49cac9 WHIRLPOOL aea4105ba30104d751203153b6208e363ce0abb3145ee134e675c4bc640e888afb281e7ba9009a30b9af37e829185684427a33b947d8710b49562e3352526c06 +DIST docker-1.7.1.tar.gz 6853527 SHA256 9cd26415d68a88d3cf576e7e78c2fe97f42af795404f552728acc5b41dccf4ef SHA512 9b32c3deab77a27a4322a3ccbb3759a2c2a5627605090c4517c3754e6821407abcf5ffa227bad1fdafcbba068cdcaab586015dd8cfe9aed7e8a221d0615463f1 WHIRLPOOL 41b1afd8ea08c3452e5658d73e85c3b79a64f85fb4cb99c4c6a2ce1ab49836cebbe14724afe47898cb8d9bb9d4d69c64ff1c061895f3b9534150bc7ab50e2b22 +DIST docker-1.8.1.tar.gz 7562594 SHA256 7f22e88a994dc1bc143f87215de01ccd902450e6e8d747467d042a56db792b03 SHA512 6c015b236914da945d9e5bf2fed3e8a0a4d1e0c44ee02bf6edc04b2bb48b626353e37de45cd99c486b7ced70807e606d5eac2f1bdb3f8a7ba86cd9b71e4f5504 WHIRLPOOL 8d514fb309f0ddbb92bcf84f4d79320e18c26211536919bbed68888f5af77247f14f93239e5c890c5214cf0a9663acc48a45545a87227f0fe4bf8866ac7d7c5c +DIST docker-1.8.2.tar.gz 7563667 SHA256 457569ca8edd70293132789bfe51636f86cd8a46a60c6d02d5ee8600cf79f74b SHA512 c44f3cc0e0b7db463730620c0ec4b1aa1ea4a42f6528c891914318cb945aaa906e8eeaf91d32fb2d87a11ea1be428d1cf0de7d3ce4681c7db37390e4e1f79c67 WHIRLPOOL 2023f433ae25cc11fed6e4109a81dd949765daf342011f08a0ce8c1a8572ced595273ab78c45ac09abe895766c4443ff5a3219c5fce37725503bcdc39f49a947 +DIST docker-1.9.0.tar.gz 7815144 SHA256 1c06baea61971a711f9e510800fb4de5e0d8a6560963cfdc891e0037b40dc974 SHA512 16c7fd900ff1122ccd62ce93b84209b026a165ff647cd4875e32c16251098c05e9e7de834cc6f27d164b5be168f8fd16323ec60593287a787f6fa8fcef144291 WHIRLPOOL 4031e3aa03f74afaf395a412668d7142f867e6279a9d0ac5334a6b1d8b3ad5cccc93961d0e1c63aa7fc46179555a6f106ce6e8acbec774d21a7af37a147a2ea0 +DIST docker-1.9.1.tar.gz 7824414 SHA256 ff0ad9647b756381758a16440a48e6f3c8615bbc903e53680569aac0b0a85157 SHA512 db9db1d5095b2afe2285265414c36026d2b42d5547301d7d462151b81553f33e242b403b566e7835727d51b77e3176c049f1e9f37f60b59b3c66b95403c97b9d WHIRLPOOL 93118093947c8a490a2007003e45974d7923afae4111c59e2f026787cf57f99b275be1be4a9e69b17cddf576f2d2af7fadcaa1f7ebc0ca08ce0e42a055ace22b +EBUILD docker-1.10.0.ebuild 7363 SHA256 bf9f3d39cbfb4aaac127be898ffa7e3869329bc32319fc25c6d5eb0684133efc SHA512 3d257d060f5deed1df7af15a6a1e25af6b4524d7d191e0a6d3cbcb018e7ba7058df3531373d9163e258516d0ca39f5a22d790a8c348911d20e2d3d318bbd499e WHIRLPOOL 1090068305004b1c2d1a9f1c2af6f63052f106a705b9358654d8347aabd6208dee7289d7efd7d4629e5f7a29e35f240a15ce2732b3c09f61c61f30425821befa +EBUILD docker-1.6.1.ebuild 6882 SHA256 69e4c5b1372fdc8fdaa310fe283fbae71329d025d10abf228dacb80add61e35d SHA512 c00b17fd41800d8d2074ff4e6e2c19b02e75f3222d1041bc94add7816e9af73c0e26a15b99e1858ad86ed2a9e6a12249bacf07fc345cc4f786ba5c3d49c509b5 WHIRLPOOL 89c1ba35977df8016e684e7bc2b779c4f42bc816cffb79bc43d1b48eda6d7829f5b23c8dc4614c1f9736f850e40fa45186ded2f9ff8ea55be15650ac3ba1a225 +EBUILD docker-1.6.2.ebuild 6885 SHA256 53a3b6b54dea0e5d57fb8b42be40a2464904223eae6b7a7cd69ae7dbbb366599 SHA512 830c702cff169d747cffae97adf8f93431f9d6d7d46f46979657fd315cba270c4a0fe2e395d472b54cfb939ddfd2855b368edca9ae78e9ead64cea244c4c664e WHIRLPOOL 609c1ab3645778ca6d770cfb5fcc2fcb0fbd6e7d6f3b4c2b4df0a945347b6316477fa6ead5346779b46e571f1e8457e981fdbd4b3844f476e0b1946efc4a498b +EBUILD docker-1.7.1.ebuild 7292 SHA256 707edb93d5b326565284c5e8f7fafdad5dea6fabf7cd31a8408a2830feb97109 SHA512 573bade239b1f97d136d0662d1d9a59d831ac60c7070e7ab559a9417853cc70c7e01efae171a7bf0c66386dca6c8128d986f79108b2f237556d98cb857d4d8ce WHIRLPOOL 400cbffc8799714453a89f3eeb59102e5b6638ead616e95acf559810809bb2a28c4d466ca3d357595e742903262d391ecea35ff5245245b0f5d14da882ed5298 +EBUILD docker-1.8.1.ebuild 7315 SHA256 2d5738f5a69ab4e3bdf8970a900a2c10754482dbe51f85b68ee0b74b129667ed SHA512 17b8fcbefc5b7438007a8d3454aa53db7f7b6bad877d6583da2eb323199f29cd076e534ece3eabaa776e95c45314ba006427fb040eea2190a4bb9a32dcf89c3c WHIRLPOOL 66a2c2ae7f0fc32af6abce88bdace33b313e37b8e8e384e2a090ca2c34fb79b24c619eea4c090180ea5f66ab02014eebe51a4b4639d8ff5f3eb4a04e1af16641 +EBUILD docker-1.8.2.ebuild 7383 SHA256 a16b32bf15666273ed7c8f7ff45e10d126f8b463fe233f9dbaff6d06c27b2a28 SHA512 9534e43c1a3c9d2886763381909d3eded7b563b1ec90fbd85156f337d508dc59019e4d428f4475ae8b040b8dadae655d6ca1ad1c377abdaa0a9aa7ccb14fb1b0 WHIRLPOOL b19227bdda570876220130ab45a04603b08a98ac123d3e5a383431473409ea64b9f266b9b1749d6e0cff1d77c3892524dc375ba0e18eb2b797dbf6827d35d1b0 +EBUILD docker-1.9.0.ebuild 7364 SHA256 5a00d49343f2e6ceec9d3a0285cf5dc0f671a13381c7bccf0e6b4961fff9e4d2 SHA512 fce1ad73f291194ff0dd7f0782b23246759943aa52c91bb99e1cb7c70ab00e0a649e2886343bb3b82cf814c2282be44774f8721a15705c8901cf142c129a7d46 WHIRLPOOL 97cb543e96cf223e5a3278b641b6be0a6d7e01701e12b9143efda572b56f600c77d02c80c437e0f8fe841b2ac24e71e491811012b6e18399cdfe28d631b2ec2d +EBUILD docker-1.9.1.ebuild 7375 SHA256 b5433bc1b52afa90cc5e7479d2c14cd77897115e6d404fc1b466c2132a813200 SHA512 a71555a6a9bc4ca35baf0321e44a9c97c44da34ef1fdc6176c28306b4386ec238bdf744a7684dac00c28c5d23432e687d97b62a72a0c9d372a33f12f792e1111 WHIRLPOOL 086dca81c002e13ed7fcbedae8d1412ba4707d734aabc14c2f7f5ab4b58899b8289abe943470e267bad7c3ac2a62405bd1b9777816c3d46a6ad0a3c7a68b1a07 +EBUILD docker-9999.ebuild 7269 SHA256 9fa2f0cdaf271dd1e50758ecf2bbbdb2fd3ce32e1d093f121457926877aaf5f4 SHA512 6f7c94e24519dafafb2a32878c9a0a0453ff9a68b1a9512a9377ed52e0ac962db65de2e32020f43c756c711b08441694dcda7b69e384a00bd019cee12893aee5 WHIRLPOOL c2c90d17e8c8eeae89ee796e7647c4d3ec4681edda8aca6be1b6734e7003349db7f03dc45166d3aa7a9f8a2447ae2f2f286d2f5a8e1deee8ddaccbf448b6dc58 +MISC ChangeLog 5211 SHA256 ad8de34781ddb6d4df1a5873f3fcafbb9368a615b46ddef5b796c57b5ee336af SHA512 4b3463d71bf3b32ea8903ba5f87c1c7a65aa3e7b19bf26067b5e3a52e56feb9581f2299d4455dc21f31969bedc0a13ddc99ec8e76cb131d4305b9c5e6dae8c2a WHIRLPOOL 50f430ee87bc9dc32ada8fdba94cbfb4d90f7ae321ae58a79d708cd837d88419d3305089aa1c5fbd053c4483d5fbe646e8effa9b95b3c05330ee5e055ad6f6d1 +MISC ChangeLog-2015 9435 SHA256 36770420e0a23ee8b09a9028adc801e536c3735e355134a7d3c8185642453d44 SHA512 dde3d12dae10732a3822e0c84909285afcf325df948c61bae83852157b14d75e10151577eb3eef9af6ee94e8c292e7faac54e82565bceaf858702cd1e81c72aa WHIRLPOOL 5a3b5916981d5ec1d653b26a2789303301c103d1013d4c28fe11f926b88f200c40d1f59ac8ad750e4c55a70806b1f9c5da028e8966972c84a7ccca7820f9a294 diff --git a/app-emulation/docker/docker-1.10.0.ebuild b/app-emulation/docker/docker-1.10.0.ebuild new file mode 100644 index 00000000..4cb61f60 --- /dev/null +++ b/app-emulation/docker/docker-1.10.0.ebuild @@ -0,0 +1,270 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 + +EGO_PN="github.com/docker/docker" + +if [[ ${PV} = *9999* ]]; then + # Docker cannot be fetched via "go get", thanks to autogenerated code + EGIT_REPO_URI="https://${EGO_PN}.git" + EGIT_CHECKOUT_DIR="${WORKDIR}/${P}/src/${EGO_PN}" + inherit git-r3 +else + MY_PV="${PV/_/-}" + DOCKER_GITCOMMIT="590d510" + EGIT_COMMIT="v${MY_PV}" + SRC_URI="https://${EGO_PN}/archive/${EGIT_COMMIT}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~amd64" + [ "$DOCKER_GITCOMMIT" ] || die "DOCKER_GITCOMMIT must be added manually for each bump!" + inherit golang-vcs-snapshot +fi +inherit bash-completion-r1 linux-info multilib systemd udev user + +DESCRIPTION="Docker complements kernel namespacing with a high-level API which operates at the process level" +HOMEPAGE="https://dockerproject.org" +LICENSE="Apache-2.0" +SLOT="0" +IUSE="apparmor aufs btrfs +device-mapper experimental overlay seccomp" + +# https://github.com/docker/docker/blob/master/hack/PACKAGERS.md#build-dependencies +CDEPEND=" + >=dev-db/sqlite-3.7.9:3 + device-mapper? ( + >=sys-fs/lvm2-2.02.89[thin] + ) + seccomp? ( + >=sys-libs/libseccomp-2.2.1[static-libs] + ) +" + +DEPEND=" + ${CDEPEND} + + dev-go/go-md2man + + btrfs? ( + >=sys-fs/btrfs-progs-3.8 + ) +" + +# https://github.com/docker/docker/blob/master/hack/PACKAGERS.md#runtime-dependencies +# https://github.com/docker/docker/blob/master/hack/PACKAGERS.md#optional-dependencies +RDEPEND=" + ${CDEPEND} + + !app-emulation/docker-bin + >=net-firewall/iptables-1.4 + sys-process/procps + >=dev-vcs/git-1.7 + >=app-arch/xz-utils-4.9 + + apparmor? ( + sys-libs/libapparmor[static-libs] + ) +" + +RESTRICT="installsources strip" + +# see "contrib/check-config.sh" from upstream's sources +CONFIG_CHECK=" + ~NAMESPACES ~NET_NS ~PID_NS ~IPC_NS ~UTS_NS + ~DEVPTS_MULTIPLE_INSTANCES + ~CGROUPS ~CGROUP_CPUACCT ~CGROUP_DEVICE ~CGROUP_FREEZER ~CGROUP_SCHED ~CPUSETS ~MEMCG + ~MACVLAN ~VETH ~BRIDGE ~BRIDGE_NETFILTER + ~NF_NAT_IPV4 ~IP_NF_FILTER ~IP_NF_TARGET_MASQUERADE + ~NETFILTER_XT_MATCH_ADDRTYPE ~NETFILTER_XT_MATCH_CONNTRACK + ~NF_NAT ~NF_NAT_NEEDED + + ~POSIX_MQUEUE + + ~MEMCG_KMEM ~MEMCG_SWAP ~MEMCG_SWAP_ENABLED + + ~BLK_CGROUP ~IOSCHED_CFQ + ~CGROUP_PERF + ~CGROUP_HUGETLB + ~NET_CLS_CGROUP + ~CFS_BANDWIDTH ~FAIR_GROUP_SCHED ~RT_GROUP_SCHED +" + +ERROR_MEMCG_KMEM="CONFIG_MEMCG_KMEM: is optional" +ERROR_MEMCG_SWAP="CONFIG_MEMCG_SWAP: is required if you wish to limit swap usage of containers" +ERROR_RESOURCE_COUNTERS="CONFIG_RESOURCE_COUNTERS: is optional for container statistics gathering" + +ERROR_BLK_CGROUP="CONFIG_BLK_CGROUP: is optional for container statistics gathering" +ERROR_IOSCHED_CFQ="CONFIG_IOSCHED_CFQ: is optional for container statistics gathering" +ERROR_CGROUP_PERF="CONFIG_CGROUP_PERF: is optional for container statistics gathering" +ERROR_CFS_BANDWIDTH="CONFIG_CFS_BANDWIDTH: is optional for container statistics gathering" + +pkg_setup() { + if kernel_is lt 3 10; then + ewarn "" + ewarn "Using Docker with kernels older than 3.10 is unstable and unsupported." + ewarn " - http://docs.docker.com/installation/binaries/#check-kernel-dependencies" + fi + + # for where these kernel versions come from, see: + # https://www.google.com/search?q=945b2b2d259d1a4364a2799e80e8ff32f8c6ee6f+site%3Akernel.org%2Fpub%2Flinux%2Fkernel+file%3AChangeLog* + if ! { + kernel_is ge 3 16 \ + || { kernel_is 3 15 && kernel_is ge 3 15 5; } \ + || { kernel_is 3 14 && kernel_is ge 3 14 12; } \ + || { kernel_is 3 12 && kernel_is ge 3 12 25; } + }; then + ewarn "" + ewarn "There is a serious Docker-related kernel panic that has been fixed in 3.16+" + ewarn " (and was backported to 3.15.5+, 3.14.12+, and 3.12.25+)" + ewarn "" + ewarn "See also https://github.com/docker/docker/issues/2960" + fi + + if kernel_is le 3 18; then + CONFIG_CHECK+=" + ~RESOURCE_COUNTERS + " + fi + + if kernel_is le 3 13; then + CONFIG_CHECK+=" + ~NETPRIO_CGROUP + " + else + CONFIG_CHECK+=" + ~CGROUP_NET_PRIO + " + fi + + if use aufs; then + CONFIG_CHECK+=" + ~AUFS_FS + ~EXT4_FS_POSIX_ACL ~EXT4_FS_SECURITY + " + ERROR_AUFS_FS="CONFIG_AUFS_FS: is required to be set if and only if aufs-sources are used instead of aufs4/aufs3" + fi + + if use btrfs; then + CONFIG_CHECK+=" + ~BTRFS_FS + " + fi + + if use device-mapper; then + CONFIG_CHECK+=" + ~BLK_DEV_DM ~DM_THIN_PROVISIONING ~EXT4_FS ~EXT4_FS_POSIX_ACL ~EXT4_FS_SECURITY + " + fi + + if use overlay; then + CONFIG_CHECK+=" + ~OVERLAY_FS ~EXT4_FS_SECURITY ~EXT4_FS_POSIX_ACL + " + fi + + linux-info_pkg_setup + + # create docker group for the code checking for it in /etc/group + enewgroup docker +} + +src_prepare() { + cd "src/${EGO_PN}" || die + # allow user patches (use sparingly - upstream won't support them) + epatch_user +} + +src_compile() { + cd "src/${EGO_PN}" || die + export GOPATH="${WORKDIR}/${P}:${PWD}/vendor" + + # setup CFLAGS and LDFLAGS for separate build target + # see https://github.com/tianon/docker-overlay/pull/10 + export CGO_CFLAGS="-I${ROOT}/usr/include" + export CGO_LDFLAGS="-L${ROOT}/usr/$(get_libdir)" + + # if we're building from a zip, we need the GITCOMMIT value + [ "$DOCKER_GITCOMMIT" ] && export DOCKER_GITCOMMIT + + if gcc-specs-pie; then + sed -i "s/EXTLDFLAGS_STATIC='/&-fno-PIC /" hack/make.sh || die + grep -q -- '-fno-PIC' hack/make.sh || die 'hardened sed failed' + + sed "s/LDFLAGS_STATIC_DOCKER='/&-extldflags -fno-PIC /" \ + -i hack/make/dynbinary || die + grep -q -- '-fno-PIC' hack/make/dynbinary || die 'hardened sed failed' + fi + + # let's set up some optional features :) + export DOCKER_BUILDTAGS='' + for gd in aufs btrfs device-mapper overlay; do + if ! use $gd; then + DOCKER_BUILDTAGS+=" exclude_graphdriver_${gd//-/}" + fi + done + + for tag in apparmor seccomp; do + if use $tag; then + DOCKER_BUILDTAGS+=" $tag" + fi + done + + # https://github.com/docker/docker/pull/13338 + if use experimental; then + export DOCKER_EXPERIMENTAL=1 + else + unset DOCKER_EXPERIMENTAL + fi + + # time to build! + ./hack/make.sh dynbinary || die 'dynbinary failed' + + # build the man pages too + ./man/md2man-all.sh || die "unable to generate man pages" +} + +src_install() { + cd "src/${EGO_PN}" || die + VERSION="$(cat VERSION)" + newbin "bundles/$VERSION/dynbinary/docker-$VERSION" docker + exeinto /usr/libexec/docker + newexe "bundles/$VERSION/dynbinary/dockerinit-$VERSION" dockerinit + + newinitd contrib/init/openrc/docker.initd docker + newconfd contrib/init/openrc/docker.confd docker + + systemd_dounit contrib/init/systemd/docker.{service,socket} + + udev_dorules contrib/udev/*.rules + + dodoc AUTHORS CONTRIBUTING.md CHANGELOG.md NOTICE README.md + dodoc -r docs/* + doman man/man*/* + + dobashcomp contrib/completion/bash/* + + insinto /usr/share/zsh/site-functions + doins contrib/completion/zsh/* + + insinto /usr/share/vim/vimfiles + doins -r contrib/syntax/vim/ftdetect + doins -r contrib/syntax/vim/syntax + + # note: intentionally not using "doins" so that we preserve +x bits + mkdir -p "${D}/usr/share/${PN}/contrib" + cp -R contrib/* "${D}/usr/share/${PN}/contrib" +} + +pkg_postinst() { + udev_reload + + elog + elog "To use Docker, the Docker daemon must be running as root. To automatically" + elog "start the Docker daemon at boot, add Docker to the default runlevel:" + elog " rc-update add docker default" + elog "Similarly for systemd:" + elog " systemctl enable docker.service" + elog + elog "To use Docker as a non-root user, add yourself to the 'docker' group:" + elog " usermod -aG docker youruser" + elog +} diff --git a/app-emulation/docker/docker-1.6.1.ebuild b/app-emulation/docker/docker-1.6.1.ebuild new file mode 100644 index 00000000..adabf385 --- /dev/null +++ b/app-emulation/docker/docker-1.6.1.ebuild @@ -0,0 +1,246 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 + +DESCRIPTION="Docker complements kernel namespacing with a high-level API which operates at the process level" +HOMEPAGE="https://www.docker.com" + +GITHUB_URI="github.com/docker/docker" + +if [[ ${PV} == *9999 ]]; then + SRC_URI="" + EGIT_REPO_URI="git://${GITHUB_URI}.git" + inherit git-2 +else + MY_PV="${PV/_/-}" + MY_P="${PN}-${MY_PV}" + SRC_URI="https://${GITHUB_URI}/archive/v${MY_PV}.tar.gz -> ${MY_P}.tar.gz" + S="${WORKDIR}/${MY_P}" + DOCKER_GITCOMMIT="97cd073" + KEYWORDS="~amd64" + [ "$DOCKER_GITCOMMIT" ] || die "DOCKER_GITCOMMIT must be added manually for each bump!" +fi + +inherit bash-completion-r1 eutils linux-info multilib systemd udev user + +LICENSE="Apache-2.0" +SLOT="0" +IUSE="aufs btrfs +contrib +device-mapper doc lxc overlay vim-syntax" + +# https://github.com/docker/docker/blob/master/hack/PACKAGERS.md#build-dependencies +CDEPEND=" + >=dev-db/sqlite-3.7.9:3 + device-mapper? ( + >=sys-fs/lvm2-2.02.89[thin] + ) +" + +DEPEND=" + ${CDEPEND} + >=dev-lang/go-1.3 + btrfs? ( + >=sys-fs/btrfs-progs-3.16.1 + ) +" + +# https://github.com/docker/docker/blob/master/hack/PACKAGERS.md#runtime-dependencies +# https://github.com/docker/docker/blob/master/hack/PACKAGERS.md#optional-dependencies +RDEPEND=" + ${CDEPEND} + + !app-emulation/docker-bin + >=net-firewall/iptables-1.4 + sys-process/procps + >=dev-vcs/git-1.7 + >=app-arch/xz-utils-4.9 + + lxc? ( + >=app-emulation/lxc-1.0.7 + ) + aufs? ( + || ( + sys-fs/aufs3 + sys-fs/aufs4 + sys-kernel/aufs-sources + ) + ) +" + +RESTRICT="installsources strip" + +# see "contrib/check-config.sh" from upstream's sources +CONFIG_CHECK=" + NAMESPACES NET_NS PID_NS IPC_NS UTS_NS + DEVPTS_MULTIPLE_INSTANCES + CGROUPS CGROUP_CPUACCT CGROUP_DEVICE CGROUP_FREEZER CGROUP_SCHED CPUSETS + MACVLAN VETH BRIDGE + NF_NAT_IPV4 IP_NF_FILTER IP_NF_TARGET_MASQUERADE + NETFILTER_XT_MATCH_ADDRTYPE NETFILTER_XT_MATCH_CONNTRACK + NF_NAT NF_NAT_NEEDED + + POSIX_MQUEUE + + ~MEMCG_SWAP ~MEMCG_SWAP_ENABLED + ~RESOURCE_COUNTERS + ~CGROUP_PERF + ~CFS_BANDWIDTH +" + +ERROR_MEMCG_SWAP="CONFIG_MEMCG_SWAP: is required if you wish to limit swap usage of containers" +ERROR_RESOURCE_COUNTERS="CONFIG_RESOURCE_COUNTERS: is optional for container statistics gathering" +ERROR_CGROUP_PERF="CONFIG_CGROUP_PERF: is optional for container statistics gathering" +ERROR_CFS_BANDWIDTH="CONFIG_CFS_BANDWIDTH: is optional for container statistics gathering" + +pkg_setup() { + if kernel_is lt 3 8; then + eerror "" + eerror "Using Docker with kernels older than 3.8 is unstable and unsupported." + eerror " - http://docs.docker.com/installation/binaries/#check-kernel-dependencies" + die 'Kernel is too old - need 3.8 or above' + fi + + # for where these kernel versions come from, see: + # https://www.google.com/search?q=945b2b2d259d1a4364a2799e80e8ff32f8c6ee6f+site%3Akernel.org%2Fpub%2Flinux%2Fkernel+file%3AChangeLog* + if ! { + kernel_is ge 3 16 \ + || { kernel_is 3 15 && kernel_is ge 3 15 5; } \ + || { kernel_is 3 14 && kernel_is ge 3 14 12; } \ + || { kernel_is 3 12 && kernel_is ge 3 12 25; } + }; then + ewarn "" + ewarn "There is a serious Docker-related kernel panic that has been fixed in 3.16+" + ewarn " (and was backported to 3.15.5+, 3.14.12+, and 3.12.25+)" + ewarn "" + ewarn "See also https://github.com/docker/docker/issues/2960" + fi + + if use aufs; then + CONFIG_CHECK+=" + ~AUFS_FS + ~EXT4_FS_POSIX_ACL ~EXT4_FS_SECURITY + " + # TODO there must be a way to detect "sys-kernel/aufs-sources" so we don't warn "sys-fs/aufs3" users about this + # an even better solution would be to check if the current kernel sources include CONFIG_AUFS_FS as an option, but that sounds hairy and error-prone + ERROR_AUFS_FS="CONFIG_AUFS_FS: is required to be set if and only if aufs-sources are used" + fi + + if use btrfs; then + CONFIG_CHECK+=" + ~BTRFS_FS + " + fi + + if use device-mapper; then + CONFIG_CHECK+=" + ~BLK_DEV_DM ~DM_THIN_PROVISIONING ~EXT4_FS ~EXT4_FS_POSIX_ACL ~EXT4_FS_SECURITY + " + fi + + if use overlay; then + CONFIG_CHECK+=" + ~OVERLAY_FS ~EXT4_FS_SECURITY ~EXT4_FS_POSIX_ACL + " + fi + + linux-info_pkg_setup +} + +src_prepare() { + # allow user patches (use sparingly - upstream won't support them) + epatch_user +} + +src_compile() { + # if we treat them right, Docker's build scripts will set up a + # reasonable GOPATH for us + export AUTO_GOPATH=1 + + # setup CFLAGS and LDFLAGS for separate build target + # see https://github.com/tianon/docker-overlay/pull/10 + export CGO_CFLAGS="-I${ROOT}/usr/include" + export CGO_LDFLAGS="-L${ROOT}/usr/$(get_libdir)" + + # if we're building from a zip, we need the GITCOMMIT value + [ "$DOCKER_GITCOMMIT" ] && export DOCKER_GITCOMMIT + + if gcc-specs-pie; then + sed -i "s/EXTLDFLAGS_STATIC='/EXTLDFLAGS_STATIC='-fno-PIC /" hack/make.sh || die + grep -q -- '-fno-PIC' hack/make.sh || die 'hardened sed failed' + + sed -i "s/LDFLAGS_STATIC_DOCKER='/LDFLAGS_STATIC_DOCKER='-extldflags -fno-PIC /" hack/make/dynbinary || die + grep -q -- '-fno-PIC' hack/make/dynbinary || die 'hardened sed failed' + fi + + # let's set up some optional features :) + export DOCKER_BUILDTAGS='' + for gd in aufs btrfs device-mapper overlay; do + if ! use $gd; then + DOCKER_BUILDTAGS+=" exclude_graphdriver_${gd//-/}" + fi + done + + # time to build! + ./hack/make.sh dynbinary || die 'dynbinary failed' + + # TODO get go-md2man and then include the man pages using docs/man/md2man-all.sh +} + +src_install() { + VERSION=$(cat VERSION) + newbin bundles/$VERSION/dynbinary/docker-$VERSION docker + exeinto /usr/libexec/docker + newexe bundles/$VERSION/dynbinary/dockerinit-$VERSION dockerinit + + newinitd contrib/init/openrc/docker.initd docker + newconfd contrib/init/openrc/docker.confd docker + + systemd_dounit contrib/init/systemd/docker.{service,socket} + + udev_dorules contrib/udev/*.rules + + dodoc AUTHORS CONTRIBUTING.md CHANGELOG.md NOTICE README.md + if use doc; then + # TODO doman contrib/man/man*/* + + docompress -x /usr/share/doc/${PF}/md + docinto md + dodoc -r docs/sources/* + fi + + dobashcomp contrib/completion/bash/* + + insinto /usr/share/zsh/site-functions + doins contrib/completion/zsh/* + + if use vim-syntax; then + insinto /usr/share/vim/vimfiles + doins -r contrib/syntax/vim/ftdetect + doins -r contrib/syntax/vim/syntax + fi + + if use contrib; then + mkdir -p "${D}/usr/share/${PN}/contrib" + cp -R contrib/* "${D}/usr/share/${PN}/contrib" + fi +} + +pkg_postinst() { + udev_reload + + elog "" + elog "To use Docker, the Docker daemon must be running as root. To automatically" + elog "start the Docker daemon at boot, add Docker to the default runlevel:" + elog " rc-update add docker default" + elog "Similarly for systemd:" + elog " systemctl enable docker.service" + elog "" + + # create docker group if the code checking for it in /etc/group exists + enewgroup docker + + elog "To use Docker as a non-root user, add yourself to the 'docker' group:" + elog " usermod -aG docker youruser" + elog "" +} diff --git a/app-emulation/docker/docker-1.6.2.ebuild b/app-emulation/docker/docker-1.6.2.ebuild new file mode 100644 index 00000000..1eb4f5fc --- /dev/null +++ b/app-emulation/docker/docker-1.6.2.ebuild @@ -0,0 +1,246 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 + +DESCRIPTION="Docker complements kernel namespacing with a high-level API which operates at the process level" +HOMEPAGE="https://www.docker.com" + +GITHUB_URI="github.com/docker/docker" + +if [[ ${PV} == *9999 ]]; then + SRC_URI="" + EGIT_REPO_URI="git://${GITHUB_URI}.git" + inherit git-2 +else + MY_PV="${PV/_/-}" + MY_P="${PN}-${MY_PV}" + SRC_URI="https://${GITHUB_URI}/archive/v${MY_PV}.tar.gz -> ${MY_P}.tar.gz" + S="${WORKDIR}/${MY_P}" + DOCKER_GITCOMMIT="7c8fca2" + KEYWORDS="~amd64" + [ "$DOCKER_GITCOMMIT" ] || die "DOCKER_GITCOMMIT must be added manually for each bump!" +fi + +inherit bash-completion-r1 eutils linux-info multilib systemd udev user + +LICENSE="Apache-2.0" +SLOT="0" +IUSE="aufs btrfs +contrib +device-mapper doc lxc overlay vim-syntax" + +# https://github.com/docker/docker/blob/master/hack/PACKAGERS.md#build-dependencies +CDEPEND=" + >=dev-db/sqlite-3.7.9:3 + device-mapper? ( + >=sys-fs/lvm2-2.02.89[thin] + ) +" + +DEPEND=" + ${CDEPEND} + >=dev-lang/go-1.3 + btrfs? ( + >=sys-fs/btrfs-progs-3.16.1 + ) +" + +# https://github.com/docker/docker/blob/master/hack/PACKAGERS.md#runtime-dependencies +# https://github.com/docker/docker/blob/master/hack/PACKAGERS.md#optional-dependencies +RDEPEND=" + ${CDEPEND} + + !app-emulation/docker-bin + >=net-firewall/iptables-1.4 + sys-process/procps + >=dev-vcs/git-1.7 + >=app-arch/xz-utils-4.9 + + lxc? ( + >=app-emulation/lxc-1.0.7 + ) + aufs? ( + || ( + sys-fs/aufs3 + sys-fs/aufs4 + sys-kernel/aufs-sources + ) + ) +" + +RESTRICT="installsources strip" + +# see "contrib/check-config.sh" from upstream's sources +CONFIG_CHECK=" + NAMESPACES NET_NS PID_NS IPC_NS UTS_NS + DEVPTS_MULTIPLE_INSTANCES + CGROUPS CGROUP_CPUACCT CGROUP_DEVICE CGROUP_FREEZER CGROUP_SCHED CPUSETS + MACVLAN VETH BRIDGE + NF_NAT_IPV4 IP_NF_FILTER IP_NF_TARGET_MASQUERADE + NETFILTER_XT_MATCH_ADDRTYPE NETFILTER_XT_MATCH_CONNTRACK + NF_NAT NF_NAT_NEEDED + + POSIX_MQUEUE + + ~MEMCG_SWAP ~MEMCG_SWAP_ENABLED + ~RESOURCE_COUNTERS + ~CGROUP_PERF + ~CFS_BANDWIDTH +" + +ERROR_MEMCG_SWAP="CONFIG_MEMCG_SWAP: is required if you wish to limit swap usage of containers" +ERROR_RESOURCE_COUNTERS="CONFIG_RESOURCE_COUNTERS: is optional for container statistics gathering" +ERROR_CGROUP_PERF="CONFIG_CGROUP_PERF: is optional for container statistics gathering" +ERROR_CFS_BANDWIDTH="CONFIG_CFS_BANDWIDTH: is optional for container statistics gathering" + +pkg_setup() { + if kernel_is lt 3 10; then + eerror "" + eerror "Using Docker with kernels older than 3.10 is unstable and unsupported." + eerror " - http://docs.docker.com/installation/binaries/#check-kernel-dependencies" + die 'Kernel is too old - need 3.10 or above' + fi + + # for where these kernel versions come from, see: + # https://www.google.com/search?q=945b2b2d259d1a4364a2799e80e8ff32f8c6ee6f+site%3Akernel.org%2Fpub%2Flinux%2Fkernel+file%3AChangeLog* + if ! { + kernel_is ge 3 16 \ + || { kernel_is 3 15 && kernel_is ge 3 15 5; } \ + || { kernel_is 3 14 && kernel_is ge 3 14 12; } \ + || { kernel_is 3 12 && kernel_is ge 3 12 25; } + }; then + ewarn "" + ewarn "There is a serious Docker-related kernel panic that has been fixed in 3.16+" + ewarn " (and was backported to 3.15.5+, 3.14.12+, and 3.12.25+)" + ewarn "" + ewarn "See also https://github.com/docker/docker/issues/2960" + fi + + if use aufs; then + CONFIG_CHECK+=" + ~AUFS_FS + ~EXT4_FS_POSIX_ACL ~EXT4_FS_SECURITY + " + # TODO there must be a way to detect "sys-kernel/aufs-sources" so we don't warn "sys-fs/aufs3" users about this + # an even better solution would be to check if the current kernel sources include CONFIG_AUFS_FS as an option, but that sounds hairy and error-prone + ERROR_AUFS_FS="CONFIG_AUFS_FS: is required to be set if and only if aufs-sources are used" + fi + + if use btrfs; then + CONFIG_CHECK+=" + ~BTRFS_FS + " + fi + + if use device-mapper; then + CONFIG_CHECK+=" + ~BLK_DEV_DM ~DM_THIN_PROVISIONING ~EXT4_FS ~EXT4_FS_POSIX_ACL ~EXT4_FS_SECURITY + " + fi + + if use overlay; then + CONFIG_CHECK+=" + ~OVERLAY_FS ~EXT4_FS_SECURITY ~EXT4_FS_POSIX_ACL + " + fi + + linux-info_pkg_setup +} + +src_prepare() { + # allow user patches (use sparingly - upstream won't support them) + epatch_user +} + +src_compile() { + # if we treat them right, Docker's build scripts will set up a + # reasonable GOPATH for us + export AUTO_GOPATH=1 + + # setup CFLAGS and LDFLAGS for separate build target + # see https://github.com/tianon/docker-overlay/pull/10 + export CGO_CFLAGS="-I${ROOT}/usr/include" + export CGO_LDFLAGS="-L${ROOT}/usr/$(get_libdir)" + + # if we're building from a zip, we need the GITCOMMIT value + [ "$DOCKER_GITCOMMIT" ] && export DOCKER_GITCOMMIT + + if gcc-specs-pie; then + sed -i "s/EXTLDFLAGS_STATIC='/EXTLDFLAGS_STATIC='-fno-PIC /" hack/make.sh || die + grep -q -- '-fno-PIC' hack/make.sh || die 'hardened sed failed' + + sed -i "s/LDFLAGS_STATIC_DOCKER='/LDFLAGS_STATIC_DOCKER='-extldflags -fno-PIC /" hack/make/dynbinary || die + grep -q -- '-fno-PIC' hack/make/dynbinary || die 'hardened sed failed' + fi + + # let's set up some optional features :) + export DOCKER_BUILDTAGS='' + for gd in aufs btrfs device-mapper overlay; do + if ! use $gd; then + DOCKER_BUILDTAGS+=" exclude_graphdriver_${gd//-/}" + fi + done + + # time to build! + ./hack/make.sh dynbinary || die 'dynbinary failed' + + # TODO get go-md2man and then include the man pages using docs/man/md2man-all.sh +} + +src_install() { + VERSION=$(cat VERSION) + newbin bundles/$VERSION/dynbinary/docker-$VERSION docker + exeinto /usr/libexec/docker + newexe bundles/$VERSION/dynbinary/dockerinit-$VERSION dockerinit + + newinitd contrib/init/openrc/docker.initd docker + newconfd contrib/init/openrc/docker.confd docker + + systemd_dounit contrib/init/systemd/docker.{service,socket} + + udev_dorules contrib/udev/*.rules + + dodoc AUTHORS CONTRIBUTING.md CHANGELOG.md NOTICE README.md + if use doc; then + # TODO doman contrib/man/man*/* + + docompress -x /usr/share/doc/${PF}/md + docinto md + dodoc -r docs/sources/* + fi + + dobashcomp contrib/completion/bash/* + + insinto /usr/share/zsh/site-functions + doins contrib/completion/zsh/* + + if use vim-syntax; then + insinto /usr/share/vim/vimfiles + doins -r contrib/syntax/vim/ftdetect + doins -r contrib/syntax/vim/syntax + fi + + if use contrib; then + mkdir -p "${D}/usr/share/${PN}/contrib" + cp -R contrib/* "${D}/usr/share/${PN}/contrib" + fi +} + +pkg_postinst() { + udev_reload + + elog "" + elog "To use Docker, the Docker daemon must be running as root. To automatically" + elog "start the Docker daemon at boot, add Docker to the default runlevel:" + elog " rc-update add docker default" + elog "Similarly for systemd:" + elog " systemctl enable docker.service" + elog "" + + # create docker group if the code checking for it in /etc/group exists + enewgroup docker + + elog "To use Docker as a non-root user, add yourself to the 'docker' group:" + elog " usermod -aG docker youruser" + elog "" +} diff --git a/app-emulation/docker/docker-1.7.1.ebuild b/app-emulation/docker/docker-1.7.1.ebuild new file mode 100644 index 00000000..cff5ab96 --- /dev/null +++ b/app-emulation/docker/docker-1.7.1.ebuild @@ -0,0 +1,268 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 + +DESCRIPTION="Docker complements kernel namespacing with a high-level API which operates at the process level" +HOMEPAGE="https://www.docker.com" + +GITHUB_URI="github.com/docker/docker" + +if [[ ${PV} == *9999 ]]; then + SRC_URI="" + EGIT_REPO_URI="git://${GITHUB_URI}.git" + inherit git-2 +else + MY_PV="${PV/_/-}" + MY_P="${PN}-${MY_PV}" + SRC_URI="https://${GITHUB_URI}/archive/v${MY_PV}.tar.gz -> ${MY_P}.tar.gz" + S="${WORKDIR}/${MY_P}" + DOCKER_GITCOMMIT="786b29d" + KEYWORDS="amd64" + [ "$DOCKER_GITCOMMIT" ] || die "DOCKER_GITCOMMIT must be added manually for each bump!" +fi + +inherit bash-completion-r1 eutils linux-info multilib systemd udev user + +LICENSE="Apache-2.0" +SLOT="0" +IUSE="apparmor aufs btrfs +contrib +device-mapper doc experimental lxc overlay vim-syntax" + +# https://github.com/docker/docker/blob/master/hack/PACKAGERS.md#build-dependencies +CDEPEND=" + >=dev-db/sqlite-3.7.9:3 + device-mapper? ( + >=sys-fs/lvm2-2.02.89[thin] + ) +" + +DEPEND=" + ${CDEPEND} + >=dev-lang/go-1.4:0 =sys-fs/btrfs-progs-3.8 + ) +" + +# https://github.com/docker/docker/blob/master/hack/PACKAGERS.md#runtime-dependencies +# https://github.com/docker/docker/blob/master/hack/PACKAGERS.md#optional-dependencies +RDEPEND=" + ${CDEPEND} + + !app-emulation/docker-bin + >=net-firewall/iptables-1.4 + sys-process/procps + >=dev-vcs/git-1.7 + >=app-arch/xz-utils-4.9 + + lxc? ( + >=app-emulation/lxc-1.0.7 + ) + aufs? ( + || ( + >=sys-kernel/linux-argent-3.18 + >=sys-kernel/linux-kogaion-3.14 + ) + ) + + apparmor? ( + sys-libs/libapparmor[static-libs] + ) +" + +RESTRICT="installsources strip" + +# see "contrib/check-config.sh" from upstream's sources +CONFIG_CHECK=" + ~NAMESPACES ~NET_NS ~PID_NS ~IPC_NS ~UTS_NS + ~DEVPTS_MULTIPLE_INSTANCES + ~CGROUPS ~CGROUP_CPUACCT ~CGROUP_DEVICE ~CGROUP_FREEZER ~CGROUP_SCHED ~CPUSETS + ~MACVLAN ~VETH ~BRIDGE ~BRIDGE_NETFILTER + ~NF_NAT_IPV4 ~IP_NF_FILTER ~IP_NF_TARGET_MASQUERADE + ~NETFILTER_XT_MATCH_ADDRTYPE ~NETFILTER_XT_MATCH_CONNTRACK + ~NF_NAT ~NF_NAT_NEEDED + + ~POSIX_MQUEUE + + ~MEMCG_SWAP ~MEMCG_SWAP_ENABLED + + ~BLK_CGROUP + ~IOSCHED_CFQ + ~CGROUP_PERF + ~CFS_BANDWIDTH +" + +ERROR_MEMCG_SWAP="CONFIG_MEMCG_SWAP: is required if you wish to limit swap usage of containers" +ERROR_RESOURCE_COUNTERS="CONFIG_RESOURCE_COUNTERS: is optional for container statistics gathering" +ERROR_CGROUP_PERF="CONFIG_CGROUP_PERF: is optional for container statistics gathering" +ERROR_CFS_BANDWIDTH="CONFIG_CFS_BANDWIDTH: is optional for container statistics gathering" + +pkg_setup() { + if kernel_is lt 3 10; then + ewarn "" + ewarn "Using Docker with kernels older than 3.10 is unstable and unsupported." + ewarn " - http://docs.docker.com/installation/binaries/#check-kernel-dependencies" + fi + + # for where these kernel versions come from, see: + # https://www.google.com/search?q=945b2b2d259d1a4364a2799e80e8ff32f8c6ee6f+site%3Akernel.org%2Fpub%2Flinux%2Fkernel+file%3AChangeLog* + if ! { + kernel_is ge 3 16 \ + || { kernel_is 3 15 && kernel_is ge 3 15 5; } \ + || { kernel_is 3 14 && kernel_is ge 3 14 12; } \ + || { kernel_is 3 12 && kernel_is ge 3 12 25; } + }; then + ewarn "" + ewarn "There is a serious Docker-related kernel panic that has been fixed in 3.16+" + ewarn " (and was backported to 3.15.5+, 3.14.12+, and 3.12.25+)" + ewarn "" + ewarn "See also https://github.com/docker/docker/issues/2960" + fi + + if kernel_is le 3 18; then + CONFIG_CHECK+=" + ~RESOURCE_COUNTERS + " + fi + + if use aufs; then + CONFIG_CHECK+=" + ~AUFS_FS + ~EXT4_FS_POSIX_ACL ~EXT4_FS_SECURITY + " + # TODO there must be a way to detect "sys-kernel/aufs-sources" so we don't warn "sys-fs/aufs3" users about this + # an even better solution would be to check if the current kernel sources include CONFIG_AUFS_FS as an option, but that sounds hairy and error-prone + ERROR_AUFS_FS="CONFIG_AUFS_FS: is required to be set if and only if aufs-sources are used" + fi + + if use btrfs; then + CONFIG_CHECK+=" + ~BTRFS_FS + " + fi + + if use device-mapper; then + CONFIG_CHECK+=" + ~BLK_DEV_DM ~DM_THIN_PROVISIONING ~EXT4_FS ~EXT4_FS_POSIX_ACL ~EXT4_FS_SECURITY + " + fi + + if use overlay; then + CONFIG_CHECK+=" + ~OVERLAY_FS ~EXT4_FS_SECURITY ~EXT4_FS_POSIX_ACL + " + fi + + linux-info_pkg_setup +} + +src_prepare() { + # allow user patches (use sparingly - upstream won't support them) + epatch_user + epatch "${FILESDIR}"/${P}-service-patch.patch +} + +src_compile() { + # if we treat them right, Docker's build scripts will set up a + # reasonable GOPATH for us + export AUTO_GOPATH=1 + + # setup CFLAGS and LDFLAGS for separate build target + # see https://github.com/tianon/docker-overlay/pull/10 + export CGO_CFLAGS="-I${ROOT}/usr/include" + export CGO_LDFLAGS="-L${ROOT}/usr/$(get_libdir)" + + # if we're building from a zip, we need the GITCOMMIT value + [ "$DOCKER_GITCOMMIT" ] && export DOCKER_GITCOMMIT + + if gcc-specs-pie; then + sed -i "s/EXTLDFLAGS_STATIC='/EXTLDFLAGS_STATIC='-fno-PIC /" hack/make.sh || die + grep -q -- '-fno-PIC' hack/make.sh || die 'hardened sed failed' + + sed -i "s/LDFLAGS_STATIC_DOCKER='/LDFLAGS_STATIC_DOCKER='-extldflags -fno-PIC /" hack/make/dynbinary || die + grep -q -- '-fno-PIC' hack/make/dynbinary || die 'hardened sed failed' + fi + + # let's set up some optional features :) + export DOCKER_BUILDTAGS='' + for gd in aufs btrfs device-mapper overlay; do + if ! use $gd; then + DOCKER_BUILDTAGS+=" exclude_graphdriver_${gd//-/}" + fi + done + + if use apparmor; then + DOCKER_BUILDTAGS+=' apparmor' + fi + + # https://github.com/docker/docker/pull/13338 + if use experimental; then + export DOCKER_EXPERIMENTAL=1 + else + unset DOCKER_EXPERIMENTAL + fi + + # time to build! + ./hack/make.sh dynbinary || die 'dynbinary failed' + + # TODO get go-md2man and then include the man pages using man/md2man-all.sh +} + +src_install() { + VERSION=$(cat VERSION) + newbin bundles/$VERSION/dynbinary/docker-$VERSION docker + exeinto /usr/libexec/docker + newexe bundles/$VERSION/dynbinary/dockerinit-$VERSION dockerinit + + newinitd contrib/init/openrc/docker.initd docker + newconfd contrib/init/openrc/docker.confd docker + + systemd_dounit contrib/init/systemd/docker.{service,socket} + + udev_dorules contrib/udev/*.rules + + dodoc AUTHORS CONTRIBUTING.md CHANGELOG.md NOTICE README.md + if use doc; then + # TODO doman man/man*/* + + docompress -x /usr/share/doc/${PF}/md + docinto md + dodoc -r docs/* + fi + + dobashcomp contrib/completion/bash/* + + insinto /usr/share/zsh/site-functions + doins contrib/completion/zsh/* + + if use vim-syntax; then + insinto /usr/share/vim/vimfiles + doins -r contrib/syntax/vim/ftdetect + doins -r contrib/syntax/vim/syntax + fi + + if use contrib; then + mkdir -p "${D}/usr/share/${PN}/contrib" + cp -R contrib/* "${D}/usr/share/${PN}/contrib" + fi +} + +pkg_postinst() { + udev_reload + + elog "" + elog "To use Docker, the Docker daemon must be running as root. To automatically" + elog "start the Docker daemon at boot, add Docker to the default runlevel:" + elog " rc-update add docker default" + elog "Similarly for systemd:" + elog " systemctl enable docker.service" + elog "" + + # create docker group if the code checking for it in /etc/group exists + enewgroup docker + + elog "To use Docker as a non-root user, add yourself to the 'docker' group:" + elog " usermod -aG docker youruser" + elog "" +} diff --git a/app-emulation/docker/docker-1.8.1.ebuild b/app-emulation/docker/docker-1.8.1.ebuild new file mode 100644 index 00000000..73cc01d8 --- /dev/null +++ b/app-emulation/docker/docker-1.8.1.ebuild @@ -0,0 +1,268 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 + +EGO_PN="github.com/docker/docker" + +if [[ ${PV} = *9999* ]]; then + # Docker cannot be fetched via "go get", thanks to autogenerated code + EGIT_REPO_URI="https://${EGO_PN}.git" + EGIT_CHECKOUT_DIR="${WORKDIR}/${P}/src/${EGO_PN}" + inherit git-r3 +else + MY_PV="${PV/_/-}" + DOCKER_GITCOMMIT="d12ea79" + EGIT_COMMIT="v${MY_PV}" + SRC_URI="https://${EGO_PN}/archive/${EGIT_COMMIT}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~amd64" + [ "$DOCKER_GITCOMMIT" ] || die "DOCKER_GITCOMMIT must be added manually for each bump!" + inherit golang-vcs-snapshot +fi +inherit eutils bash-completion-r1 linux-info multilib systemd udev user + +DESCRIPTION="Docker complements kernel namespacing with a high-level API which operates at the process level" +HOMEPAGE="https://dockerproject.org" +LICENSE="Apache-2.0" +SLOT="0" +IUSE="apparmor aufs btrfs +device-mapper experimental lxc overlay" + +# https://github.com/docker/docker/blob/master/hack/PACKAGERS.md#build-dependencies +CDEPEND=" + >=dev-db/sqlite-3.7.9:3 + device-mapper? ( + >=sys-fs/lvm2-2.02.89[thin] + ) +" + +DEPEND=" + ${CDEPEND} + + dev-go/go-md2man + + btrfs? ( + >=sys-fs/btrfs-progs-3.8 + ) +" + +# https://github.com/docker/docker/blob/master/hack/PACKAGERS.md#runtime-dependencies +# https://github.com/docker/docker/blob/master/hack/PACKAGERS.md#optional-dependencies +RDEPEND=" + ${CDEPEND} + + !app-emulation/docker-bin + >=net-firewall/iptables-1.4 + sys-process/procps + >=dev-vcs/git-1.7 + >=app-arch/xz-utils-4.9 + + lxc? ( + >=app-emulation/lxc-1.0.7 + ) + + apparmor? ( + sys-libs/libapparmor[static-libs] + ) +" + +RESTRICT="installsources strip" + +# see "contrib/check-config.sh" from upstream's sources +CONFIG_CHECK=" + ~NAMESPACES ~NET_NS ~PID_NS ~IPC_NS ~UTS_NS + ~DEVPTS_MULTIPLE_INSTANCES + ~CGROUPS ~CGROUP_CPUACCT ~CGROUP_DEVICE ~CGROUP_FREEZER ~CGROUP_SCHED ~CPUSETS ~MEMCG + ~MACVLAN ~VETH ~BRIDGE ~BRIDGE_NETFILTER + ~NF_NAT_IPV4 ~IP_NF_FILTER ~IP_NF_TARGET_MASQUERADE + ~NETFILTER_XT_MATCH_ADDRTYPE ~NETFILTER_XT_MATCH_CONNTRACK + ~NF_NAT ~NF_NAT_NEEDED + + ~POSIX_MQUEUE + + ~MEMCG_KMEM ~MEMCG_SWAP ~MEMCG_SWAP_ENABLED + + ~BLK_CGROUP ~IOSCHED_CFQ + ~CGROUP_PERF + ~CGROUP_HUGETLB + ~NET_CLS_CGROUP + ~CFS_BANDWIDTH ~FAIR_GROUP_SCHED ~RT_GROUP_SCHED +" + +ERROR_MEMCG_KMEM="CONFIG_MEMCG_KMEM: is optional" +ERROR_MEMCG_SWAP="CONFIG_MEMCG_SWAP: is required if you wish to limit swap usage of containers" +ERROR_RESOURCE_COUNTERS="CONFIG_RESOURCE_COUNTERS: is optional for container statistics gathering" + +ERROR_BLK_CGROUP="CONFIG_BLK_CGROUP: is optional for container statistics gathering" +ERROR_IOSCHED_CFQ="CONFIG_IOSCHED_CFQ: is optional for container statistics gathering" +ERROR_CGROUP_PERF="CONFIG_CGROUP_PERF: is optional for container statistics gathering" +ERROR_CFS_BANDWIDTH="CONFIG_CFS_BANDWIDTH: is optional for container statistics gathering" + +pkg_setup() { + if kernel_is lt 3 10; then + ewarn "" + ewarn "Using Docker with kernels older than 3.10 is unstable and unsupported." + ewarn " - http://docs.docker.com/installation/binaries/#check-kernel-dependencies" + fi + + # for where these kernel versions come from, see: + # https://www.google.com/search?q=945b2b2d259d1a4364a2799e80e8ff32f8c6ee6f+site%3Akernel.org%2Fpub%2Flinux%2Fkernel+file%3AChangeLog* + if ! { + kernel_is ge 3 16 \ + || { kernel_is 3 15 && kernel_is ge 3 15 5; } \ + || { kernel_is 3 14 && kernel_is ge 3 14 12; } \ + || { kernel_is 3 12 && kernel_is ge 3 12 25; } + }; then + ewarn "" + ewarn "There is a serious Docker-related kernel panic that has been fixed in 3.16+" + ewarn " (and was backported to 3.15.5+, 3.14.12+, and 3.12.25+)" + ewarn "" + ewarn "See also https://github.com/docker/docker/issues/2960" + fi + + if kernel_is le 3 18; then + CONFIG_CHECK+=" + ~RESOURCE_COUNTERS + " + fi + + if kernel_is le 3 13; then + CONFIG_CHECK+=" + ~NETPRIO_CGROUP + " + else + CONFIG_CHECK+=" + ~CGROUP_NET_PRIO + " + fi + + if use aufs; then + CONFIG_CHECK+=" + ~AUFS_FS + ~EXT4_FS_POSIX_ACL ~EXT4_FS_SECURITY + " + ERROR_AUFS_FS="CONFIG_AUFS_FS: is required to be set if and only if aufs-sources are used instead of aufs4/aufs3" + fi + + if use btrfs; then + CONFIG_CHECK+=" + ~BTRFS_FS + " + fi + + if use device-mapper; then + CONFIG_CHECK+=" + ~BLK_DEV_DM ~DM_THIN_PROVISIONING ~EXT4_FS ~EXT4_FS_POSIX_ACL ~EXT4_FS_SECURITY + " + fi + + if use overlay; then + CONFIG_CHECK+=" + ~OVERLAY_FS ~EXT4_FS_SECURITY ~EXT4_FS_POSIX_ACL + " + fi + + linux-info_pkg_setup + + # create docker group for the code checking for it in /etc/group + enewgroup docker +} + +src_prepare() { + cd "src/${EGO_PN}" || die + epatch "${FILESDIR}"/15404-fix-go14_15.patch + # allow user patches (use sparingly - upstream won't support them) + epatch_user +} + +src_compile() { + cd "src/${EGO_PN}" || die + export GOPATH="${WORKDIR}/${P}:${PWD}/vendor:$(get_golibdir_gopath)" + + # setup CFLAGS and LDFLAGS for separate build target + # see https://github.com/tianon/docker-overlay/pull/10 + export CGO_CFLAGS="-I${ROOT}/usr/include" + export CGO_LDFLAGS="-L${ROOT}/usr/$(get_libdir)" + + # if we're building from a zip, we need the GITCOMMIT value + [ "$DOCKER_GITCOMMIT" ] && export DOCKER_GITCOMMIT + + if gcc-specs-pie; then + sed -i "s/EXTLDFLAGS_STATIC='/EXTLDFLAGS_STATIC='-fno-PIC /" hack/make.sh || die + grep -q -- '-fno-PIC' hack/make.sh || die 'hardened sed failed' + + sed -i "s/LDFLAGS_STATIC_DOCKER='/LDFLAGS_STATIC_DOCKER='-extldflags -fno-PIC /" hack/make/dynbinary || die + grep -q -- '-fno-PIC' hack/make/dynbinary || die 'hardened sed failed' + fi + + # let's set up some optional features :) + export DOCKER_BUILDTAGS='' + for gd in aufs btrfs device-mapper overlay; do + if ! use $gd; then + DOCKER_BUILDTAGS+=" exclude_graphdriver_${gd//-/}" + fi + done + + if use apparmor; then + DOCKER_BUILDTAGS+=' apparmor' + fi + + # https://github.com/docker/docker/pull/13338 + if use experimental; then + export DOCKER_EXPERIMENTAL=1 + else + unset DOCKER_EXPERIMENTAL + fi + + # time to build! + ./hack/make.sh dynbinary || die 'dynbinary failed' + + # build the man pages too + ./man/md2man-all.sh || die "unable to generate man pages" +} + +src_install() { + cd "src/${EGO_PN}" || die + VERSION="$(cat VERSION)" + newbin "bundles/$VERSION/dynbinary/docker-$VERSION" docker + exeinto /usr/libexec/docker + newexe "bundles/$VERSION/dynbinary/dockerinit-$VERSION" dockerinit + + newinitd contrib/init/openrc/docker.initd docker + newconfd contrib/init/openrc/docker.confd docker + + systemd_dounit contrib/init/systemd/docker.{service,socket} + + udev_dorules contrib/udev/*.rules + + dodoc AUTHORS CONTRIBUTING.md CHANGELOG.md NOTICE README.md + dodoc -r docs/* + doman man/man*/* + + dobashcomp contrib/completion/bash/* + + insinto /usr/share/zsh/site-functions + doins contrib/completion/zsh/* + + insinto /usr/share/vim/vimfiles + doins -r contrib/syntax/vim/ftdetect + doins -r contrib/syntax/vim/syntax + + insinto "/usr/share/${PN}/contrib" + doins -r contrib/* +} + +pkg_postinst() { + udev_reload + + elog + elog "To use Docker, the Docker daemon must be running as root. To automatically" + elog "start the Docker daemon at boot, add Docker to the default runlevel:" + elog " rc-update add docker default" + elog "Similarly for systemd:" + elog " systemctl enable docker.service" + elog + elog "To use Docker as a non-root user, add yourself to the 'docker' group:" + elog " usermod -aG docker youruser" + elog +} diff --git a/app-emulation/docker/docker-1.8.2.ebuild b/app-emulation/docker/docker-1.8.2.ebuild new file mode 100644 index 00000000..031c7497 --- /dev/null +++ b/app-emulation/docker/docker-1.8.2.ebuild @@ -0,0 +1,270 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 + +EGO_PN="github.com/docker/docker" + +if [[ ${PV} = *9999* ]]; then + # Docker cannot be fetched via "go get", thanks to autogenerated code + EGIT_REPO_URI="https://${EGO_PN}.git" + EGIT_CHECKOUT_DIR="${WORKDIR}/${P}/src/${EGO_PN}" + inherit git-r3 +else + MY_PV="${PV/_/-}" + DOCKER_GITCOMMIT="0a8c2e3" + EGIT_COMMIT="v${MY_PV}" + SRC_URI="https://${EGO_PN}/archive/${EGIT_COMMIT}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~amd64" + [ "$DOCKER_GITCOMMIT" ] || die "DOCKER_GITCOMMIT must be added manually for each bump!" + inherit golang-vcs-snapshot +fi +inherit bash-completion-r1 eutils linux-info multilib systemd udev user + +DESCRIPTION="Docker complements kernel namespacing with a high-level API which operates at the process level" +HOMEPAGE="https://dockerproject.org" +LICENSE="Apache-2.0" +SLOT="0" +IUSE="apparmor aufs btrfs +device-mapper experimental lxc overlay" + +# https://github.com/docker/docker/blob/master/hack/PACKAGERS.md#build-dependencies +CDEPEND=" + >=dev-db/sqlite-3.7.9:3 + device-mapper? ( + >=sys-fs/lvm2-2.02.89[thin] + ) +" + +DEPEND=" + ${CDEPEND} + + dev-go/go-md2man + + btrfs? ( + >=sys-fs/btrfs-progs-3.8 + ) +" + +# https://github.com/docker/docker/blob/master/hack/PACKAGERS.md#runtime-dependencies +# https://github.com/docker/docker/blob/master/hack/PACKAGERS.md#optional-dependencies +RDEPEND=" + ${CDEPEND} + + !app-emulation/docker-bin + >=net-firewall/iptables-1.4 + sys-process/procps + >=dev-vcs/git-1.7 + >=app-arch/xz-utils-4.9 + + lxc? ( + >=app-emulation/lxc-1.0.7 + ) + + apparmor? ( + sys-libs/libapparmor[static-libs] + ) +" + +RESTRICT="installsources strip" + +# see "contrib/check-config.sh" from upstream's sources +CONFIG_CHECK=" + ~NAMESPACES ~NET_NS ~PID_NS ~IPC_NS ~UTS_NS + ~DEVPTS_MULTIPLE_INSTANCES + ~CGROUPS ~CGROUP_CPUACCT ~CGROUP_DEVICE ~CGROUP_FREEZER ~CGROUP_SCHED ~CPUSETS ~MEMCG + ~MACVLAN ~VETH ~BRIDGE ~BRIDGE_NETFILTER + ~NF_NAT_IPV4 ~IP_NF_FILTER ~IP_NF_TARGET_MASQUERADE + ~NETFILTER_XT_MATCH_ADDRTYPE ~NETFILTER_XT_MATCH_CONNTRACK + ~NF_NAT ~NF_NAT_NEEDED + + ~POSIX_MQUEUE + + ~MEMCG_KMEM ~MEMCG_SWAP ~MEMCG_SWAP_ENABLED + + ~BLK_CGROUP ~IOSCHED_CFQ + ~CGROUP_PERF + ~CGROUP_HUGETLB + ~NET_CLS_CGROUP + ~CFS_BANDWIDTH ~FAIR_GROUP_SCHED ~RT_GROUP_SCHED +" + +ERROR_MEMCG_KMEM="CONFIG_MEMCG_KMEM: is optional" +ERROR_MEMCG_SWAP="CONFIG_MEMCG_SWAP: is required if you wish to limit swap usage of containers" +ERROR_RESOURCE_COUNTERS="CONFIG_RESOURCE_COUNTERS: is optional for container statistics gathering" + +ERROR_BLK_CGROUP="CONFIG_BLK_CGROUP: is optional for container statistics gathering" +ERROR_IOSCHED_CFQ="CONFIG_IOSCHED_CFQ: is optional for container statistics gathering" +ERROR_CGROUP_PERF="CONFIG_CGROUP_PERF: is optional for container statistics gathering" +ERROR_CFS_BANDWIDTH="CONFIG_CFS_BANDWIDTH: is optional for container statistics gathering" + +pkg_setup() { + if kernel_is lt 3 10; then + ewarn "" + ewarn "Using Docker with kernels older than 3.10 is unstable and unsupported." + ewarn " - http://docs.docker.com/installation/binaries/#check-kernel-dependencies" + fi + + # for where these kernel versions come from, see: + # https://www.google.com/search?q=945b2b2d259d1a4364a2799e80e8ff32f8c6ee6f+site%3Akernel.org%2Fpub%2Flinux%2Fkernel+file%3AChangeLog* + if ! { + kernel_is ge 3 16 \ + || { kernel_is 3 15 && kernel_is ge 3 15 5; } \ + || { kernel_is 3 14 && kernel_is ge 3 14 12; } \ + || { kernel_is 3 12 && kernel_is ge 3 12 25; } + }; then + ewarn "" + ewarn "There is a serious Docker-related kernel panic that has been fixed in 3.16+" + ewarn " (and was backported to 3.15.5+, 3.14.12+, and 3.12.25+)" + ewarn "" + ewarn "See also https://github.com/docker/docker/issues/2960" + fi + + if kernel_is le 3 18; then + CONFIG_CHECK+=" + ~RESOURCE_COUNTERS + " + fi + + if kernel_is le 3 13; then + CONFIG_CHECK+=" + ~NETPRIO_CGROUP + " + else + CONFIG_CHECK+=" + ~CGROUP_NET_PRIO + " + fi + + if use aufs; then + CONFIG_CHECK+=" + ~AUFS_FS + ~EXT4_FS_POSIX_ACL ~EXT4_FS_SECURITY + " + ERROR_AUFS_FS="CONFIG_AUFS_FS: is required to be set if and only if aufs-sources are used instead of aufs4/aufs3" + fi + + if use btrfs; then + CONFIG_CHECK+=" + ~BTRFS_FS + " + fi + + if use device-mapper; then + CONFIG_CHECK+=" + ~BLK_DEV_DM ~DM_THIN_PROVISIONING ~EXT4_FS ~EXT4_FS_POSIX_ACL ~EXT4_FS_SECURITY + " + fi + + if use overlay; then + CONFIG_CHECK+=" + ~OVERLAY_FS ~EXT4_FS_SECURITY ~EXT4_FS_POSIX_ACL + " + fi + + linux-info_pkg_setup + + # create docker group for the code checking for it in /etc/group + enewgroup docker +} + +src_prepare() { + cd "src/${EGO_PN}" || die + epatch "${FILESDIR}"/15404-fix-go14_15.patch + # allow user patches (use sparingly - upstream won't support them) + epatch_user +} + +src_compile() { + cd "src/${EGO_PN}" || die + export GOPATH="${WORKDIR}/${P}:${PWD}/vendor:$(get_golibdir_gopath)" + + # setup CFLAGS and LDFLAGS for separate build target + # see https://github.com/tianon/docker-overlay/pull/10 + export CGO_CFLAGS="-I${ROOT}/usr/include" + export CGO_LDFLAGS="-L${ROOT}/usr/$(get_libdir)" + + # if we're building from a zip, we need the GITCOMMIT value + [ "$DOCKER_GITCOMMIT" ] && export DOCKER_GITCOMMIT + + if gcc-specs-pie; then + sed -i "s/EXTLDFLAGS_STATIC='/EXTLDFLAGS_STATIC='-fno-PIC /" hack/make.sh || die + grep -q -- '-fno-PIC' hack/make.sh || die 'hardened sed failed' + + sed -i "s/LDFLAGS_STATIC_DOCKER='/LDFLAGS_STATIC_DOCKER='-extldflags -fno-PIC /" hack/make/dynbinary || die + grep -q -- '-fno-PIC' hack/make/dynbinary || die 'hardened sed failed' + fi + + # let's set up some optional features :) + export DOCKER_BUILDTAGS='' + for gd in aufs btrfs device-mapper overlay; do + if ! use $gd; then + DOCKER_BUILDTAGS+=" exclude_graphdriver_${gd//-/}" + fi + done + + if use apparmor; then + DOCKER_BUILDTAGS+=' apparmor' + fi + + # https://github.com/docker/docker/pull/13338 + if use experimental; then + export DOCKER_EXPERIMENTAL=1 + else + unset DOCKER_EXPERIMENTAL + fi + + # time to build! + ./hack/make.sh dynbinary || die 'dynbinary failed' + + # build the man pages too + ./man/md2man-all.sh || die "unable to generate man pages" +} + +src_install() { + cd "src/${EGO_PN}" || die + VERSION="$(cat VERSION)" + newbin "bundles/$VERSION/dynbinary/docker-$VERSION" docker + exeinto /usr/libexec/docker + newexe "bundles/$VERSION/dynbinary/dockerinit-$VERSION" dockerinit + + newinitd contrib/init/openrc/docker.initd docker + newconfd contrib/init/openrc/docker.confd docker + + systemd_dounit contrib/init/systemd/docker.{service,socket} + + udev_dorules contrib/udev/*.rules + + dodoc AUTHORS CONTRIBUTING.md CHANGELOG.md NOTICE README.md + dodoc -r docs/* + doman man/man*/* + + dobashcomp contrib/completion/bash/* + + insinto /usr/share/zsh/site-functions + doins contrib/completion/zsh/* + + insinto /usr/share/vim/vimfiles + doins -r contrib/syntax/vim/ftdetect + doins -r contrib/syntax/vim/syntax + + exeinto /usr/share/${PN}/contrib + doexe contrib/*.{sh,pl} + insinto /usr/share/${PN}/contrib + doins contrib/*.{conf,sample} +} + +pkg_postinst() { + udev_reload + + elog + elog "To use Docker, the Docker daemon must be running as root. To automatically" + elog "start the Docker daemon at boot, add Docker to the default runlevel:" + elog " rc-update add docker default" + elog "Similarly for systemd:" + elog " systemctl enable docker.service" + elog + elog "To use Docker as a non-root user, add yourself to the 'docker' group:" + elog " usermod -aG docker youruser" + elog +} diff --git a/app-emulation/docker/docker-1.9.0.ebuild b/app-emulation/docker/docker-1.9.0.ebuild new file mode 100644 index 00000000..0be94044 --- /dev/null +++ b/app-emulation/docker/docker-1.9.0.ebuild @@ -0,0 +1,268 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 + +EGO_PN="github.com/docker/docker" + +if [[ ${PV} = *9999* ]]; then + # Docker cannot be fetched via "go get", thanks to autogenerated code + EGIT_REPO_URI="https://${EGO_PN}.git" + EGIT_CHECKOUT_DIR="${WORKDIR}/${P}/src/${EGO_PN}" + inherit git-r3 +else + MY_PV="${PV/_/-}" + DOCKER_GITCOMMIT="76d6bc9" + EGIT_COMMIT="v${MY_PV}" + SRC_URI="https://${EGO_PN}/archive/${EGIT_COMMIT}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~amd64" + [ "$DOCKER_GITCOMMIT" ] || die "DOCKER_GITCOMMIT must be added manually for each bump!" + inherit golang-vcs-snapshot +fi +inherit bash-completion-r1 linux-info multilib systemd udev user + +DESCRIPTION="Docker complements kernel namespacing with a high-level API which operates at the process level" +HOMEPAGE="https://dockerproject.org" +LICENSE="Apache-2.0" +SLOT="0" +IUSE="apparmor aufs btrfs +device-mapper experimental lxc overlay" + +# https://github.com/docker/docker/blob/master/hack/PACKAGERS.md#build-dependencies +CDEPEND=" + >=dev-db/sqlite-3.7.9:3 + device-mapper? ( + >=sys-fs/lvm2-2.02.89[thin] + ) +" + +DEPEND=" + ${CDEPEND} + + dev-go/go-md2man + + btrfs? ( + >=sys-fs/btrfs-progs-3.8 + ) +" + +# https://github.com/docker/docker/blob/master/hack/PACKAGERS.md#runtime-dependencies +# https://github.com/docker/docker/blob/master/hack/PACKAGERS.md#optional-dependencies +RDEPEND=" + ${CDEPEND} + + !app-emulation/docker-bin + >=net-firewall/iptables-1.4 + sys-process/procps + >=dev-vcs/git-1.7 + >=app-arch/xz-utils-4.9 + + lxc? ( + >=app-emulation/lxc-1.0.7 + ) + + apparmor? ( + sys-libs/libapparmor[static-libs] + ) +" + +RESTRICT="installsources strip" + +# see "contrib/check-config.sh" from upstream's sources +CONFIG_CHECK=" + ~NAMESPACES ~NET_NS ~PID_NS ~IPC_NS ~UTS_NS + ~DEVPTS_MULTIPLE_INSTANCES + ~CGROUPS ~CGROUP_CPUACCT ~CGROUP_DEVICE ~CGROUP_FREEZER ~CGROUP_SCHED ~CPUSETS ~MEMCG + ~MACVLAN ~VETH ~BRIDGE ~BRIDGE_NETFILTER + ~NF_NAT_IPV4 ~IP_NF_FILTER ~IP_NF_TARGET_MASQUERADE + ~NETFILTER_XT_MATCH_ADDRTYPE ~NETFILTER_XT_MATCH_CONNTRACK + ~NF_NAT ~NF_NAT_NEEDED + + ~POSIX_MQUEUE + + ~MEMCG_KMEM ~MEMCG_SWAP ~MEMCG_SWAP_ENABLED + + ~BLK_CGROUP ~IOSCHED_CFQ + ~CGROUP_PERF + ~CGROUP_HUGETLB + ~NET_CLS_CGROUP + ~CFS_BANDWIDTH ~FAIR_GROUP_SCHED ~RT_GROUP_SCHED +" + +ERROR_MEMCG_KMEM="CONFIG_MEMCG_KMEM: is optional" +ERROR_MEMCG_SWAP="CONFIG_MEMCG_SWAP: is required if you wish to limit swap usage of containers" +ERROR_RESOURCE_COUNTERS="CONFIG_RESOURCE_COUNTERS: is optional for container statistics gathering" + +ERROR_BLK_CGROUP="CONFIG_BLK_CGROUP: is optional for container statistics gathering" +ERROR_IOSCHED_CFQ="CONFIG_IOSCHED_CFQ: is optional for container statistics gathering" +ERROR_CGROUP_PERF="CONFIG_CGROUP_PERF: is optional for container statistics gathering" +ERROR_CFS_BANDWIDTH="CONFIG_CFS_BANDWIDTH: is optional for container statistics gathering" + +pkg_setup() { + if kernel_is lt 3 10; then + ewarn "" + ewarn "Using Docker with kernels older than 3.10 is unstable and unsupported." + ewarn " - http://docs.docker.com/installation/binaries/#check-kernel-dependencies" + fi + + # for where these kernel versions come from, see: + # https://www.google.com/search?q=945b2b2d259d1a4364a2799e80e8ff32f8c6ee6f+site%3Akernel.org%2Fpub%2Flinux%2Fkernel+file%3AChangeLog* + if ! { + kernel_is ge 3 16 \ + || { kernel_is 3 15 && kernel_is ge 3 15 5; } \ + || { kernel_is 3 14 && kernel_is ge 3 14 12; } \ + || { kernel_is 3 12 && kernel_is ge 3 12 25; } + }; then + ewarn "" + ewarn "There is a serious Docker-related kernel panic that has been fixed in 3.16+" + ewarn " (and was backported to 3.15.5+, 3.14.12+, and 3.12.25+)" + ewarn "" + ewarn "See also https://github.com/docker/docker/issues/2960" + fi + + if kernel_is le 3 18; then + CONFIG_CHECK+=" + ~RESOURCE_COUNTERS + " + fi + + if kernel_is le 3 13; then + CONFIG_CHECK+=" + ~NETPRIO_CGROUP + " + else + CONFIG_CHECK+=" + ~CGROUP_NET_PRIO + " + fi + + if use aufs; then + CONFIG_CHECK+=" + ~AUFS_FS + ~EXT4_FS_POSIX_ACL ~EXT4_FS_SECURITY + " + ERROR_AUFS_FS="CONFIG_AUFS_FS: is required to be set if and only if aufs-sources are used instead of aufs4/aufs3" + fi + + if use btrfs; then + CONFIG_CHECK+=" + ~BTRFS_FS + " + fi + + if use device-mapper; then + CONFIG_CHECK+=" + ~BLK_DEV_DM ~DM_THIN_PROVISIONING ~EXT4_FS ~EXT4_FS_POSIX_ACL ~EXT4_FS_SECURITY + " + fi + + if use overlay; then + CONFIG_CHECK+=" + ~OVERLAY_FS ~EXT4_FS_SECURITY ~EXT4_FS_POSIX_ACL + " + fi + + linux-info_pkg_setup + + # create docker group for the code checking for it in /etc/group + enewgroup docker +} + +src_prepare() { + cd "src/${EGO_PN}" || die + # allow user patches (use sparingly - upstream won't support them) + epatch_user +} + +src_compile() { + cd "src/${EGO_PN}" || die + export GOPATH="${WORKDIR}/${P}:${PWD}/vendor:$(get_golibdir_gopath)" + + # setup CFLAGS and LDFLAGS for separate build target + # see https://github.com/tianon/docker-overlay/pull/10 + export CGO_CFLAGS="-I${ROOT}/usr/include" + export CGO_LDFLAGS="-L${ROOT}/usr/$(get_libdir)" + + # if we're building from a zip, we need the GITCOMMIT value + [ "$DOCKER_GITCOMMIT" ] && export DOCKER_GITCOMMIT + + if gcc-specs-pie; then + sed -i "s/EXTLDFLAGS_STATIC='/EXTLDFLAGS_STATIC='-fno-PIC /" hack/make.sh || die + grep -q -- '-fno-PIC' hack/make.sh || die 'hardened sed failed' + + sed -i "s/LDFLAGS_STATIC_DOCKER='/LDFLAGS_STATIC_DOCKER='-extldflags -fno-PIC /" hack/make/dynbinary || die + grep -q -- '-fno-PIC' hack/make/dynbinary || die 'hardened sed failed' + fi + + # let's set up some optional features :) + export DOCKER_BUILDTAGS='' + for gd in aufs btrfs device-mapper overlay; do + if ! use $gd; then + DOCKER_BUILDTAGS+=" exclude_graphdriver_${gd//-/}" + fi + done + + if use apparmor; then + DOCKER_BUILDTAGS+=' apparmor' + fi + + # https://github.com/docker/docker/pull/13338 + if use experimental; then + export DOCKER_EXPERIMENTAL=1 + else + unset DOCKER_EXPERIMENTAL + fi + + # time to build! + ./hack/make.sh dynbinary || die 'dynbinary failed' + + # build the man pages too + ./man/md2man-all.sh || die "unable to generate man pages" +} + +src_install() { + cd "src/${EGO_PN}" || die + VERSION="$(cat VERSION)" + newbin "bundles/$VERSION/dynbinary/docker-$VERSION" docker + exeinto /usr/libexec/docker + newexe "bundles/$VERSION/dynbinary/dockerinit-$VERSION" dockerinit + + newinitd contrib/init/openrc/docker.initd docker + newconfd contrib/init/openrc/docker.confd docker + + systemd_dounit contrib/init/systemd/docker.{service,socket} + + udev_dorules contrib/udev/*.rules + + dodoc AUTHORS CONTRIBUTING.md CHANGELOG.md NOTICE README.md + dodoc -r docs/* + doman man/man*/* + + dobashcomp contrib/completion/bash/* + + insinto /usr/share/zsh/site-functions + doins contrib/completion/zsh/* + + insinto /usr/share/vim/vimfiles + doins -r contrib/syntax/vim/ftdetect + doins -r contrib/syntax/vim/syntax + + # note: intentionally not using "doins" so that we preserve +x bits + mkdir -p "${D}/usr/share/${PN}/contrib" + cp -R contrib/* "${D}/usr/share/${PN}/contrib" +} + +pkg_postinst() { + udev_reload + + elog + elog "To use Docker, the Docker daemon must be running as root. To automatically" + elog "start the Docker daemon at boot, add Docker to the default runlevel:" + elog " rc-update add docker default" + elog "Similarly for systemd:" + elog " systemctl enable docker.service" + elog + elog "To use Docker as a non-root user, add yourself to the 'docker' group:" + elog " usermod -aG docker youruser" + elog +} diff --git a/app-emulation/docker/docker-1.9.1.ebuild b/app-emulation/docker/docker-1.9.1.ebuild new file mode 100644 index 00000000..f490eac0 --- /dev/null +++ b/app-emulation/docker/docker-1.9.1.ebuild @@ -0,0 +1,265 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 + +EGO_PN="github.com/docker/docker" + +if [[ ${PV} = *9999* ]]; then + # Docker cannot be fetched via "go get", thanks to autogenerated code + EGIT_REPO_URI="https://${EGO_PN}.git" + EGIT_CHECKOUT_DIR="${WORKDIR}/${P}/src/${EGO_PN}" + inherit git-r3 +else + MY_PV="${PV/_/-}" + DOCKER_GITCOMMIT="a34a1d5" + EGIT_COMMIT="v${MY_PV}" + SRC_URI="https://${EGO_PN}/archive/${EGIT_COMMIT}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~amd64" + [ "$DOCKER_GITCOMMIT" ] || die "DOCKER_GITCOMMIT must be added manually for each bump!" + inherit golang-vcs-snapshot +fi +inherit bash-completion-r1 linux-info multilib systemd udev user + +DESCRIPTION="Docker complements kernel namespacing with a high-level API which operates at the process level" +HOMEPAGE="https://dockerproject.org" +LICENSE="Apache-2.0" +SLOT="0" +IUSE="apparmor aufs btrfs +device-mapper experimental overlay" + +# https://github.com/docker/docker/blob/master/hack/PACKAGERS.md#build-dependencies +CDEPEND=" + >=dev-db/sqlite-3.7.9:3 + device-mapper? ( + >=sys-fs/lvm2-2.02.89[thin] + ) +" + +DEPEND=" + ${CDEPEND} + + dev-go/go-md2man + + btrfs? ( + >=sys-fs/btrfs-progs-3.8 + ) +" + +# https://github.com/docker/docker/blob/master/hack/PACKAGERS.md#runtime-dependencies +# https://github.com/docker/docker/blob/master/hack/PACKAGERS.md#optional-dependencies +RDEPEND=" + ${CDEPEND} + + !app-emulation/docker-bin + >=net-firewall/iptables-1.4 + sys-process/procps + >=dev-vcs/git-1.7 + >=app-arch/xz-utils-4.9 + + apparmor? ( + sys-libs/libapparmor[static-libs] + ) +" + +RESTRICT="installsources strip" + +# see "contrib/check-config.sh" from upstream's sources +CONFIG_CHECK=" + ~NAMESPACES ~NET_NS ~PID_NS ~IPC_NS ~UTS_NS + ~DEVPTS_MULTIPLE_INSTANCES + ~CGROUPS ~CGROUP_CPUACCT ~CGROUP_DEVICE ~CGROUP_FREEZER ~CGROUP_SCHED ~CPUSETS ~MEMCG + ~MACVLAN ~VETH ~BRIDGE ~BRIDGE_NETFILTER + ~NF_NAT_IPV4 ~IP_NF_FILTER ~IP_NF_TARGET_MASQUERADE + ~NETFILTER_XT_MATCH_ADDRTYPE ~NETFILTER_XT_MATCH_CONNTRACK + ~NF_NAT ~NF_NAT_NEEDED + + ~POSIX_MQUEUE + + ~MEMCG_KMEM ~MEMCG_SWAP ~MEMCG_SWAP_ENABLED + + ~BLK_CGROUP ~IOSCHED_CFQ + ~CGROUP_PERF + ~CGROUP_HUGETLB + ~NET_CLS_CGROUP + ~CFS_BANDWIDTH ~FAIR_GROUP_SCHED ~RT_GROUP_SCHED +" + +ERROR_MEMCG_KMEM="CONFIG_MEMCG_KMEM: is optional" +ERROR_MEMCG_SWAP="CONFIG_MEMCG_SWAP: is required if you wish to limit swap usage of containers" +ERROR_RESOURCE_COUNTERS="CONFIG_RESOURCE_COUNTERS: is optional for container statistics gathering" + +ERROR_BLK_CGROUP="CONFIG_BLK_CGROUP: is optional for container statistics gathering" +ERROR_IOSCHED_CFQ="CONFIG_IOSCHED_CFQ: is optional for container statistics gathering" +ERROR_CGROUP_PERF="CONFIG_CGROUP_PERF: is optional for container statistics gathering" +ERROR_CFS_BANDWIDTH="CONFIG_CFS_BANDWIDTH: is optional for container statistics gathering" + +pkg_setup() { + if kernel_is lt 3 10; then + ewarn "" + ewarn "Using Docker with kernels older than 3.10 is unstable and unsupported." + ewarn " - http://docs.docker.com/installation/binaries/#check-kernel-dependencies" + fi + + # for where these kernel versions come from, see: + # https://www.google.com/search?q=945b2b2d259d1a4364a2799e80e8ff32f8c6ee6f+site%3Akernel.org%2Fpub%2Flinux%2Fkernel+file%3AChangeLog* + if ! { + kernel_is ge 3 16 \ + || { kernel_is 3 15 && kernel_is ge 3 15 5; } \ + || { kernel_is 3 14 && kernel_is ge 3 14 12; } \ + || { kernel_is 3 12 && kernel_is ge 3 12 25; } + }; then + ewarn "" + ewarn "There is a serious Docker-related kernel panic that has been fixed in 3.16+" + ewarn " (and was backported to 3.15.5+, 3.14.12+, and 3.12.25+)" + ewarn "" + ewarn "See also https://github.com/docker/docker/issues/2960" + fi + + if kernel_is le 3 18; then + CONFIG_CHECK+=" + ~RESOURCE_COUNTERS + " + fi + + if kernel_is le 3 13; then + CONFIG_CHECK+=" + ~NETPRIO_CGROUP + " + else + CONFIG_CHECK+=" + ~CGROUP_NET_PRIO + " + fi + + if use aufs; then + CONFIG_CHECK+=" + ~AUFS_FS + ~EXT4_FS_POSIX_ACL ~EXT4_FS_SECURITY + " + ERROR_AUFS_FS="CONFIG_AUFS_FS: is required to be set if and only if aufs-sources are used instead of aufs4/aufs3" + fi + + if use btrfs; then + CONFIG_CHECK+=" + ~BTRFS_FS + " + fi + + if use device-mapper; then + CONFIG_CHECK+=" + ~BLK_DEV_DM ~DM_THIN_PROVISIONING ~EXT4_FS ~EXT4_FS_POSIX_ACL ~EXT4_FS_SECURITY + " + fi + + if use overlay; then + CONFIG_CHECK+=" + ~OVERLAY_FS ~EXT4_FS_SECURITY ~EXT4_FS_POSIX_ACL + " + fi + + linux-info_pkg_setup + + # create docker group for the code checking for it in /etc/group + enewgroup docker +} + +src_prepare() { + cd "src/${EGO_PN}" || die + epatch "${FILESDIR}"/18074-disable-journald-arm.patch + # allow user patches (use sparingly - upstream won't support them) + epatch_user +} + +src_compile() { + cd "src/${EGO_PN}" || die + export GOPATH="${WORKDIR}/${P}:${PWD}/vendor:$(get_golibdir_gopath)" + + # setup CFLAGS and LDFLAGS for separate build target + # see https://github.com/tianon/docker-overlay/pull/10 + export CGO_CFLAGS="-I${ROOT}/usr/include" + export CGO_LDFLAGS="-L${ROOT}/usr/$(get_libdir)" + + # if we're building from a zip, we need the GITCOMMIT value + [ "$DOCKER_GITCOMMIT" ] && export DOCKER_GITCOMMIT + + if gcc-specs-pie; then + sed -i "s/EXTLDFLAGS_STATIC='/EXTLDFLAGS_STATIC='-fno-PIC /" hack/make.sh || die + grep -q -- '-fno-PIC' hack/make.sh || die 'hardened sed failed' + + sed -i "s/LDFLAGS_STATIC_DOCKER='/LDFLAGS_STATIC_DOCKER='-extldflags -fno-PIC /" hack/make/dynbinary || die + grep -q -- '-fno-PIC' hack/make/dynbinary || die 'hardened sed failed' + fi + + # let's set up some optional features :) + export DOCKER_BUILDTAGS='' + for gd in aufs btrfs device-mapper overlay; do + if ! use $gd; then + DOCKER_BUILDTAGS+=" exclude_graphdriver_${gd//-/}" + fi + done + + if use apparmor; then + DOCKER_BUILDTAGS+=' apparmor' + fi + + # https://github.com/docker/docker/pull/13338 + if use experimental; then + export DOCKER_EXPERIMENTAL=1 + else + unset DOCKER_EXPERIMENTAL + fi + + # time to build! + ./hack/make.sh dynbinary || die 'dynbinary failed' + + # build the man pages too + ./man/md2man-all.sh || die "unable to generate man pages" +} + +src_install() { + cd "src/${EGO_PN}" || die + VERSION="$(cat VERSION)" + newbin "bundles/$VERSION/dynbinary/docker-$VERSION" docker + exeinto /usr/libexec/docker + newexe "bundles/$VERSION/dynbinary/dockerinit-$VERSION" dockerinit + + newinitd contrib/init/openrc/docker.initd docker + newconfd contrib/init/openrc/docker.confd docker + + systemd_dounit contrib/init/systemd/docker.{service,socket} + + udev_dorules contrib/udev/*.rules + + dodoc AUTHORS CONTRIBUTING.md CHANGELOG.md NOTICE README.md + dodoc -r docs/* + doman man/man*/* + + dobashcomp contrib/completion/bash/* + + insinto /usr/share/zsh/site-functions + doins contrib/completion/zsh/* + + insinto /usr/share/vim/vimfiles + doins -r contrib/syntax/vim/ftdetect + doins -r contrib/syntax/vim/syntax + + # note: intentionally not using "doins" so that we preserve +x bits + mkdir -p "${D}/usr/share/${PN}/contrib" + cp -R contrib/* "${D}/usr/share/${PN}/contrib" +} + +pkg_postinst() { + udev_reload + + elog + elog "To use Docker, the Docker daemon must be running as root. To automatically" + elog "start the Docker daemon at boot, add Docker to the default runlevel:" + elog " rc-update add docker default" + elog "Similarly for systemd:" + elog " systemctl enable docker.service" + elog + elog "To use Docker as a non-root user, add yourself to the 'docker' group:" + elog " usermod -aG docker youruser" + elog +} diff --git a/app-emulation/docker/docker-9999.ebuild b/app-emulation/docker/docker-9999.ebuild new file mode 100644 index 00000000..02a19fec --- /dev/null +++ b/app-emulation/docker/docker-9999.ebuild @@ -0,0 +1,267 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 + +EGO_PN="github.com/docker/docker" + +if [[ ${PV} = *9999* ]]; then + # Docker cannot be fetched via "go get", thanks to autogenerated code + EGIT_REPO_URI="https://${EGO_PN}.git" + EGIT_CHECKOUT_DIR="${WORKDIR}/${P}/src/${EGO_PN}" + inherit git-r3 +else + MY_PV="${PV/_/-}" + DOCKER_GITCOMMIT="d12ea79" + EGIT_COMMIT="v${MY_PV}" + SRC_URI="https://${EGO_PN}/archive/${EGIT_COMMIT}.tar.gz -> ${P}.tar.gz" + KEYWORDS="~amd64" + [ "$DOCKER_GITCOMMIT" ] || die "DOCKER_GITCOMMIT must be added manually for each bump!" + inherit golang-vcs-snapshot +fi +inherit bash-completion-r1 eutils linux-info multilib systemd udev user + +DESCRIPTION="Docker complements kernel namespacing with a high-level API which operates at the process level" +HOMEPAGE="https://dockerproject.org" +LICENSE="Apache-2.0" +SLOT="0" +IUSE="apparmor aufs btrfs +device-mapper experimental lxc overlay" + +# https://github.com/docker/docker/blob/master/hack/PACKAGERS.md#build-dependencies +CDEPEND=" + >=dev-db/sqlite-3.7.9:3 + device-mapper? ( + >=sys-fs/lvm2-2.02.89[thin] + ) +" + +DEPEND=" + ${CDEPEND} + + dev-go/go-md2man + + btrfs? ( + >=sys-fs/btrfs-progs-3.8 + ) +" + +# https://github.com/docker/docker/blob/master/hack/PACKAGERS.md#runtime-dependencies +# https://github.com/docker/docker/blob/master/hack/PACKAGERS.md#optional-dependencies +RDEPEND=" + ${CDEPEND} + + !app-emulation/docker-bin + >=net-firewall/iptables-1.4 + sys-process/procps + >=dev-vcs/git-1.7 + >=app-arch/xz-utils-4.9 + + lxc? ( + >=app-emulation/lxc-1.0.7 + ) + + apparmor? ( + sys-libs/libapparmor[static-libs] + ) +" + +RESTRICT="installsources strip" + +# see "contrib/check-config.sh" from upstream's sources +CONFIG_CHECK=" + ~NAMESPACES ~NET_NS ~PID_NS ~IPC_NS ~UTS_NS + ~DEVPTS_MULTIPLE_INSTANCES + ~CGROUPS ~CGROUP_CPUACCT ~CGROUP_DEVICE ~CGROUP_FREEZER ~CGROUP_SCHED ~CPUSETS ~MEMCG + ~MACVLAN ~VETH ~BRIDGE ~BRIDGE_NETFILTER + ~NF_NAT_IPV4 ~IP_NF_FILTER ~IP_NF_TARGET_MASQUERADE + ~NETFILTER_XT_MATCH_ADDRTYPE ~NETFILTER_XT_MATCH_CONNTRACK + ~NF_NAT ~NF_NAT_NEEDED + + ~POSIX_MQUEUE + + ~MEMCG_KMEM ~MEMCG_SWAP ~MEMCG_SWAP_ENABLED + + ~BLK_CGROUP ~IOSCHED_CFQ + ~CGROUP_PERF + ~CGROUP_HUGETLB + ~NET_CLS_CGROUP + ~CFS_BANDWIDTH ~FAIR_GROUP_SCHED ~RT_GROUP_SCHED +" + +ERROR_MEMCG_KMEM="CONFIG_MEMCG_KMEM: is optional" +ERROR_MEMCG_SWAP="CONFIG_MEMCG_SWAP: is required if you wish to limit swap usage of containers" +ERROR_RESOURCE_COUNTERS="CONFIG_RESOURCE_COUNTERS: is optional for container statistics gathering" + +ERROR_BLK_CGROUP="CONFIG_BLK_CGROUP: is optional for container statistics gathering" +ERROR_IOSCHED_CFQ="CONFIG_IOSCHED_CFQ: is optional for container statistics gathering" +ERROR_CGROUP_PERF="CONFIG_CGROUP_PERF: is optional for container statistics gathering" +ERROR_CFS_BANDWIDTH="CONFIG_CFS_BANDWIDTH: is optional for container statistics gathering" + +pkg_setup() { + if kernel_is lt 3 10; then + ewarn "" + ewarn "Using Docker with kernels older than 3.10 is unstable and unsupported." + ewarn " - http://docs.docker.com/installation/binaries/#check-kernel-dependencies" + fi + + # for where these kernel versions come from, see: + # https://www.google.com/search?q=945b2b2d259d1a4364a2799e80e8ff32f8c6ee6f+site%3Akernel.org%2Fpub%2Flinux%2Fkernel+file%3AChangeLog* + if ! { + kernel_is ge 3 16 \ + || { kernel_is 3 15 && kernel_is ge 3 15 5; } \ + || { kernel_is 3 14 && kernel_is ge 3 14 12; } \ + || { kernel_is 3 12 && kernel_is ge 3 12 25; } + }; then + ewarn "" + ewarn "There is a serious Docker-related kernel panic that has been fixed in 3.16+" + ewarn " (and was backported to 3.15.5+, 3.14.12+, and 3.12.25+)" + ewarn "" + ewarn "See also https://github.com/docker/docker/issues/2960" + fi + + if kernel_is le 3 18; then + CONFIG_CHECK+=" + ~RESOURCE_COUNTERS + " + fi + + if kernel_is le 3 13; then + CONFIG_CHECK+=" + ~NETPRIO_CGROUP + " + else + CONFIG_CHECK+=" + ~CGROUP_NET_PRIO + " + fi + + if use aufs; then + CONFIG_CHECK+=" + ~AUFS_FS + ~EXT4_FS_POSIX_ACL ~EXT4_FS_SECURITY + " + ERROR_AUFS_FS="CONFIG_AUFS_FS: is required to be set if and only if aufs-sources are used instead of aufs4/aufs3" + fi + + if use btrfs; then + CONFIG_CHECK+=" + ~BTRFS_FS + " + fi + + if use device-mapper; then + CONFIG_CHECK+=" + ~BLK_DEV_DM ~DM_THIN_PROVISIONING ~EXT4_FS ~EXT4_FS_POSIX_ACL ~EXT4_FS_SECURITY + " + fi + + if use overlay; then + CONFIG_CHECK+=" + ~OVERLAY_FS ~EXT4_FS_SECURITY ~EXT4_FS_POSIX_ACL + " + fi + + linux-info_pkg_setup + + # create docker group for the code checking for it in /etc/group + enewgroup docker +} + +src_prepare() { + cd "src/${EGO_PN}" || die + # allow user patches (use sparingly - upstream won't support them) + epatch_user +} + +src_compile() { + cd "src/${EGO_PN}" || die + export GOPATH="${WORKDIR}/${P}:${PWD}/vendor:$(get_golibdir_gopath)" + + # setup CFLAGS and LDFLAGS for separate build target + # see https://github.com/tianon/docker-overlay/pull/10 + export CGO_CFLAGS="-I${ROOT}/usr/include" + export CGO_LDFLAGS="-L${ROOT}/usr/$(get_libdir)" + + # if we're building from a zip, we need the GITCOMMIT value + [ "$DOCKER_GITCOMMIT" ] && export DOCKER_GITCOMMIT + + if gcc-specs-pie; then + sed -i "s/EXTLDFLAGS_STATIC='/EXTLDFLAGS_STATIC='-fno-PIC /" hack/make.sh || die + grep -q -- '-fno-PIC' hack/make.sh || die 'hardened sed failed' + + sed -i "s/LDFLAGS_STATIC_DOCKER='/LDFLAGS_STATIC_DOCKER='-extldflags -fno-PIC /" hack/make/dynbinary || die + grep -q -- '-fno-PIC' hack/make/dynbinary || die 'hardened sed failed' + fi + + # let's set up some optional features :) + export DOCKER_BUILDTAGS='' + for gd in aufs btrfs device-mapper overlay; do + if ! use $gd; then + DOCKER_BUILDTAGS+=" exclude_graphdriver_${gd//-/}" + fi + done + + if use apparmor; then + DOCKER_BUILDTAGS+=' apparmor' + fi + + # https://github.com/docker/docker/pull/13338 + if use experimental; then + export DOCKER_EXPERIMENTAL=1 + else + unset DOCKER_EXPERIMENTAL + fi + + # time to build! + ./hack/make.sh dynbinary || die 'dynbinary failed' + + # build the man pages too + ./man/md2man-all.sh || die "unable to generate man pages" +} + +src_install() { + cd "src/${EGO_PN}" || die + VERSION="$(cat VERSION)" + newbin "bundles/$VERSION/dynbinary/docker-$VERSION" docker + exeinto /usr/libexec/docker + newexe "bundles/$VERSION/dynbinary/dockerinit-$VERSION" dockerinit + + newinitd contrib/init/openrc/docker.initd docker + newconfd contrib/init/openrc/docker.confd docker + + systemd_dounit contrib/init/systemd/docker.{service,socket} + + udev_dorules contrib/udev/*.rules + + dodoc AUTHORS CONTRIBUTING.md CHANGELOG.md NOTICE README.md + dodoc -r docs/* + doman man/man*/* + + dobashcomp contrib/completion/bash/* + + insinto /usr/share/zsh/site-functions + doins contrib/completion/zsh/* + + insinto /usr/share/vim/vimfiles + doins -r contrib/syntax/vim/ftdetect + doins -r contrib/syntax/vim/syntax + + insinto "/usr/share/${PN}/contrib" + doins -r contrib/* +} + +pkg_postinst() { + udev_reload + + elog + elog "To use Docker, the Docker daemon must be running as root. To automatically" + elog "start the Docker daemon at boot, add Docker to the default runlevel:" + elog " rc-update add docker default" + elog "Similarly for systemd:" + elog " systemctl enable docker.service" + elog + elog "To use Docker as a non-root user, add yourself to the 'docker' group:" + elog " usermod -aG docker youruser" + elog +} diff --git a/app-emulation/docker/files/15404-fix-go14_15.patch b/app-emulation/docker/files/15404-fix-go14_15.patch new file mode 100644 index 00000000..7cda1f93 --- /dev/null +++ b/app-emulation/docker/files/15404-fix-go14_15.patch @@ -0,0 +1,85 @@ +From f83d05c3be3c3bcc84f6fa229504848ee8078321 Mon Sep 17 00:00:00 2001 +From: Vincent Batts +Date: Fri, 7 Aug 2015 10:18:20 -0400 +Subject: [PATCH] devicemapper: fix zero-sized field access + +Fixes: #15279 + +Due to +https://github.com/golang/go/commit/7904946eeb35faece61bbf6f5b3cc8be2f519c17 +the devices field is dropped. + +This solution works on go1.4 and go1.5 + +Signed-off-by: Vincent Batts +--- + daemon/graphdriver/devmapper/deviceset.go | 14 +++++++++----- + pkg/devicemapper/devmapper_wrapper.go | 18 +++++++++++++++--- + 2 files changed, 24 insertions(+), 8 deletions(-) + +diff --git a/daemon/graphdriver/devmapper/deviceset.go b/daemon/graphdriver/devmapper/deviceset.go +index 6dddeb1..97e2032 100644 +--- a/daemon/graphdriver/devmapper/deviceset.go ++++ b/daemon/graphdriver/devmapper/deviceset.go +@@ -1509,12 +1509,16 @@ func (devices *DeviceSet) deactivatePool() error { + if err != nil { + return err + } +- if d, err := devicemapper.GetDeps(devname); err == nil { +- // Access to more Debug output +- logrus.Debugf("[devmapper] devicemapper.GetDeps() %s: %#v", devname, d) ++ ++ if devinfo.Exists == 0 { ++ return nil + } +- if devinfo.Exists != 0 { +- return devicemapper.RemoveDevice(devname) ++ if err := devicemapper.RemoveDevice(devname); err != nil { ++ return err ++ } ++ ++ if d, err := devicemapper.GetDeps(devname); err == nil { ++ logrus.Warnf("[devmapper] device %s still has %d active dependents", devname, d.Count) + } + + return nil +diff --git a/pkg/devicemapper/devmapper_wrapper.go b/pkg/devicemapper/devmapper_wrapper.go +index 87c2003..44ca772 100644 +--- a/pkg/devicemapper/devmapper_wrapper.go ++++ b/pkg/devicemapper/devmapper_wrapper.go +@@ -38,7 +38,10 @@ static void log_with_errno_init() + */ + import "C" + +-import "unsafe" ++import ( ++ "reflect" ++ "unsafe" ++) + + type ( + CDmTask C.struct_dm_task +@@ -184,12 +187,21 @@ func dmTaskGetDepsFct(task *CDmTask) *Deps { + if Cdeps == nil { + return nil + } ++ ++ // golang issue: https://github.com/golang/go/issues/11925 ++ hdr := reflect.SliceHeader{ ++ Data: uintptr(unsafe.Pointer(uintptr(unsafe.Pointer(Cdeps)) + unsafe.Sizeof(*Cdeps))), ++ Len: int(Cdeps.count), ++ Cap: int(Cdeps.count), ++ } ++ devices := *(*[]C.uint64_t)(unsafe.Pointer(&hdr)) ++ + deps := &Deps{ + Count: uint32(Cdeps.count), + Filler: uint32(Cdeps.filler), + } +- for _, device := range Cdeps.device { +- deps.Device = append(deps.Device, (uint64)(device)) ++ for _, device := range devices { ++ deps.Device = append(deps.Device, uint64(device)) + } + return deps + } diff --git a/app-emulation/docker/files/18074-disable-journald-arm.patch b/app-emulation/docker/files/18074-disable-journald-arm.patch new file mode 100644 index 00000000..e7c9a2f6 --- /dev/null +++ b/app-emulation/docker/files/18074-disable-journald-arm.patch @@ -0,0 +1,30 @@ +diff --git a/daemon/logger/journald/journald.go b/daemon/logger/journald/journald.go +index c729b56..97c379c 100644 +--- a/daemon/logger/journald/journald.go ++++ b/daemon/logger/journald/journald.go +@@ -1,4 +1,4 @@ +-// +build linux ++// +build linux,!arm + + // Package journald provides the log driver for forwarding server logs + // to endpoints that receive the systemd format. +diff --git a/daemon/logger/journald/journald_unsupported.go b/daemon/logger/journald/journald_unsupported.go +index d52ca92..8e9034a 100644 +--- a/daemon/logger/journald/journald_unsupported.go ++++ b/daemon/logger/journald/journald_unsupported.go +@@ -1,4 +1,4 @@ +-// +build !linux ++// +build !linux linux,arm + + package journald + +diff --git a/daemon/logger/journald/read.go b/daemon/logger/journald/read.go +index 80c1fbd..0477c04 100644 +--- a/daemon/logger/journald/read.go ++++ b/daemon/logger/journald/read.go +@@ -1,4 +1,4 @@ +-// +build linux,cgo,!static_build,journald ++// +build linux,cgo,!static_build,journald,!arm + + package journald + diff --git a/app-emulation/docker/files/7179-add-audit_write-cap.patch b/app-emulation/docker/files/7179-add-audit_write-cap.patch new file mode 100644 index 00000000..6263698c --- /dev/null +++ b/app-emulation/docker/files/7179-add-audit_write-cap.patch @@ -0,0 +1,29 @@ +From 29ecc95c31ecfe15e3b3d8db94cea1c555e526a3 Mon Sep 17 00:00:00 2001 +From: Alexandr Morozov +Date: Wed, 23 Jul 2014 09:57:41 +0400 +Subject: [PATCH] Add AUDIT_WRITE cap + +Fixes #6345 + +Thanks @larsks for outstanding investigation + +Docker-DCO-1.1-Signed-off-by: Alexandr Morozov (github: LK4D4) +--- + daemon/execdriver/native/template/default_template.go | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/daemon/execdriver/native/template/default_template.go b/daemon/execdriver/native/template/default_template.go +index cc5cc4f..be3dd5a 100644 +--- a/daemon/execdriver/native/template/default_template.go ++++ b/daemon/execdriver/native/template/default_template.go +@@ -23,6 +23,7 @@ func New() *libcontainer.Config { + "NET_BIND_SERVICE", + "SYS_CHROOT", + "KILL", ++ "AUDIT_WRITE", + }, + Namespaces: map[string]bool{ + "NEWNS": true, +-- +2.0.3 + diff --git a/app-emulation/docker/files/docker-1.7.1-service-patch.patch b/app-emulation/docker/files/docker-1.7.1-service-patch.patch new file mode 100644 index 00000000..10f1002c --- /dev/null +++ b/app-emulation/docker/files/docker-1.7.1-service-patch.patch @@ -0,0 +1,12 @@ +--- docker-1.7.1/contrib/init/systemd/docker.service.orig 2015-07-14 21:41:25.000000000 +0300 ++++ docker-1.7.1/contrib/init/systemd/docker.service 2016-03-31 23:38:11.461808109 +0300 +@@ -5,7 +5,8 @@ + Requires=docker.socket + + [Service] +-ExecStart=/usr/bin/docker -d -H fd:// ++EnvironmentFile=/etc/default/docker ++ExecStart=/usr/bin/docker -d $DOCKER_OPTS -H fd:// + MountFlags=slave + LimitNOFILE=1048576 + LimitNPROC=1048576 diff --git a/app-emulation/docker/files/docker-r2.confd b/app-emulation/docker/files/docker-r2.confd new file mode 100644 index 00000000..5436b233 --- /dev/null +++ b/app-emulation/docker/files/docker-r2.confd @@ -0,0 +1,18 @@ +# /etc/conf.d/docker: config file for /etc/init.d/docker + +# where the docker daemon output gets piped +#DOCKER_LOGFILE="/var/log/docker.log" + +# where docker's pid get stored +#DOCKER_PIDFILE="/run/docker.pid" + +# where the docker daemon itself is run from +#DOCKER_BINARY="/usr/bin/docker" + +# uncomment this for a simple workaround to +# https://github.com/dotcloud/docker/issues/1422 +#DOCKER_WORKAROUND_1422="1" + +# if you find that the default DOCKER_WORKAROUND_1422 delay of one second +# is not sufficient, try uncommenting and increasing this value +#DOCKER_WORKAROUND_1422_DELAY="1" diff --git a/app-emulation/docker/files/docker-r2.initd b/app-emulation/docker/files/docker-r2.initd new file mode 100644 index 00000000..b081d9c7 --- /dev/null +++ b/app-emulation/docker/files/docker-r2.initd @@ -0,0 +1,54 @@ +#!/sbin/runscript +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +DOCKER_LOGFILE=${DOCKER_LOGFILE:-/var/log/${SVCNAME}.log} +DOCKER_PIDFILE=${DOCKER_PIDFILE:-/run/${SVCNAME}.pid} +DOCKER_BINARY=${DOCKER_BINARY:-/usr/bin/docker} +DOCKER_WORKAROUND_1422=${DOCKER_WORKAROUND_1422:-0} +DOCKER_WORKAROUND_1422_DELAY=${DOCKER_WORKAROUND_1422_DELAY:-1} + +start() { + checkpath -f -m 0644 -o root:docker "$DOCKER_LOGFILE" + + ebegin "Starting docker daemon" + start-stop-daemon --start --background \ + --exec "$DOCKER_BINARY" \ + --pidfile "$DOCKER_PIDFILE" \ + --stdout "$DOCKER_LOGFILE" \ + --stderr "$DOCKER_LOGFILE" \ + -- -d -p "$DOCKER_PIDFILE" + eend $? + ret=$? + + if [ $ret -eq 0 ] \ + && [ "$DOCKER_WORKAROUND_1422" ] \ + && [ "$DOCKER_WORKAROUND_1422" -gt 0 ] \ + ; then + # see https://github.com/dotcloud/docker/issues/1422 + ewarn "Working around gh#1422 (via busybox image); this may take a moment" + + # we were calling "docker run" more quickly than "docker -d" could get + # fired up, so our workaround wasn't successful without a short delay + sleep $DOCKER_WORKAROUND_1422_DELAY + + # TODO when we get https://github.com/dotcloud/docker/pull/1589, these + # both need -rm so we clean up after ourselves (thanks, @eliasp!) + docker run -i -t busybox true &> /dev/null || true + # first run will fail, so we ignore its output and result and run again + docker run -i -t busybox true + + ewend $? + fi + + return $ret +} + +stop() { + ebegin "Stopping docker daemon" + start-stop-daemon --stop \ + --exec "$DOCKER_BINARY" \ + --pidfile "$DOCKER_PIDFILE" + eend $? +} diff --git a/app-emulation/docker/files/docker-r3.confd b/app-emulation/docker/files/docker-r3.confd new file mode 100644 index 00000000..ae247c00 --- /dev/null +++ b/app-emulation/docker/files/docker-r3.confd @@ -0,0 +1,13 @@ +# /etc/conf.d/docker: config file for /etc/init.d/docker + +# where the docker daemon output gets piped +#DOCKER_LOGFILE="/var/log/docker.log" + +# where docker's pid get stored +#DOCKER_PIDFILE="/run/docker.pid" + +# where the docker daemon itself is run from +#DOCKER_BINARY="/usr/bin/docker" + +# any other random options you want to pass to docker +DOCKER_OPTS="" diff --git a/app-emulation/docker/files/docker-r3.initd b/app-emulation/docker/files/docker-r3.initd new file mode 100644 index 00000000..a3031850 --- /dev/null +++ b/app-emulation/docker/files/docker-r3.initd @@ -0,0 +1,31 @@ +#!/sbin/runscript +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +DOCKER_LOGFILE=${DOCKER_LOGFILE:-/var/log/${SVCNAME}.log} +DOCKER_PIDFILE=${DOCKER_PIDFILE:-/run/${SVCNAME}.pid} +DOCKER_BINARY=${DOCKER_BINARY:-/usr/bin/docker} +DOCKER_OPTS=${DOCKER_OPTS:-} + +start() { + checkpath -f -m 0644 -o root:docker "$DOCKER_LOGFILE" + + ebegin "Starting docker daemon" + start-stop-daemon --start --background \ + --exec "$DOCKER_BINARY" \ + --pidfile "$DOCKER_PIDFILE" \ + --stdout "$DOCKER_LOGFILE" \ + --stderr "$DOCKER_LOGFILE" \ + -- -d -p "$DOCKER_PIDFILE" \ + $DOCKER_OPTS + eend $? +} + +stop() { + ebegin "Stopping docker daemon" + start-stop-daemon --stop \ + --exec "$DOCKER_BINARY" \ + --pidfile "$DOCKER_PIDFILE" + eend $? +} diff --git a/app-emulation/docker/files/docker.initd b/app-emulation/docker/files/docker.initd new file mode 100644 index 00000000..18ca8ab9 --- /dev/null +++ b/app-emulation/docker/files/docker.initd @@ -0,0 +1,31 @@ +#!/sbin/runscript +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +DOCKER_LOGFILE=${DOCKER_LOGFILE:-/var/log/${SVCNAME}.log} +DOCKER_PIDFILE=${DOCKER_PIDFILE:-/run/${SVCNAME}.pid} +DOCKER_BINARY=${DOCKER_BINARY:-/usr/bin/docker} + +start() { + touch "$DOCKER_LOGFILE" + chown root:docker "$DOCKER_LOGFILE" + chmod 0644 "$DOCKER_LOGFILE" + + ebegin "Starting docker daemon" + start-stop-daemon --start --background \ + --exec "$DOCKER_BINARY" \ + --pidfile "$DOCKER_PIDFILE" \ + --stdout "$DOCKER_LOGFILE" \ + --stderr "$DOCKER_LOGFILE" \ + -- -d -p "$DOCKER_PIDFILE" + eend $? +} + +stop() { + ebegin "Stopping docker daemon" + start-stop-daemon --stop \ + --exec "$DOCKER_BINARY" \ + --pidfile "$DOCKER_PIDFILE" + eend $? +} diff --git a/app-emulation/docker/files/docker.service b/app-emulation/docker/files/docker.service new file mode 100644 index 00000000..bd53c520 --- /dev/null +++ b/app-emulation/docker/files/docker.service @@ -0,0 +1,13 @@ +[Unit] +Description=Easily create lightweight, portable, self-sufficient containers from any application! +Requires=network.target +After=multi-user.target + +[Service] +Type=simple +EnvironmentFile=-/etc/default/docker +ExecStartPre=/bin/mount --make-rprivate / +ExecStart=/usr/bin/docker -d ${DOCKER_OPTS} + +[Install] +WantedBy=multi-user.target -- cgit v1.2.3