install-binaries.sh 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. #!/bin/sh
  2. set -e
  3. set -x
  4. . $(dirname "$0")/binaries-commits
  5. RM_GOPATH=0
  6. TMP_GOPATH=${TMP_GOPATH:-""}
  7. if [ -z "$TMP_GOPATH" ]; then
  8. export GOPATH="$(mktemp -d)"
  9. RM_GOPATH=1
  10. else
  11. export GOPATH="$TMP_GOPATH"
  12. fi
  13. # Do not build with ambient capabilities support
  14. RUNC_BUILDTAGS="${RUNC_BUILDTAGS:-"seccomp apparmor selinux"}"
  15. install_runc() {
  16. echo "Install runc version $RUNC_COMMIT"
  17. git clone https://github.com/docker/runc.git "$GOPATH/src/github.com/opencontainers/runc"
  18. cd "$GOPATH/src/github.com/opencontainers/runc"
  19. git checkout -q "$RUNC_COMMIT"
  20. make BUILDTAGS="$RUNC_BUILDTAGS" $1
  21. cp runc /usr/local/bin/docker-runc
  22. }
  23. install_containerd() {
  24. echo "Install containerd version $CONTAINERD_COMMIT"
  25. git clone https://github.com/containerd/containerd.git "$GOPATH/src/github.com/containerd/containerd"
  26. cd "$GOPATH/src/github.com/containerd/containerd"
  27. git checkout -q "$CONTAINERD_COMMIT"
  28. make $1
  29. cp bin/containerd /usr/local/bin/docker-containerd
  30. cp bin/containerd-shim /usr/local/bin/docker-containerd-shim
  31. cp bin/ctr /usr/local/bin/docker-containerd-ctr
  32. }
  33. install_proxy() {
  34. echo "Install docker-proxy version $LIBNETWORK_COMMIT"
  35. git clone https://github.com/docker/libnetwork.git "$GOPATH/src/github.com/docker/libnetwork"
  36. cd "$GOPATH/src/github.com/docker/libnetwork"
  37. git checkout -q "$LIBNETWORK_COMMIT"
  38. go build -ldflags="$PROXY_LDFLAGS" -o /usr/local/bin/docker-proxy github.com/docker/libnetwork/cmd/proxy
  39. }
  40. install_dockercli() {
  41. echo "Install docker/cli version $DOCKERCLI_COMMIT"
  42. git clone "$DOCKERCLI_REPO" "$GOPATH/src/github.com/docker/cli"
  43. cd "$GOPATH/src/github.com/docker/cli"
  44. git checkout -q "$DOCKERCLI_COMMIT"
  45. go build -o /usr/local/bin/docker github.com/docker/cli/cmd/docker
  46. }
  47. install_gometalinter() {
  48. echo "Installing gometalinter version $GOMETALINTER_COMMIT"
  49. go get -d github.com/alecthomas/gometalinter
  50. cd "$GOPATH/src/github.com/alecthomas/gometalinter"
  51. git checkout -q "$GOMETALINTER_COMMIT"
  52. go build -o /usr/local/bin/gometalinter github.com/alecthomas/gometalinter
  53. (
  54. export GOBIN=/usr/local/bin
  55. export GOPATH="$PWD/_linters/"
  56. go install github.com/golang/lint/golint
  57. go install golang.org/x/tools/cmd/goimports
  58. )
  59. }
  60. for prog in "$@"
  61. do
  62. case $prog in
  63. tomlv)
  64. echo "Install tomlv version $TOMLV_COMMIT"
  65. git clone https://github.com/BurntSushi/toml.git "$GOPATH/src/github.com/BurntSushi/toml"
  66. cd "$GOPATH/src/github.com/BurntSushi/toml" && git checkout -q "$TOMLV_COMMIT"
  67. go build -v -o /usr/local/bin/tomlv github.com/BurntSushi/toml/cmd/tomlv
  68. ;;
  69. runc)
  70. install_runc static
  71. ;;
  72. runc-dynamic)
  73. install_runc
  74. ;;
  75. containerd)
  76. install_containerd static
  77. ;;
  78. containerd-dynamic)
  79. install_containerd
  80. ;;
  81. gometalinter)
  82. install_gometalinter
  83. ;;
  84. tini)
  85. echo "Install tini version $TINI_COMMIT"
  86. git clone https://github.com/krallin/tini.git "$GOPATH/tini"
  87. cd "$GOPATH/tini"
  88. git checkout -q "$TINI_COMMIT"
  89. cmake .
  90. make tini-static
  91. cp tini-static /usr/local/bin/docker-init
  92. ;;
  93. proxy)
  94. (
  95. export CGO_ENABLED=0
  96. install_proxy
  97. )
  98. ;;
  99. proxy-dynamic)
  100. PROXY_LDFLAGS="-linkmode=external" install_proxy
  101. ;;
  102. vndr)
  103. echo "Install vndr version $VNDR_COMMIT"
  104. git clone https://github.com/LK4D4/vndr.git "$GOPATH/src/github.com/LK4D4/vndr"
  105. cd "$GOPATH/src/github.com/LK4D4/vndr"
  106. git checkout -q "$VNDR_COMMIT"
  107. go build -v -o /usr/local/bin/vndr .
  108. ;;
  109. dockercli)
  110. install_dockercli
  111. ;;
  112. *)
  113. echo echo "Usage: $0 [tomlv|runc|runc-dynamic|containerd|containerd-dynamic|tini|proxy|proxy-dynamic|vndr|dockercli|gometalinter]"
  114. exit 1
  115. esac
  116. done
  117. if [ $RM_GOPATH -eq 1 ]; then
  118. rm -rf "$GOPATH"
  119. fi