diff options
author | Robin H. Johnson <robbat2@gentoo.org> | 2015-08-08 13:49:04 -0700 |
---|---|---|
committer | Robin H. Johnson <robbat2@gentoo.org> | 2015-08-08 17:38:18 -0700 |
commit | 56bd759df1d0c750a065b8c845e93d5dfa6b549d (patch) | |
tree | 3f91093cdb475e565ae857f1c5a7fd339e2d781e /app-emulation/docker | |
download | gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.gz gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.bz2 gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.zip |
proj/gentoo: Initial commit
This commit represents a new era for Gentoo:
Storing the gentoo-x86 tree in Git, as converted from CVS.
This commit is the start of the NEW history.
Any historical data is intended to be grafted onto this point.
Creation process:
1. Take final CVS checkout snapshot
2. Remove ALL ChangeLog* files
3. Transform all Manifests to thin
4. Remove empty Manifests
5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$
5.1. Do not touch files with -kb/-ko keyword flags.
Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration tests
X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this project
X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo developer, wrote Git features for the migration
X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve cvs2svn
X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts
X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014 work in migration
X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging
X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed
Diffstat (limited to 'app-emulation/docker')
-rw-r--r-- | app-emulation/docker/Manifest | 3 | ||||
-rw-r--r-- | app-emulation/docker/docker-1.6.1.ebuild | 246 | ||||
-rw-r--r-- | app-emulation/docker/docker-1.6.2.ebuild | 246 | ||||
-rw-r--r-- | app-emulation/docker/docker-1.7.1.ebuild | 268 | ||||
-rw-r--r-- | app-emulation/docker/files/7179-add-audit_write-cap.patch | 29 | ||||
-rw-r--r-- | app-emulation/docker/files/docker-r2.confd | 18 | ||||
-rwxr-xr-x | app-emulation/docker/files/docker-r2.initd | 54 | ||||
-rw-r--r-- | app-emulation/docker/files/docker-r3.confd | 13 | ||||
-rwxr-xr-x | app-emulation/docker/files/docker-r3.initd | 31 | ||||
-rwxr-xr-x | app-emulation/docker/files/docker.initd | 31 | ||||
-rw-r--r-- | app-emulation/docker/files/docker.service | 12 | ||||
-rw-r--r-- | app-emulation/docker/metadata.xml | 58 |
12 files changed, 1009 insertions, 0 deletions
diff --git a/app-emulation/docker/Manifest b/app-emulation/docker/Manifest new file mode 100644 index 000000000000..3f84dd1c2dd2 --- /dev/null +++ b/app-emulation/docker/Manifest @@ -0,0 +1,3 @@ +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 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 000000000000..adabf385234f --- /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 000000000000..b2b8d550a325 --- /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 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 000000000000..d660fc3aac7b --- /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 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:= + 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 + ) + aufs? ( + || ( + sys-fs/aufs3 + sys-fs/aufs4 + sys-kernel/aufs-sources + ) + ) + + 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 +} + +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/files/7179-add-audit_write-cap.patch b/app-emulation/docker/files/7179-add-audit_write-cap.patch new file mode 100644 index 000000000000..6263698cea22 --- /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 <lk4d4math@gmail.com> +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 <lk4d4math@gmail.com> (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-r2.confd b/app-emulation/docker/files/docker-r2.confd new file mode 100644 index 000000000000..5436b2339d99 --- /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 100755 index 000000000000..b081d9c77094 --- /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 000000000000..ae247c007e33 --- /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 100755 index 000000000000..a30318509c4b --- /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 100755 index 000000000000..18ca8ab9d764 --- /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 000000000000..dde89a214adb --- /dev/null +++ b/app-emulation/docker/files/docker.service @@ -0,0 +1,12 @@ +[Unit] +Description=Easily create lightweight, portable, self-sufficient containers from any application! +Requires=network.target +After=multi-user.target + +[Service] +Type=simple +ExecStartPre=/bin/mount --make-rprivate / +ExecStart=/usr/bin/docker -d + +[Install] +WantedBy=multi-user.target diff --git a/app-emulation/docker/metadata.xml b/app-emulation/docker/metadata.xml new file mode 100644 index 000000000000..a8f4c2c14832 --- /dev/null +++ b/app-emulation/docker/metadata.xml @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <longdescription> + Docker is an open-source project to easily create lightweight, + portable, self-sufficient containers from any application. The same + container that a developer builds and tests on a laptop can run at + scale, in production, on VMs, bare metal, OpenStack clusters, public + clouds and more. + </longdescription> + <herd>proxy-maintainers</herd> + <maintainer status="active"> + <email>admwiggin@gmail.com</email> + <name>Tianon</name> + </maintainer> + <maintainer> + <email>xarthisius@gentoo.org</email> + <name>Kacper Kowalik</name> + </maintainer> + <maintainer> + <email>alunduil@gentoo.org</email> + <name>Alex Brandt</name> + </maintainer> + <use> + <flag name="aufs"> + Enables dependencies for the "aufs" graph driver, including + necessary kernel flags. + </flag> + <flag name="apparmor"> + Enable AppArmor support. + </flag> + <flag name="btrfs"> + Enables dependencies for the "btrfs" graph driver, including + necessary kernel flags. + </flag> + <flag name="contrib"> + Install additional contrib scripts and components. + </flag> + <flag name="device-mapper"> + Enables dependencies for the "devicemapper" graph driver, including + necessary kernel flags. + </flag> + <flag name="experimental"> + Enable features labelled by upstream to be of "experimental" + quality and not yet ready for general consumption. + </flag> + <flag name="overlay"> + Enables dependencies for the "overlay" graph driver, including + necessary kernel flags. + </flag> + <flag name="lxc"> + Enables dependencies for the "lxc" execution driver. + </flag> + </use> + <upstream> + <remote-id type="github">docker/docker</remote-id> + </upstream> +</pkgmetadata> |