# Maintainer: Natanael Copa # Contributor: Bernhard J. M. Gruen pkgname=docker pkgver=18.06.1 _ver=${pkgver/_/-}-ce pkgrel=0 _gitcommit=v$_ver pkgdesc="Pack, ship and run any application as a lightweight container" url="http://www.docker.io/" arch="all" license="Apache-2.0" depends="ca-certificates iptables" makedepends="go btrfs-progs-dev bash linux-headers coreutils libseccomp-dev cmake lvm2-dev libtool" options="!check" install="$pkgname.pre-install" # from "$srcdir"/docker-ce-"$_ver"-ce/components/engine/hack/dockerfile/install/*.installer _runc_ver=69663f0bd4b60df09991c08812a60108003fa340 _containerd_ver=468a545b9edcd5932818eb9de8e72413e616e86e # v1.1.2 _tini_ver=fec3683b971d9c3ef73f284f176672c44b448662 # v0.18.0 _libnetwork_ver=3ac297bc7fd0afec9051bbb47024c9bc1d75bf5b # proxy.installer _cobra_ver="0.0.3" _go_md2man_ver="1.0.8" subpackages=" $pkgname-bash-completion:bashcomp:noarch $pkgname-fish-completion:fishcomp:noarch $pkgname-zsh-completion:zshcomp:noarch $pkgname-vim:vim:noarch $pkgname-doc $pkgname-openrc " source=" docker-$pkgver.tar.gz::https://github.com/docker/docker-ce/archive/v$_ver.tar.gz runc-$_runc_ver.tar.gz::https://github.com/opencontainers/runc/archive/$_runc_ver.tar.gz containerd-$_containerd_ver.tar.gz::https://github.com/containerd/containerd/archive/$_containerd_ver.tar.gz libnetwork-$_libnetwork_ver.tar.gz::https://github.com/docker/libnetwork/archive/$_libnetwork_ver.tar.gz tini-$_tini_ver.tar.gz::https://github.com/krallin/tini/archive/$_tini_ver.tar.gz go-md2man-$_go_md2man_ver.tar.gz::https://github.com/cpuguy83/go-md2man/archive/v$_go_md2man_ver.tar.gz cobra-$_cobra_ver.tar.gz::https://github.com/spf13/cobra/archive/v$_cobra_ver.tar.gz docker-openrc-fixes.patch tini-cmake-fixes.patch docker-openrc-busybox-ash.patch " _dockerdir="$srcdir"/docker-$_ver _cli_builddir="$_dockerdir"/components/cli _daemon_builddir="$_dockerdir"/components/engine _buildtags="" _runc_buildtags="seccomp" _runc_builddir="$srcdir"/runc-$_runc_ver _containerd_builddir="$srcdir"/containerd-$_containerd_ver _libnetwork_builddir="$srcdir"/libnetwork-$_libnetwork_ver _tini_builddir="$srcdir"/tini-$_tini_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-$_ver "$_dockerdir" _apply_patches "$_daemon_builddir" docker _apply_patches "$_runc_builddir" runc _apply_patches "$_tini_builddir" tini } build() { export AUTO_GOPATH=1 #export GOPATH="$srcdir" #export GOBIN="$GOPATH"/bin #export PATH="$GOBIN:$PATH" export DOCKER_GITCOMMIT=$_gitcommit export DOCKER_BUILDTAGS=$_buildtags unset CC # prevent possible ccache issues # containerd msg "building containerd" cd "$_containerd_builddir" # Vendor dir only works if it's part of a package in the src dir. Easiest solution is to make it a src dir iself mv vendor src mkdir -p src/github.com/containerd/ ln -s "$_containerd_builddir" src/github.com/containerd/containerd GOPATH="$PWD" LDFLAGS="" make GIT_COMMIT="$_containerd_ver" # 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 # runc msg "building runc" cd "$_runc_builddir" mv vendor src mkdir -p src/github.com/opencontainers/ ln -s "$_runc_builddir" src/github.com/opencontainers/runc GOPATH="$PWD" make COMMIT="$_runc_ver" # tini msg "building tini" cd "$_tini_builddir" cmake -DVERSION_GIT=$_tini_ver make tini-static # 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 # md2man mkdir -p "$GOPATH"/src/github.com/cpuguy83/ ln -s "$PWD"/go-md2man-$_go_md2man_ver "$GOPATH"/src/github.com/cpuguy83/go-md2man cd "$GOPATH"/src/github.com/cpuguy83/go-md2man go get # convert md to man pages msg "generating man pages" cd "$_cli_builddir" make manpages } package() { cd "$_dockerdir" local ver=$(cat VERSION) # 'build/docker' is a symlink to 'docker-linux-$arch' e.g. 'docker-linux-amd64' install -Dm755 "$_cli_builddir"/build/docker \ "$pkgdir"/usr/bin/docker # install -Dm755 "$_daemon_builddir"/bundles/$ver/dynbinary-daemon/dockerd-$ver \ install -Dm755 "$_daemon_builddir"/bundles/dynbinary-daemon/dockerd-$ver \ "$pkgdir"/usr/bin/dockerd install -Dm755 "$_libnetwork_builddir"/docker-proxy \ "$pkgdir"/usr/bin/docker-proxy install -Dm755 "$_runc_builddir"/runc \ "$pkgdir"/usr/bin/docker-runc install -Dm755 "$_containerd_builddir"/bin/containerd \ "$pkgdir"/usr/bin/docker-containerd install -Dm755 "$_containerd_builddir"/bin/containerd-shim \ "$pkgdir"/usr/bin/docker-containerd-shim install -Dm755 "$_containerd_builddir"/bin/ctr \ "$pkgdir"/usr/bin/docker-containerd-ctr install -Dm755 "$_tini_builddir"/tini-static \ "$pkgdir"/usr/bin/docker-init install -Dm755 "$_daemon_builddir"/contrib/init/openrc/docker.initd \ "$pkgdir"/etc/init.d/docker install -Dm644 "$_daemon_builddir"/contrib/init/openrc/docker.confd \ "$pkgdir"/etc/conf.d/docker mkdir -p "$pkgdir"/usr/share/man/man1 install -Dm644 "$_cli_builddir"/man/man1/* \ "$pkgdir"/usr/share/man/man1 } bashcomp() { pkgdesc="Bash completion for Docker" depends="" install_if="$pkgname=$pkgver-r$pkgrel bash-completion" install -Dm644 "$_cli_builddir"/contrib/completion/bash/$pkgname \ "$subpkgdir"/usr/share/bash-completion/completions/$pkgname } fishcomp() { pkgdesc="Fish shell completion for Docker" depends="" install_if="$pkgname=$pkgver-r$pkgrel fish" install -Dm644 "$_cli_builddir"/contrib/completion/fish/$pkgname.fish \ "$subpkgdir"/usr/share/fish/completions/$pkgname.fish } zshcomp() { pkgdesc="Zsh completion for $pkgname" depends="" install_if="$pkgname=$pkgver-r$pkgrel zsh" install -Dm644 "$_cli_builddir"/contrib/completion/zsh/_$pkgname \ "$subpkgdir"/usr/share/zsh/site-functions/_$pkgname } vim() { depends="" pkgdesc="Vim syntax for $pkgname" install_if="vim $pkgname=$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="7375452669bf6576e1f8d193cd7f421cf39a26d575351f2b4e433c7fc89384f441547417dbe8c12a12a0937c9fea3800b5c541f0ba8b58ceffe7445183ceeef1 docker-18.06.1.tar.gz 9a55bdb8e39830f46cceff48970b7688139927552e3d268b9ef4a6e640ffc3d95164b99c5b05d07d295bedc2ea22daf6062fd520df1548d78b1d481fd928f1e3 runc-69663f0bd4b60df09991c08812a60108003fa340.tar.gz 0c3cb261a535826f281af2d2df7e5c93e7d37139d5b709d7534148b9e706db56704d06b81a9e76acc2e86180f37475d566b8ddde990bbaae424af70206602347 containerd-468a545b9edcd5932818eb9de8e72413e616e86e.tar.gz 21d3d1bd8aafeab51a3e0a14ada4d559b5b113a48d315e91f7d70e4fa839f5c92d4068b38c28bf6929da9c11cfc61703bafc7148f64b784208d61fa14ee4545d libnetwork-3ac297bc7fd0afec9051bbb47024c9bc1d75bf5b.tar.gz ee46d21467f8bacb4e8be72f5dfcbb23c1964286e90b4b3d3bf67dbbf79a337968ac8a0042a8191e329a65398b20ea160aae3ae5ef20ee03ebae11c2083d7621 tini-fec3683b971d9c3ef73f284f176672c44b448662.tar.gz 4c52e01c9b07582b5d55d1e94935378a676bd284a3e8230a8a191d4678b1b6ae92b704a249117c542832170069a70c649e58a1752fb2973709259b5bc108db91 go-md2man-1.0.8.tar.gz c38db9432a168f913b41a1e1b11d84bedfade82ff70791be9d343a6cc86b8a05b18bae344d67ebd8bae4c98662db7ac664a9dc86fa9b9ad4aa5c96cbf0178efb cobra-0.0.3.tar.gz 33155a79799cc6c0520a030e1a9bdba60441776d612e5e255574b23bbce1c7a8e5d868284b05a8a92704be6bbb7db905388564e867986a705acbe4884ac58584 docker-openrc-fixes.patch 29a343848d0aa14864c6bfc87c2a6fd408f546f0114e12f7035fb4678ee769fe728872a5d283803177990a61d7e02c4916017d5e45380ad3b0a2dffa3e746857 tini-cmake-fixes.patch 9b24dc0c50904c3d12bb04c1a7df169651043ddbc258018647010a5aa01d8a19ad54d10ca79dce6d6283c81f4fa0cc8de417f6180dd824c5a588b22b23546cb5 docker-openrc-busybox-ash.patch"