Skip to content

Commit 1633720

Browse files
committed
go: install go versions in different directories
This prevents files from one Go version from possibly overlapping with files from a new Go version. This kind of overlapping can happen on some filesystems (namely AUFS) even with the `rm -rf` that was already present. See issue 24309 in moby/moby.
1 parent 65b3d01 commit 1633720

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

go/deploy

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -49,19 +49,24 @@ if [[ ${install_needed} == 1 ]]; then
4949
echo "Installing Go ${version_to_install} (${version_source})"
5050

5151
rm -rf ${GO_INSTALL_DIR}
52-
mkdir -p ${GO_INSTALL_DIR}
52+
version_dir=${GO_INSTALL_DIR}_${version_to_install}
53+
rm -rf ${version_dir}
54+
mkdir -p ${version_dir}
5355
download_url=${GO_DOWNLOAD_URL}/${version_to_install}.linux-amd64.tar.gz
54-
if ! (curl -m 120 -sS --retry 3 -L "$download_url" | tar xz -C $(dirname ${GO_INSTALL_DIR})); then
56+
if ! (curl -m 120 -sS --retry 3 -L "$download_url" | tar xz -C ${version_dir}); then
5557
echo "ERROR: Unable to download Go from ${download_url}."
5658
exit 1
5759
fi
5860

59-
rm -rf ${GO_INSTALL_DIR}/api/ \
60-
${GO_INSTALL_DIR}/blog/ \
61-
${GO_INSTALL_DIR}/doc/ \
62-
${GO_INSTALL_DIR}/test/ \
63-
${GO_INSTALL_DIR}/lib/ \
64-
${GO_INSTALL_DIR}/misc/
61+
rm -rf ${version_dir}/api/ \
62+
${version_dir}/blog/ \
63+
${version_dir}/doc/ \
64+
${version_dir}/test/ \
65+
${version_dir}/lib/ \
66+
${version_dir}/misc/
67+
68+
ln -s ${version_dir}/go ${GO_INSTALL_DIR}
69+
hash -r
6570
fi
6671

6772
echo "Using Go version: $(go version)"

0 commit comments

Comments
 (0)