# Contributor: Eivind Uggedal # Contributor: Jake Buchholz # Maintainer: Jake Buchholz pkgname=docker pkgver=19.03.2 _gitcommit=6a30dfca03664a0b6bf0646a7d389ee7d0318e6e # https://github.com/docker/docker-ce/commits/v$pkgver _ver=${pkgver/_/-}-ce pkgrel=0 pkgdesc="Pack, ship and run any application as a lightweight container" url="https://www.docker.io/" arch="all" license="Apache-2.0" depends="docker-engine docker-cli" makedepends="go go-md2man btrfs-progs-dev bash linux-headers coreutils lvm2-dev libtool libseccomp-dev" install="$pkgname.pre-install" # from https://github.com/docker/docker-ce/blob/v$pkgver/components/engine/vendor.conf _libnetwork_ver=fc5a7d91d54cc98f64fc28f9e288b46a0bee756c _cobra_ver="0.0.3" # secfixes: # 19.03.1: # - CVE-2019-14271 # 18.09.8: # - CVE-2019-13509 # 18.09.7: # - CVE-2018-15664 subpackages=" $pkgname-engine:engine $pkgname-openrc:engine_openrc:noarch $pkgname-cli:cli $pkgname-doc:cli_doc:noarch $pkgname-bash-completion:cli_bashcomp:noarch $pkgname-fish-completion:cli_fishcomp:noarch $pkgname-zsh-completion:cli_zshcomp:noarch $pkgname-vim:cli_vim:noarch " source=" docker-$pkgver.tar.gz::https://github.com/docker/docker-ce/archive/v$pkgver.tar.gz libnetwork-$_libnetwork_ver.tar.gz::https://github.com/docker/libnetwork/archive/$_libnetwork_ver.tar.gz cobra-$_cobra_ver.tar.gz::https://github.com/spf13/cobra/archive/v$_cobra_ver.tar.gz docker-openrc-fixes.patch " _dockerdir="$srcdir"/docker-$_ver _cli_builddir="$_dockerdir"/components/cli _daemon_builddir="$_dockerdir"/components/engine _buildtags="seccomp" _libnetwork_builddir="$srcdir"/libnetwork-$_libnetwork_ver _apply_patches() { local _dir="$1" local _prefix="$2" local i msg "applying patches for $_prefix" cd "$_dir" for i in $source; do case $i in ${_prefix}-*.patch) msg $i; patch -p1 -i "$srcdir"/$i;; esac done } prepare() { # Rename 'docker-ce-VER' to 'docker-VER' mv "$srcdir"/docker-ce-$pkgver "$_dockerdir" _apply_patches "$_daemon_builddir" docker } build() { export AUTO_GOPATH=1 export GITCOMMIT=$_gitcommit # for cli export DOCKER_GITCOMMIT=$_gitcommit # for engine export DOCKER_BUILDTAGS=$_buildtags unset CC # prevent possible ccache issues # libnetwork (docker-proxy) msg "building docker-proxy" cd "$_libnetwork_builddir" mkdir -p src/github.com/docker/ ln -s "$_libnetwork_builddir" src/github.com/docker/libnetwork GOPATH="$PWD" go build -v -ldflags="-linkmode=external" -o docker-proxy github.com/docker/libnetwork/cmd/proxy # daemon msg "building daemon" cd "$_daemon_builddir" mkdir -p src/github.com/docker/ ln -s "$_daemon_builddir" src/github.com/docker/docker GOPATH="$PWD" VERSION="$_ver" hack/make.sh dynbinary # Required for building man-pages export GOPATH="$_cli_builddir" export GOBIN="$GOPATH/bin" export PATH="$GOBIN:$PATH" # cli msg "building cli" cd "$_cli_builddir" mkdir -p "$GOPATH"/src/github.com/docker/ ln -s "$_cli_builddir" "$GOPATH"/src/github.com/docker/cli LDFLAGS="" make VERSION="$_ver" dynbinary # docker man msg "building docker man pages" cd "$srcdir" # cobra mkdir -p "$GOPATH"/src/github.com/spf13/ ln -sf "$PWD"/cobra-$_cobra_ver "$GOPATH"/src/github.com/spf13/cobra # convert md to man pages msg "generating man pages" cd "$_cli_builddir" # make manpages (from cli/Makefile, but using installed go-md2man) mkdir -p ./man/man1 # Generate man pages from cobra commands go build -o /tmp/gen-manpages github.com/docker/cli/man /tmp/gen-manpages --root "$(pwd)" --target "$(pwd)/man/man1" # generate legacy manpages from markdown ./man/md2man-all.sh -q } # docker itself is a meta package package() { mkdir -p "$pkgdir" } engine() { pkgdesc="Docker Engine (dockerd)" depends="ca-certificates containerd iptables tini-static" install -Dm755 "$_daemon_builddir"/bundles/dynbinary-daemon/dockerd \ "$subpkgdir"/usr/bin/dockerd install -Dm755 "$_libnetwork_builddir"/docker-proxy \ "$subpkgdir"/usr/bin/docker-proxy # symlink externally provided tini-static binary ln -s /sbin/tini-static "$subpkgdir"/usr/bin/docker-init } engine_openrc() { pkgdesc="OpenRC init scripts for Docker" depends="" install_if="openrc $pkgname-engine=$pkgver-r$pkgrel" install -Dm755 "$_daemon_builddir"/contrib/init/openrc/docker.initd \ "$subpkgdir"/etc/init.d/docker install -Dm644 "$_daemon_builddir"/contrib/init/openrc/docker.confd \ "$subpkgdir"/etc/conf.d/docker } cli() { pkgdesc="Docker CLI" depends="ca-certificates" # 'build/docker' is a symlink to 'docker-linux-$arch' e.g. 'docker-linux-amd64' install -Dm755 "$_cli_builddir"/build/docker \ "$subpkgdir"/usr/bin/docker } cli_doc() { pkgdesc="Documentation for Docker" depends="" install_if="docs $pkgname-cli=$pkgver-r$pkgrel" mkdir -p "$subpkgdir"/usr/share/man/man1 gzip -9 "$_cli_builddir"/man/man1/* install -Dm644 "$_cli_builddir"/man/man1/* \ "$subpkgdir"/usr/share/man/man1 } cli_bashcomp() { pkgdesc="Bash completion for Docker" depends="" install_if="bash-completion $pkgname-cli=$pkgver-r$pkgrel" install -Dm644 "$_cli_builddir"/contrib/completion/bash/$pkgname \ "$subpkgdir"/usr/share/bash-completion/completions/$pkgname } cli_fishcomp() { pkgdesc="Fish shell completion for Docker" depends="" install_if="fish<3 $pkgname-cli=$pkgver-r$pkgrel" # fish above version 3 has docker completion install -Dm644 "$_cli_builddir"/contrib/completion/fish/$pkgname.fish \ "$subpkgdir"/usr/share/fish/completions/$pkgname.fish } cli_zshcomp() { pkgdesc="Zsh completion for Docker" depends="" install_if="zsh $pkgname-cli=$pkgver-r$pkgrel" install -Dm644 "$_cli_builddir"/contrib/completion/zsh/_$pkgname \ "$subpkgdir"/usr/share/zsh/site-functions/_$pkgname } cli_vim() { pkgdesc="Vim syntax for Docker" depends="" install_if="vim $pkgname-cli=$pkgver-r$pkgrel" local f= for f in ftdetect/dockerfile.vim syntax/dockerfile.vim; do install -Dm644 "$_daemon_builddir"/contrib/syntax/vim/$f \ "$subpkgdir"/usr/share/vim/vimfiles/$f done } sha512sums="6b594fdbb53dcc0228781375a3884eb370446738c44f7c1e42945c4ccc263e75f53d984bc8ea6a6a498446859e667305bd967299c12956f1cb925d868a4bf2b8 docker-19.03.2.tar.gz dea31fd82ab2d445fbd39fe15550a91f7e489a06f6dedd32ea1925f7e9a7971952d26b874f9687249609a0d204ea35da357e0a957b819df2026a0cf8109cb354 libnetwork-fc5a7d91d54cc98f64fc28f9e288b46a0bee756c.tar.gz c38db9432a168f913b41a1e1b11d84bedfade82ff70791be9d343a6cc86b8a05b18bae344d67ebd8bae4c98662db7ac664a9dc86fa9b9ad4aa5c96cbf0178efb cobra-0.0.3.tar.gz d796e6dcab6443a84064f3439dde46bc7e1989e1b52910b3e80a0af0ae1ddd288f0306a24c8d31032e24f5fd4218d2f25614752021355441f118ba2b524cfbd1 docker-openrc-fixes.patch"