about summary refs log tree commit diff homepage
path: root/scripts/build/Dockerfile_klee
blob: 79ad38384fdc646edffb66748dd5044a457a87c6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# Build the final KLEE layer
ARG REPOSITORY
ARG LLVM_VERSION_SHORT
ARG LLVM_SUFFIX
ARG SOLVER_SUFFIX
ARG DEPS_SUFFIX
FROM ${REPOSITORY}/klee_deps:${LLVM_VERSION_SHORT}${LLVM_SUFFIX}${SOLVER_SUFFIX}${DEPS_SUFFIX}
LABEL maintainer="Martin Nowack <m.nowack@imperial.ac.uk>"

# Define all variables that can be changed as argument to the docker build
ARG BASE=/tmp
ARG COVERAGE=0
ARG DEPS_SUFFIX
ARG DISABLE_ASSERTIONS
ARG ENABLE_OPTIMIZED
ARG ENABLE_DEBUG
ARG KLEE_TRAVIS_BUILD
ARG KLEE_UCLIBC
ARG LLVM_VERSION
ARG LLVM_SUFFIX
ARG METASMT_BOOST_VERSION
ARG METASMT_DEFAULT
ARG METASMT_VERSION
ARG REQUIRES_RTTI
ARG SANITIZER_BUILD
ARG SANITIZER_SUFFIX
ARG SOLVER_SUFFIX
ARG SOLVERS
ARG STP_VERSION
ARG TRAVIS_OS_NAME
ARG USE_TCMALLOC
ARG Z3_VERSION

ENV DOCKER_BUILD=1

# Copy across source files needed for build
ADD / ${BASE}/klee_src

# TODO Remove when STP is fixed
RUN export LD_LIBRARY_PATH=${BASE}/metaSMT/deps/stp-git-basic/lib/ && export KLEE_SRC=${BASE}/klee_src && ${BASE}/klee_src/scripts/build/klee.sh && rm -rf ${BASE}/klee_src/.git

# Create ``klee`` user for container with password ``klee``.
# and give it password-less sudo access (temporarily so we can use the TravisCI scripts)
RUN useradd -m klee && \
    echo klee:klee | chpasswd && \
    cp /etc/sudoers /etc/sudoers.bak && \
    echo 'klee  ALL=(root) NOPASSWD: ALL' >> /etc/sudoers

# Set klee user to be owner
RUN chown --recursive klee: ${BASE}/klee_src

USER klee
WORKDIR /home/klee

# Add KLEE binary directory to PATH
RUN /bin/bash -c 'DIR="${BASE}/klee_src/scripts/build" source ${BASE}/klee_src/scripts/build/common-defaults.sh && ln -s ${BASE}/klee_build* ${BASE}/klee_build && echo "export PATH=\"$PATH:${LLVM_BIN}:${BASE}/klee_build/bin\"" >> /home/klee/.bashrc'
# TODO Remove when STP is fixed
RUN /bin/bash -c 'echo "export LD_LIBRARY_PATH=${BASE}/metaSMT/deps/stp-git-basic/lib/" >> /home/klee/.bashrc'