tgz 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #!/bin/bash
  2. CROSS="$DEST/../cross"
  3. set -e
  4. if [ ! -d "$CROSS/linux/amd64" ]; then
  5. echo >&2 'error: binary and cross must be run before tgz'
  6. false
  7. fi
  8. (
  9. for d in "$CROSS/"*/*; do
  10. export GOARCH="$(basename "$d")"
  11. export GOOS="$(basename "$(dirname "$d")")"
  12. source "${MAKEDIR}/.binary-setup"
  13. BINARY_NAME="${DOCKER_CLIENT_BINARY_NAME}-$VERSION"
  14. DAEMON_BINARY_NAME="${DOCKER_DAEMON_BINARY_NAME}-$VERSION"
  15. PROXY_BINARY_NAME="${DOCKER_PROXY_BINARY_NAME}-$VERSION"
  16. BINARY_EXTENSION="$(export GOOS && binary_extension)"
  17. if [ "$GOOS" = 'windows' ]; then
  18. # if windows use a zip, not tgz
  19. BUNDLE_EXTENSION=".zip"
  20. IS_TAR="false"
  21. else
  22. BUNDLE_EXTENSION=".tgz"
  23. IS_TAR="true"
  24. fi
  25. BINARY_FULLNAME="$BINARY_NAME$BINARY_EXTENSION"
  26. DAEMON_BINARY_FULLNAME="$DAEMON_BINARY_NAME$BINARY_EXTENSION"
  27. PROXY_BINARY_FULLNAME="$PROXY_BINARY_NAME$BINARY_EXTENSION"
  28. mkdir -p "$DEST/$GOOS/$GOARCH"
  29. TGZ="$DEST/$GOOS/$GOARCH/$BINARY_NAME$BUNDLE_EXTENSION"
  30. # The staging directory for the files in the tgz
  31. BUILD_PATH="$DEST/build"
  32. # The directory that is at the root of the tar file
  33. TAR_BASE_DIRECTORY="docker"
  34. # $DEST/build/docker
  35. TAR_PATH="$BUILD_PATH/$TAR_BASE_DIRECTORY"
  36. # Copy the correct docker binary
  37. mkdir -p $TAR_PATH
  38. cp -L "$d/$BINARY_FULLNAME" "$TAR_PATH/${DOCKER_CLIENT_BINARY_NAME}${BINARY_EXTENSION}"
  39. if [ -f "$d/$DAEMON_BINARY_FULLNAME" ]; then
  40. cp -L "$d/$DAEMON_BINARY_FULLNAME" "$TAR_PATH/${DOCKER_DAEMON_BINARY_NAME}${BINARY_EXTENSION}"
  41. fi
  42. if [ -f "$d/$PROXY_BINARY_FULLNAME" ]; then
  43. cp -L "$d/$PROXY_BINARY_FULLNAME" "$TAR_PATH/${DOCKER_PROXY_BINARY_NAME}${BINARY_EXTENSION}"
  44. fi
  45. # copy over all the containerd binaries
  46. copy_containerd $TAR_PATH
  47. if [ "$IS_TAR" == "true" ]; then
  48. echo "Creating tgz from $BUILD_PATH and naming it $TGZ"
  49. tar --numeric-owner --owner 0 -C "$BUILD_PATH" -czf "$TGZ" $TAR_BASE_DIRECTORY
  50. else
  51. # ZIP needs to full absolute dir path, not the absolute path
  52. ZIP=`pwd`"/$TGZ"
  53. # keep track of where we are, for later.
  54. pushd .
  55. # go into the BUILD_PATH since zip does not have a -C equivalent.
  56. cd $BUILD_PATH
  57. echo "Creating zip from $BUILD_PATH and naming it $ZIP"
  58. zip -q -r $ZIP $TAR_BASE_DIRECTORY
  59. # go back to where we started
  60. popd
  61. fi
  62. hash_files "$TGZ"
  63. # cleanup after ourselves
  64. rm -rf "$BUILD_PATH"
  65. echo "Created tgz: $TGZ"
  66. done
  67. )