diff options
author | Ilya Biryukov <ibiryukov@google.com> | 2017-07-06 12:46:51 +0000 |
---|---|---|
committer | Ilya Biryukov <ibiryukov@google.com> | 2017-07-06 12:46:51 +0000 |
commit | 7f02a75a7446889eded064b0e012c50306dbde48 (patch) | |
tree | 410a0d57a95aadf9a11c561e4a7f2521d7ed4721 /llvm/utils/docker | |
parent | 77ad6d9bb247932ac2f04dee7df70f216399a715 (diff) | |
download | bcm5719-llvm-7f02a75a7446889eded064b0e012c50306dbde48.tar.gz bcm5719-llvm-7f02a75a7446889eded064b0e012c50306dbde48.zip |
Made a script to build docker images easier to use.
Summary:
- Removed double indirection via command-line args (i.e. two `--`
options of `build_docker_image.sh`).
- Added a comment on how to build 2-stage clang install into the
`build_docker_image.sh`, it used to be only in the `docs/Docker.rst`.
Reviewers: klimek, mehdi_amini
Reviewed By: klimek
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D35050
llvm-svn: 307256
Diffstat (limited to 'llvm/utils/docker')
-rwxr-xr-x | llvm/utils/docker/build_docker_image.sh | 54 |
1 files changed, 45 insertions, 9 deletions
diff --git a/llvm/utils/docker/build_docker_image.sh b/llvm/utils/docker/build_docker_image.sh index 92bcdc4079c..33f690ad5c4 100755 --- a/llvm/utils/docker/build_docker_image.sh +++ b/llvm/utils/docker/build_docker_image.sh @@ -16,20 +16,37 @@ BUILDSCRIPT_ARGS="" function show_usage() { usage=$(cat << EOF -Usage: build_docker_image.sh [options] [-- [buildscript_args]...] +Usage: build_docker_image.sh [options] [-- [cmake_args]...] Available options: + General: + -h|--help show this help message + Docker-specific: -s|--source image source dir (i.e. debian8, nvidia-cuda, etc) -d|--docker-repository docker repository for the image -t|--docker-tag docker tag for the image -Required options: --source and --docker-repository. - -All options after '--' are passed to buildscript (see -scripts/build_install_llvm.sh). + LLVM-specific: + -b|--branch svn branch to checkout, i.e. 'trunk', + 'branches/release_40' + (default: 'trunk') + -r|--revision svn revision to checkout + -p|--llvm-project name of an svn project to checkout. Will also add the + project to a list LLVM_ENABLE_PROJECTS, passed to CMake. + For clang, please use 'clang', not 'cfe'. + Project 'llvm' is always included and ignored, if + specified. + Can be specified multiple times. + -i|--install-target name of a cmake install target to build and include in + the resulting archive. Can be specified multiple times. + +Required options: --source and --docker-repository, at least one + --install-target. + +All options after '--' are passed to CMake invocation. For example, running: $ build_docker_image.sh -s debian8 -d mydocker/debian8-clang -t latest \ - -- -p clang -i install-clang -i install-clang-headers + -p clang -i install-clang -i install-clang-headers will produce two docker images: mydocker/debian8-clang-build:latest - an intermediate image used to compile clang. @@ -38,13 +55,20 @@ Please note that this example produces a not very useful installation, since it doesn't override CMake defaults, which produces a Debug and non-boostrapped version of clang. -For an example of a somewhat more useful build, search for 2-stage build -instructions in llvm/docs/Docker.rst. +To get a 2-stage clang build, you could use this command: +$ ./build_docker_image.sh -s debian8 -d mydocker/clang-debian8 -t "latest" \ + -p clang -i stage2-install-clang -i stage2-install-clang-headers \ + -- \ + -DLLVM_TARGETS_TO_BUILD=Native -DCMAKE_BUILD_TYPE=Release \ + -DBOOTSTRAP_CMAKE_BUILD_TYPE=Release \ + -DCLANG_ENABLE_BOOTSTRAP=ON \ + -DCLANG_BOOTSTRAP_TARGETS="install-clang;install-clang-headers" EOF ) echo "$usage" } +SEEN_INSTALL_TARGET=0 while [[ $# -gt 0 ]]; do case "$1" in -h|--help) @@ -66,9 +90,16 @@ while [[ $# -gt 0 ]]; do DOCKER_TAG="$1" shift ;; + -i|--install-target|-r|--revision|-b|--branch|-p|--llvm-project) + if [ "$1" == "-i" ] || [ "$1" == "--install-target" ]; then + SEEN_INSTALL_TARGET=1 + fi + BUILDSCRIPT_ARGS="$BUILDSCRIPT_ARGS $1 $2" + shift 2 + ;; --) shift - BUILDSCRIPT_ARGS="$*" + BUILDSCRIPT_ARGS="$BUILDSCRIPT_ARGS -- $*" shift $# ;; *) @@ -94,6 +125,11 @@ if [ "$DOCKER_REPOSITORY" == "" ]; then exit 1 fi +if [ $SEEN_INSTALL_TARGET -eq 0 ]; then + echo "Please provide at least one --install-target" + exit 1 +fi + cd $(dirname $0) if [ ! -d $IMAGE_SOURCE ]; then echo "No sources for '$IMAGE_SOURCE' were found in $PWD" |