summaryrefslogtreecommitdiffstats
path: root/llvm/utils
diff options
context:
space:
mode:
authorIlya Biryukov <ibiryukov@google.com>2017-08-25 09:03:57 +0000
committerIlya Biryukov <ibiryukov@google.com>2017-08-25 09:03:57 +0000
commit937c74ac12c92d72f4d007d2cf2e6a1a2533fe04 (patch)
tree8aeeea50a4bd55b6ad5091c3b8431dec88b46115 /llvm/utils
parent714ac2e781867b6bc55ac398f75fdc8b354a1563 (diff)
downloadbcm5719-llvm-937c74ac12c92d72f4d007d2cf2e6a1a2533fe04.tar.gz
bcm5719-llvm-937c74ac12c92d72f4d007d2cf2e6a1a2533fe04.zip
Use temporary directory when building docker image.
Summary: This avoids races on copying of compiled clang from 'build' image to 'release' image. Reviewers: klimek, mehdi_amini Reviewed By: mehdi_amini Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D37098 llvm-svn: 311769
Diffstat (limited to 'llvm/utils')
-rwxr-xr-xllvm/utils/docker/build_docker_image.sh22
1 files changed, 14 insertions, 8 deletions
diff --git a/llvm/utils/docker/build_docker_image.sh b/llvm/utils/docker/build_docker_image.sh
index 6556eac04fc..2acdcf47281 100755
--- a/llvm/utils/docker/build_docker_image.sh
+++ b/llvm/utils/docker/build_docker_image.sh
@@ -128,30 +128,36 @@ if [ $SEEN_INSTALL_TARGET -eq 0 ]; then
exit 1
fi
-cd $(dirname $0)
-if [ ! -d $IMAGE_SOURCE ]; then
- echo "No sources for '$IMAGE_SOURCE' were found in $PWD"
+SOURCE_DIR=$(dirname $0)
+if [ ! -d "$SOURCE_DIR/$IMAGE_SOURCE" ]; then
+ echo "No sources for '$IMAGE_SOURCE' were found in $SOURCE_DIR"
exit 1
fi
-echo "Building from $IMAGE_SOURCE"
+BUILD_DIR=$(mktemp -d)
+trap "rm -rf $BUILD_DIR" EXIT
+echo "Using a temporary directory for the build: $BUILD_DIR"
+
+cp -r "$SOURCE_DIR/$IMAGE_SOURCE" "$BUILD_DIR/$IMAGE_SOURCE"
+cp -r "$SOURCE_DIR/scripts" "$BUILD_DIR/scripts"
if [ "$DOCKER_TAG" != "" ]; then
DOCKER_TAG=":$DOCKER_TAG"
fi
+echo "Building from $IMAGE_SOURCE"
echo "Building $DOCKER_REPOSITORY-build$DOCKER_TAG"
docker build -t "$DOCKER_REPOSITORY-build$DOCKER_TAG" \
--build-arg "buildscript_args=$BUILDSCRIPT_ARGS" \
- -f "$IMAGE_SOURCE/build/Dockerfile" .
+ -f "$BUILD_DIR/$IMAGE_SOURCE/build/Dockerfile" \
+ "$BUILD_DIR"
echo "Copying clang installation to release image sources"
-docker run -v "$PWD/$IMAGE_SOURCE:/workspace" "$DOCKER_REPOSITORY-build$DOCKER_TAG" \
+docker run -v "$BUILD_DIR/$IMAGE_SOURCE:/workspace" "$DOCKER_REPOSITORY-build$DOCKER_TAG" \
cp /tmp/clang.tar.gz /workspace/release
-trap "rm -f $PWD/$IMAGE_SOURCE/release/clang.tar.gz" EXIT
echo "Building release image"
docker build -t "${DOCKER_REPOSITORY}${DOCKER_TAG}" \
- "$IMAGE_SOURCE/release"
+ "$BUILD_DIR/$IMAGE_SOURCE/release"
echo "Done"
OpenPOWER on IntegriCloud