github.com/duglin/docker@v1.13.1/hack/make/tgz (about) 1 #!/bin/bash 2 3 CROSS="$DEST/../cross" 4 5 set -e 6 7 arch=$(go env GOHOSTARCH) 8 if [ ! -d "$CROSS/linux/${arch}" ]; then 9 echo >&2 'error: binary and cross must be run before tgz' 10 false 11 fi 12 13 ( 14 for d in "$CROSS/"*/*; do 15 export GOARCH="$(basename "$d")" 16 export GOOS="$(basename "$(dirname "$d")")" 17 18 source "${MAKEDIR}/.binary-setup" 19 20 BINARY_NAME="${DOCKER_CLIENT_BINARY_NAME}-$VERSION" 21 DAEMON_BINARY_NAME="${DOCKER_DAEMON_BINARY_NAME}-$VERSION" 22 PROXY_BINARY_NAME="${DOCKER_PROXY_BINARY_NAME}-$VERSION" 23 BINARY_EXTENSION="$(export GOOS && binary_extension)" 24 if [ "$GOOS" = 'windows' ]; then 25 # if windows use a zip, not tgz 26 BUNDLE_EXTENSION=".zip" 27 IS_TAR="false" 28 elif [ "$GOOS" == "solaris" ]; then 29 # Solaris bypasses cross due to CGO issues. 30 continue 31 else 32 BUNDLE_EXTENSION=".tgz" 33 IS_TAR="true" 34 fi 35 BINARY_FULLNAME="$BINARY_NAME$BINARY_EXTENSION" 36 DAEMON_BINARY_FULLNAME="$DAEMON_BINARY_NAME$BINARY_EXTENSION" 37 PROXY_BINARY_FULLNAME="$PROXY_BINARY_NAME$BINARY_EXTENSION" 38 mkdir -p "$DEST/$GOOS/$GOARCH" 39 TGZ="$DEST/$GOOS/$GOARCH/$BINARY_NAME$BUNDLE_EXTENSION" 40 41 # The staging directory for the files in the tgz 42 BUILD_PATH="$DEST/build" 43 44 # The directory that is at the root of the tar file 45 TAR_BASE_DIRECTORY="docker" 46 47 # $DEST/build/docker 48 TAR_PATH="$BUILD_PATH/$TAR_BASE_DIRECTORY" 49 50 # Copy the correct docker binary 51 mkdir -p $TAR_PATH 52 cp -L "$d/$BINARY_FULLNAME" "$TAR_PATH/${DOCKER_CLIENT_BINARY_NAME}${BINARY_EXTENSION}" 53 if [ -f "$d/$DAEMON_BINARY_FULLNAME" ]; then 54 cp -L "$d/$DAEMON_BINARY_FULLNAME" "$TAR_PATH/${DOCKER_DAEMON_BINARY_NAME}${BINARY_EXTENSION}" 55 fi 56 if [ -f "$d/$PROXY_BINARY_FULLNAME" ]; then 57 cp -L "$d/$PROXY_BINARY_FULLNAME" "$TAR_PATH/${DOCKER_PROXY_BINARY_NAME}${BINARY_EXTENSION}" 58 fi 59 60 # copy over all the extra binaries 61 copy_binaries $TAR_PATH 62 63 # add completions 64 for s in bash fish zsh; do 65 mkdir -p $TAR_PATH/completion/$s 66 cp -L contrib/completion/$s/*docker* $TAR_PATH/completion/$s/ 67 done 68 69 if [ "$IS_TAR" == "true" ]; then 70 echo "Creating tgz from $BUILD_PATH and naming it $TGZ" 71 tar --numeric-owner --owner 0 -C "$BUILD_PATH" -czf "$TGZ" $TAR_BASE_DIRECTORY 72 else 73 # ZIP needs to full absolute dir path, not the absolute path 74 ZIP=`pwd`"/$TGZ" 75 # keep track of where we are, for later. 76 pushd . 77 # go into the BUILD_PATH since zip does not have a -C equivalent. 78 cd $BUILD_PATH 79 echo "Creating zip from $BUILD_PATH and naming it $ZIP" 80 zip -q -r $ZIP $TAR_BASE_DIRECTORY 81 # go back to where we started 82 popd 83 fi 84 85 hash_files "$TGZ" 86 87 # cleanup after ourselves 88 rm -rf "$BUILD_PATH" 89 90 echo "Created tgz: $TGZ" 91 done 92 )