github.com/sams1990/dockerrepo@v17.12.1-ce-rc2+incompatible/hack/dockerfile/install-binaries.sh (about) 1 #!/usr/bin/env bash 2 set -e 3 set -x 4 5 . $(dirname "$0")/binaries-commits 6 7 RM_GOPATH=0 8 9 TMP_GOPATH=${TMP_GOPATH:-""} 10 11 if [ -z "$TMP_GOPATH" ]; then 12 export GOPATH="$(mktemp -d)" 13 RM_GOPATH=1 14 else 15 export GOPATH="$TMP_GOPATH" 16 fi 17 18 # Do not build with ambient capabilities support 19 RUNC_BUILDTAGS="${RUNC_BUILDTAGS:-"seccomp apparmor selinux"}" 20 21 install_runc() { 22 echo "Install runc version $RUNC_COMMIT" 23 git clone https://github.com/opencontainers/runc.git "$GOPATH/src/github.com/opencontainers/runc" 24 cd "$GOPATH/src/github.com/opencontainers/runc" 25 git checkout -q "$RUNC_COMMIT" 26 make BUILDTAGS="$RUNC_BUILDTAGS" $1 27 cp runc /usr/local/bin/docker-runc 28 } 29 30 install_containerd() { 31 echo "Install containerd version $CONTAINERD_COMMIT" 32 git clone https://github.com/containerd/containerd.git "$GOPATH/src/github.com/containerd/containerd" 33 cd "$GOPATH/src/github.com/containerd/containerd" 34 git checkout -q "$CONTAINERD_COMMIT" 35 ( 36 export GOPATH 37 make 38 ) 39 cp bin/containerd /usr/local/bin/docker-containerd 40 cp bin/containerd-shim /usr/local/bin/docker-containerd-shim 41 cp bin/ctr /usr/local/bin/docker-containerd-ctr 42 } 43 44 install_containerd_static() { 45 echo "Install containerd version $CONTAINERD_COMMIT" 46 git clone https://github.com/containerd/containerd.git "$GOPATH/src/github.com/containerd/containerd" 47 cd "$GOPATH/src/github.com/containerd/containerd" 48 git checkout -q "$CONTAINERD_COMMIT" 49 ( 50 export GOPATH 51 make BUILDTAGS='static_build' EXTRA_FLAGS="-buildmode pie" EXTRA_LDFLAGS='-extldflags "-fno-PIC -static"' 52 ) 53 cp bin/containerd /usr/local/bin/docker-containerd 54 cp bin/containerd-shim /usr/local/bin/docker-containerd-shim 55 cp bin/ctr /usr/local/bin/docker-containerd-ctr 56 } 57 58 install_proxy() { 59 echo "Install docker-proxy version $LIBNETWORK_COMMIT" 60 git clone https://github.com/docker/libnetwork.git "$GOPATH/src/github.com/docker/libnetwork" 61 cd "$GOPATH/src/github.com/docker/libnetwork" 62 git checkout -q "$LIBNETWORK_COMMIT" 63 go build -ldflags="$PROXY_LDFLAGS" -o /usr/local/bin/docker-proxy github.com/docker/libnetwork/cmd/proxy 64 } 65 66 install_dockercli() { 67 DOCKERCLI_CHANNEL=${DOCKERCLI_CHANNEL:-edge} 68 DOCKERCLI_VERSION=${DOCKERCLI_VERSION:-17.06.0-ce} 69 echo "Install docker/cli version $DOCKERCLI_VERSION from $DOCKERCLI_CHANNEL" 70 71 arch=$(uname -m) 72 # No official release of these platforms 73 if [[ "$arch" != "x86_64" ]] && [[ "$arch" != "s390x" ]]; then 74 build_dockercli 75 return 76 fi 77 78 url=https://download.docker.com/linux/static 79 curl -Ls $url/$DOCKERCLI_CHANNEL/$arch/docker-$DOCKERCLI_VERSION.tgz | \ 80 tar -xz docker/docker 81 mv docker/docker /usr/local/bin/ 82 rmdir docker 83 } 84 85 build_dockercli() { 86 DOCKERCLI_VERSION=${DOCKERCLI_VERSION:-17.06.0-ce} 87 git clone https://github.com/docker/docker-ce "$GOPATH/tmp/docker-ce" 88 cd "$GOPATH/tmp/docker-ce" 89 git checkout -q "v$DOCKERCLI_VERSION" 90 mkdir -p "$GOPATH/src/github.com/docker" 91 mv components/cli "$GOPATH/src/github.com/docker/cli" 92 go build -o /usr/local/bin/docker github.com/docker/cli/cmd/docker 93 } 94 95 install_gometalinter() { 96 echo "Installing gometalinter version $GOMETALINTER_COMMIT" 97 go get -d github.com/alecthomas/gometalinter 98 cd "$GOPATH/src/github.com/alecthomas/gometalinter" 99 git checkout -q "$GOMETALINTER_COMMIT" 100 go build -o /usr/local/bin/gometalinter github.com/alecthomas/gometalinter 101 GOBIN=/usr/local/bin gometalinter --install 102 } 103 104 for prog in "$@" 105 do 106 case $prog in 107 tomlv) 108 echo "Install tomlv version $TOMLV_COMMIT" 109 git clone https://github.com/BurntSushi/toml.git "$GOPATH/src/github.com/BurntSushi/toml" 110 cd "$GOPATH/src/github.com/BurntSushi/toml" && git checkout -q "$TOMLV_COMMIT" 111 go build -v -o /usr/local/bin/tomlv github.com/BurntSushi/toml/cmd/tomlv 112 ;; 113 114 runc) 115 install_runc static 116 ;; 117 118 runc-dynamic) 119 install_runc 120 ;; 121 122 containerd) 123 install_containerd_static 124 ;; 125 126 containerd-dynamic) 127 install_containerd 128 ;; 129 130 gometalinter) 131 install_gometalinter 132 ;; 133 134 tini) 135 echo "Install tini version $TINI_COMMIT" 136 git clone https://github.com/krallin/tini.git "$GOPATH/tini" 137 cd "$GOPATH/tini" 138 git checkout -q "$TINI_COMMIT" 139 cmake . 140 make tini-static 141 cp tini-static /usr/local/bin/docker-init 142 ;; 143 144 proxy) 145 ( 146 export CGO_ENABLED=0 147 install_proxy 148 ) 149 ;; 150 151 proxy-dynamic) 152 PROXY_LDFLAGS="-linkmode=external" install_proxy 153 ;; 154 155 vndr) 156 echo "Install vndr version $VNDR_COMMIT" 157 git clone https://github.com/LK4D4/vndr.git "$GOPATH/src/github.com/LK4D4/vndr" 158 cd "$GOPATH/src/github.com/LK4D4/vndr" 159 git checkout -q "$VNDR_COMMIT" 160 go build -v -o /usr/local/bin/vndr . 161 ;; 162 163 dockercli) 164 install_dockercli 165 ;; 166 167 *) 168 echo echo "Usage: $0 [tomlv|runc|runc-dynamic|containerd|containerd-dynamic|tini|proxy|proxy-dynamic|vndr|dockercli|gometalinter]" 169 exit 1 170 171 esac 172 done 173 174 if [ $RM_GOPATH -eq 1 ]; then 175 rm -rf "$GOPATH" 176 fi