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