aboutsummarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Fordham2017-10-14 15:39:05 +1100
committerChris Fordham2017-10-14 15:39:05 +1100
commit2b92a83968ebd9290d7b0091f7b99711f1880a5e (patch)
treee35627e55a142246d86623fbfde841ab056f7dde
parent195ef2b420fa4a30c578c5469f28abe00af1f14f (diff)
downloadaur-2b92a83968ebd9290d7b0091f7b99711f1880a5e.tar.gz
Major re-factor to be more like current hack build upstream:
- use docker-ce for cli - silence all pushd and popd commands - build runc with seccomp apparmor selinux - build docker-proxy with -linkmode=external - add in fish completion
-rw-r--r--PKGBUILD146
1 files changed, 74 insertions, 72 deletions
diff --git a/PKGBUILD b/PKGBUILD
index b5a434e6a868..380b1aaaea70 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -21,7 +21,7 @@ arch=('i686' 'x86_64')
url="https://github.com/docker/docker"
license=('Apache License Version 2.0')
depends=('bridge-utils' 'iproute2' 'device-mapper' 'sqlite' 'systemd')
-makedepends=('glibc' 'git' 'go' 'btrfs-progs' 'go-md2man')
+makedepends=('glibc' 'git' 'go' 'btrfs-progs' 'go-md2man' 'apparmor-libapparmor')
provides=('docker')
conflicts=('docker' 'containerd' 'containerd-git' 'runc' 'runc-git')
replaces=('docker' 'containerd' 'containerd-git' 'runc' 'runc-git')
@@ -29,7 +29,7 @@ install='docker.install'
# don't strip binaries! A sha1 is used to check binary consistency.
options=('!strip')
source=('moby::git+https://github.com/moby/moby.git'
- 'cli::git+https://github.com/docker/cli.git'
+ 'docker-ce::git+https://github.com/docker/docker-ce'
'containerd::git+https://github.com/containerd/containerd.git'
'runc::git+https://github.com/opencontainers/runc.git'
'libnetwork::git+https://github.com/docker/libnetwork.git'
@@ -51,31 +51,27 @@ pkgver() {
prepare() {
export GOPATH="$srcdir/go"
- msg2 'preparing directories'
+ # prepare go src directories
mkdir -p "$srcdir/go/src/github.com/docker"
mkdir -p "$srcdir/go/src/github.com/moby"
mkdir -p "$srcdir/go/src/github.com/containerd"
mkdir -p "$srcdir/go/src/github.com/opencontainers"
- msg2 'update specific commits for upstream repositories'
+ # use specific commits for upstream repositories
# https://github.com/docker/docker/blob/master/hack/dockerfile/binaries-commits
. "$srcdir/moby/hack/dockerfile/binaries-commits"
pushd "$srcdir/runc" >/dev/null
- msg2 'checking out runc'
+ msg2 "checking out runc ($RUNC_COMMIT)"
git checkout -q "$RUNC_COMMIT"
- popd
+ popd >/dev/null
pushd "$srcdir/containerd" >/dev/null
- msg2 'checking out containerd'
+ msg2 "checking out containerd ($CONTAINERD_COMMIT)"
git checkout -q "$CONTAINERD_COMMIT"
- popd
+ popd >/dev/null
pushd "$srcdir/libnetwork" >/dev/null
- msg2 'checking out libnetwork'
+ msg2 "checking out libnetwork ($LIBNETWORK_COMMIT)"
git checkout -q "$LIBNETWORK_COMMIT"
- popd
- pushd "$srcdir/cli" >/dev/null
- msg2 'checking out cli'
- git checkout -q "$DOCKERCLI_COMMIT"
- popd
+ popd >/dev/null
# apply any patches for runc
pushd "$srcdir/runc" >/dev/null
@@ -93,43 +89,51 @@ prepare() {
build() {
# runc
- msg 'building runc'
+ msg2 'building runc'
ln -sf "$srcdir/runc" "$GOPATH/src/github.com/opencontainers/"
pushd "$GOPATH/src/github.com/opencontainers/runc" >/dev/null
- make BUILDTAGS=""
+ : "${RUNC_BUILDTAGS:=seccomp apparmor selinux}"
+ make BUILDTAGS="$RUNC_BUILDTAGS"
+ msg2 'generating runc manpages'
man/md2man-all.sh 2>/dev/null
- popd
+ popd >/dev/null
# containerd
- msg 'building containerd'
+ msg2 'building containerd'
ln -sf "$srcdir/containerd" "$GOPATH/src/github.com/containerd/"
pushd "$GOPATH/src/github.com/containerd/containerd" >/dev/null
LDFLAGS= make
- popd
+ popd >/dev/null
# docker-proxy (from libnetwork)
- msg 'building docker-proxy'
+ msg2 'building docker-proxy'
ln -sf "$srcdir/libnetwork" "$GOPATH/src/github.com/docker/"
pushd "$GOPATH/src/github.com/docker/libnetwork" >/dev/null
+ : "${PROXY_LDFLAGS:=-linkmode=external}"
+
go build -ldflags="$PROXY_LDFLAGS" -o ./bin/docker-proxy 'github.com/docker/libnetwork/cmd/proxy'
- popd
+ popd >/dev/null
# docker cli
- msg 'building docker cli'
- ln -sf "$srcdir/cli" "$GOPATH/src/github.com/docker/"
- pushd cli >/dev/null
- LDFLAGS= make dynbinary
- # cherry-picked commit does not yet have manpages!
- git checkout master
+ : "${DOCKERCLI_VERSION:=17.06.0-ce}"
+ msg2 "building docker cli ($DOCKERCLI_VERSION)"
+ ln -sf "$srcdir/docker-ce" "$GOPATH/src/github.com/docker/"
+ pushd docker-ce >/dev/null
+ git checkout -q "v$DOCKERCLI_VERSION"
+ ln -sf "$srcdir/docker-ce/components/cli" "$GOPATH/src/github.com/docker/"
+ popd >/dev/null
+ pushd "$GOPATH/src/github.com/docker/cli" >/dev/null
+ go build -o ./build/docker github.com/docker/cli/cmd/docker
+ msg2 'generating cli manpages'
man/md2man-all.sh 2>/dev/null
- popd
+ popd >/dev/null
# docker
- msg 'building dockerd'
+ msg2 'building dockerd'
pushd moby >/dev/null
export AUTO_GOPATH=1
./hack/make.sh dynbinary
- popd
+ popd >/dev/null
}
# TODO: complete tests for all
@@ -139,74 +143,72 @@ build() {
# }
package() {
- msg2 'package runc binary'
+ msg2 'runc binary'
install -Dm755 "$GOPATH/src/github.com/opencontainers/runc/runc" "$pkgdir/usr/bin/runc"
- msg 'runc manpages'
- pushd "$srcdir/runc/man/man8" >/dev/null
- for i in *; do
- install -Dm644 "$i" "$pkgdir/usr/share/man/man8/$i"
- done
- popd
- msg2 'package containerd binaries'
+ msg2 'containerd binaries'
pushd "$GOPATH/src/github.com/containerd/containerd/bin" >/dev/null
for file in $(find . -type f -print); do
install -Dm755 "$file" "$pkgdir/usr/bin/$file"
done
- popd
+ popd >/dev/null
- msg2 'package docker-proxy binary'
- # (from libnetwork)
+ msg2 'docker-proxy binary'
install -Dm755 "$GOPATH/src/github.com/docker/libnetwork/bin/docker-proxy" "$pkgdir/usr/bin/docker-proxy"
- msg2 'package dockerd binary'
+ msg2 'dockerd binary'
_dockerver="$(cat $srcdir/moby/VERSION)"
- pushd "$srcdir/moby/bundles/dynbinary-daemon"
+ pushd "$srcdir/moby/bundles/dynbinary-daemon" >/dev/null
install -Dm755 "dockerd-$_dockerver" "$pkgdir/usr/bin/dockerd"
- popd
+ popd >/dev/null
- msg2 'package docker cli binary'
+ msg2 'docker cli binary'
install -Dm755 "$GOPATH/src/github.com/docker/cli/build/docker" "$pkgdir/usr/bin/docker"
- msg2 'package docker cli manpages'
- pushd "$srcdir/cli/man/man1" >/dev/null
- for i in *; do
- install -Dm644 "$i" "$pkgdir/usr/share/man/man8/$i"
- done
- popd
- pushd "$srcdir/cli/man/man5" >/dev/null
- for i in *; do
- install -Dm644 "$i" "$pkgdir/usr/share/man/man8/$i"
- done
- popd
- pushd "$srcdir/cli/man/man8" >/dev/null
- for i in *; do
- install -Dm644 "$i" "$pkgdir/usr/share/man/man8/$i"
- done
- popd
-
- msg 'additional softlinks'
+ msg2 'additional softlinks'
# symlink containerd/run (nice integration...)
ln -s containerd "$pkgdir/usr/bin/docker-containerd"
ln -s containerd-shim "$pkgdir/usr/bin/docker-containerd-shim"
ln -s ctr "$pkgdir/usr/bin/docker-containerd-ctr"
ln -s runc "$pkgdir/usr/bin/docker-runc"
- msg 'completion files'
- # (from docker/cli master as the pinned commit does not yet have them)
- pushd "$srcdir/cli" >/dev/null
- git checkout master
- install -Dm644 "contrib/completion/bash/docker" "$pkgdir/usr/share/bash-completion/completions/docker"
- install -Dm644 "contrib/completion/zsh/_docker" "$pkgdir/usr/share/zsh/site-functions/_docker"
- popd
+ msg2 'completion files'
+ pushd "$srcdir/docker-ce" >/dev/null
+ install -Dm644 "components/cli/contrib/completion/bash/docker" "$pkgdir/usr/share/bash-completion/completions/docker"
+ install -Dm644 "components/cli/contrib/completion/zsh/_docker" "$pkgdir/usr/share/zsh/site-functions/_docker"
+ install -Dm644 "components/cli/contrib/completion/fish/docker.fish" "$pkgdir/usr/share/fish/completions/docker.fish"
+ popd >/dev/null
# systemd
- msg 'systemd files'
+ msg2 'systemd files'
pushd "$srcdir/moby" >/dev/null
install -Dm644 'contrib/init/systemd/docker.service' "$pkgdir/usr/lib/systemd/system/docker.service"
install -Dm644 'contrib/init/systemd/docker.socket' "$pkgdir/usr/lib/systemd/system/docker.socket"
- popd
+ popd >/dev/null
install -Dm644 "$startdir/docker.sysusers" "$pkgdir/usr/lib/sysusers.d/$pkgname.conf"
+
+ # this should cover all manpages possible to generate from the source
+ msg2 'manpages'
+ pushd "$srcdir/runc/man/man8" >/dev/null
+ for i in *; do
+ install -Dm644 "$i" "$pkgdir/usr/share/man/man8/$i"
+ done
+ popd >/dev/null
+ pushd "$srcdir/docker-ce/components/cli/man/man1" >/dev/null
+ for i in *; do
+ install -Dm644 "$i" "$pkgdir/usr/share/man/man1/$i"
+ done
+ popd >/dev/null
+ pushd "$srcdir/docker-ce/components/cli/man/man5" >/dev/null
+ for i in *; do
+ install -Dm644 "$i" "$pkgdir/usr/share/man/man5/$i"
+ done
+ popd >/dev/null
+ pushd "$srcdir/docker-ce/components/cli/man/man8" >/dev/null
+ for i in *; do
+ install -Dm644 "$i" "$pkgdir/usr/share/man/man8/$i"
+ done
+ popd >/dev/null
}
# vim:set ts=2 sw=2 et: