diff options
| author | Ilya Biryukov <ibiryukov@google.com> | 2017-08-25 09:03:57 +0000 |
|---|---|---|
| committer | Ilya Biryukov <ibiryukov@google.com> | 2017-08-25 09:03:57 +0000 |
| commit | 937c74ac12c92d72f4d007d2cf2e6a1a2533fe04 (patch) | |
| tree | 8aeeea50a4bd55b6ad5091c3b8431dec88b46115 /llvm | |
| parent | 714ac2e781867b6bc55ac398f75fdc8b354a1563 (diff) | |
| download | bcm5719-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')
| -rwxr-xr-x | llvm/utils/docker/build_docker_image.sh | 22 |
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" |

