|
| 1 | +ARG DOCKER_IMAGE_BASE |
| 2 | +FROM ${DOCKER_IMAGE_BASE} |
| 3 | + |
| 4 | + |
| 5 | +# Specify defaults. This can be changed when invoking |
| 6 | +# `docker build`. |
| 7 | +ARG ASAN_BUILD=0 |
| 8 | +ARG BUILD_DOCS=0 |
| 9 | +ARG CC=gcc |
| 10 | +ARG CXX=g++ |
| 11 | +ARG DOTNET_BINDINGS=1 |
| 12 | +ARG JAVA_BINDINGS=1 |
| 13 | +ARG NO_SUPPRESS_OUTPUT=0 |
| 14 | +ARG PYTHON_BINDINGS=1 |
| 15 | +ARG PYTHON_EXECUTABLE=/usr/bin/python2.7 |
| 16 | +ARG RUN_SYSTEM_TESTS=1 |
| 17 | +ARG RUN_UNIT_TESTS=1 |
| 18 | +ARG TARGET_ARCH=x86_64 |
| 19 | +ARG TEST_INSTALL=1 |
| 20 | +ARG UBSAN_BUILD=0 |
| 21 | +ARG USE_LIBGMP=0 |
| 22 | +ARG USE_LTO=0 |
| 23 | +ARG USE_OPENMP=1 |
| 24 | +ARG Z3_SRC_DIR=/home/user/z3_src |
| 25 | +ARG Z3_BUILD_TYPE=RelWithDebInfo |
| 26 | +ARG Z3_CMAKE_GENERATOR=Ninja |
| 27 | +ARG Z3_INSTALL_PREFIX=/usr |
| 28 | +ARG Z3_STATIC_BUILD=0 |
| 29 | +# Blank default indicates use latest. |
| 30 | +ARG Z3_SYSTEM_TEST_GIT_REVISION |
| 31 | +ARG Z3_VERBOSE_BUILD_OUTPUT=0 |
| 32 | + |
| 33 | +ENV \ |
| 34 | + ASAN_BUILD=${ASAN_BUILD} \ |
| 35 | + BUILD_DOCS=${BUILD_DOCS} \ |
| 36 | + CC=${CC} \ |
| 37 | + CXX=${CXX} \ |
| 38 | + DOTNET_BINDINGS=${DOTNET_BINDINGS} \ |
| 39 | + JAVA_BINDINGS=${JAVA_BINDINGS} \ |
| 40 | + NO_SUPPRESS_OUTPUT=${NO_SUPPRESS_OUTPUT} \ |
| 41 | + PYTHON_BINDINGS=${PYTHON_BINDINGS} \ |
| 42 | + PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE} \ |
| 43 | + RUN_SYSTEM_TESTS=${RUN_SYSTEM_TESTS} \ |
| 44 | + RUN_UNIT_TESTS=${RUN_UNIT_TESTS} \ |
| 45 | + TARGET_ARCH=${TARGET_ARCH} \ |
| 46 | + TEST_INSTALL=${TEST_INSTALL} \ |
| 47 | + UBSAN_BUILD=${UBSAN_BUILD} \ |
| 48 | + USE_LIBGMP=${USE_LIBGMP} \ |
| 49 | + USE_LTO=${USE_LTO} \ |
| 50 | + USE_OPENMP=${USE_OPENMP} \ |
| 51 | + Z3_SRC_DIR=${Z3_SRC_DIR} \ |
| 52 | + Z3_BUILD_DIR=/home/user/z3_build \ |
| 53 | + Z3_CMAKE_GENERATOR=${Z3_CMAKE_GENERATOR} \ |
| 54 | + Z3_VERBOSE_BUILD_OUTPUT=${Z3_VERBOSE_BUILD_OUTPUT} \ |
| 55 | + Z3_STATIC_BUILD=${Z3_STATIC_BUILD} \ |
| 56 | + Z3_SYSTEM_TEST_DIR=/home/user/z3_system_test \ |
| 57 | + Z3_SYSTEM_TEST_GIT_REVISION=${Z3_SYSTEM_TEST_GIT_REVISION} \ |
| 58 | + Z3_INSTALL_PREFIX=${Z3_INSTALL_PREFIX} |
| 59 | + |
| 60 | +# We add context across incrementally to maximal cache reuse |
| 61 | + |
| 62 | +# Build Z3 |
| 63 | +RUN mkdir -p "${Z3_SRC_DIR}" && \ |
| 64 | + mkdir -p "${Z3_SRC_DIR}/contrib/ci/scripts" |
| 65 | +# Deliberately leave out `contrib` |
| 66 | +ADD /cmake ${Z3_SRC_DIR}/cmake/ |
| 67 | +ADD /doc ${Z3_SRC_DIR}/doc/ |
| 68 | +ADD /examples ${Z3_SRC_DIR}/examples/ |
| 69 | +ADD /scripts ${Z3_SRC_DIR}/scripts/ |
| 70 | +ADD /src ${Z3_SRC_DIR}/src/ |
| 71 | +ADD *.txt *.md RELEASE_NOTES ${Z3_SRC_DIR}/ |
| 72 | + |
| 73 | +ADD \ |
| 74 | + /contrib/ci/scripts/build_z3_cmake.sh \ |
| 75 | + /contrib/ci/scripts/set_compiler_flags.sh \ |
| 76 | + /contrib/ci/scripts/set_generator_args.sh \ |
| 77 | + ${Z3_SRC_DIR}/contrib/ci/scripts/ |
| 78 | +RUN ${Z3_SRC_DIR}/contrib/ci/scripts/build_z3_cmake.sh |
| 79 | + |
| 80 | +# Test building docs |
| 81 | +ADD \ |
| 82 | + /contrib/ci/scripts/test_z3_docs.sh \ |
| 83 | + /contrib/ci/scripts/run_quiet.sh \ |
| 84 | + ${Z3_SRC_DIR}/contrib/ci/scripts/ |
| 85 | +RUN ${Z3_SRC_DIR}/contrib/ci/scripts/test_z3_docs.sh |
| 86 | + |
| 87 | +# Test examples |
| 88 | +ADD \ |
| 89 | + /contrib/ci/scripts/test_z3_examples_cmake.sh \ |
| 90 | + ${Z3_SRC_DIR}/contrib/ci/scripts/ |
| 91 | +RUN ${Z3_SRC_DIR}/contrib/ci/scripts/test_z3_examples_cmake.sh |
| 92 | + |
| 93 | +# Run unit tests |
| 94 | +ADD \ |
| 95 | + /contrib/ci/scripts/test_z3_unit_tests_cmake.sh \ |
| 96 | + ${Z3_SRC_DIR}/contrib/ci/scripts/ |
| 97 | +RUN ${Z3_SRC_DIR}/contrib/ci/scripts/test_z3_unit_tests_cmake.sh |
| 98 | + |
| 99 | +# Run system tests |
| 100 | +ADD \ |
| 101 | + /contrib/ci/scripts/test_z3_system_tests.sh \ |
| 102 | + ${Z3_SRC_DIR}/contrib/ci/scripts/ |
| 103 | +RUN ${Z3_SRC_DIR}/contrib/ci/scripts/test_z3_system_tests.sh |
| 104 | + |
| 105 | +# Test install |
| 106 | +ADD \ |
| 107 | + /contrib/ci/scripts/test_z3_install_cmake.sh \ |
| 108 | + ${Z3_SRC_DIR}/contrib/ci/scripts/ |
| 109 | +RUN ${Z3_SRC_DIR}/contrib/ci/scripts/test_z3_install_cmake.sh |
0 commit comments