@@ -23,8 +23,9 @@ RUN echo "check_certificate = off" > /etc/wgetrc
2323
2424# We use C++ 17 for UnitTestBot, it is available in gcc-9; default gcc for ubuntu:18.04 is gcc-7
2525RUN add-apt-repository ppa:ubuntu-toolchain-r/test
26- RUN apt update && apt install -y --no-install-recommends gcc-9 g++-9
27- # Skip 32bits libs installation before LLVM compilation
26+ RUN apt update && apt install -y --no-install-recommends gcc-9 g++-9 gcc-multilib g++-multilib gcc-9-multilib g++-9-multilib
27+
28+ # Set gcc-9 as default gcc version
2829RUN sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 100
2930RUN sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 100
3031RUN sudo update-alternatives --install /usr/bin/gcov gcov /usr/bin/gcov-9 100
@@ -69,29 +70,34 @@ WORKDIR /home/utbot
6970USER root
7071ARG LLVM_VERSION_MAJOR
7172RUN mkdir $UTBOT_ALL/llvm_gold_plugin
72- COPY building_dependencies /llvm_gold_plugin/ plugin-api.h $UTBOT_ALL/llvm_gold_plugin
73+ RUN wget -P $UTBOT_ALL /llvm_gold_plugin https://raw.githubusercontent.com/bminor/binutils-gdb/fd67aa1129fd006ad49ed5ecb2b063705211553a/include/ plugin-api.h
7374RUN git clone --single-branch --branch "release/${LLVM_VERSION_MAJOR}.x" --depth 1 "https://github.com/llvm/llvm-project.git" $UTBOT_ALL/llvm-project
7475WORKDIR $UTBOT_ALL/llvm-project
7576RUN mkdir build && cd build \
7677 && $UTBOT_CMAKE_BINARY \
77- -DCMAKE_BUILD_TYPE=MinSizeRel \
78+ -DCMAKE_BUILD_TYPE=Release \
7879 -DCMAKE_INSTALL_PREFIX=$UTBOT_INSTALL_DIR \
7980 -DLLVM_INCLUDE_TESTS=OFF \
8081 -DLLVM_BINUTILS_INCDIR=$UTBOT_ALL/llvm_gold_plugin \
8182 -DLLVM_ENABLE_RTTI=ON \
8283 -DLLVM_ENABLE_EH=ON \
8384 -DLLVM_TARGETS_TO_BUILD="host" \
84- -DLLVM_ENABLE_PROJECTS="clang;compiler-rt;libc;libclc;libcxx;libcxxabi;lld;lldb;clang-tools-extra" -G "Ninja" ../llvm \
85+ -DLLVM_INSTALL_UTILS=ON \
86+ -DLLVM_ENABLE_PROJECTS="clang;libclc;lld;lldb;clang-tools-extra" \
87+ -DLLVM_ENABLE_RUNTIMES="compiler-rt;libc;libcxx;libcxxabi" \
88+ -G "Ninja" ../llvm \
8589 && $UTBOT_CMAKE_BINARY --build . --target install
8690
87-
8891# Install KLEE dependencies
8992ENV CURL_CA_BUNDLE=""
9093RUN sudo -E pip3 install tabulate==0.8.7 \
9194 typing==3.7.4.3 \
9295 lit==0.11.0.post1 \
9396 wllvm==1.3.1
9497
98+ ENV CFLAGS="-gdwarf-4"
99+ ENV CXXFLAGS="-gdwarf-4"
100+
95101WORKDIR $UTBOT_ALL/llvm-project
96102RUN mkdir libcxx_build && cd libcxx_build \
97103 && export CC=wllvm \
@@ -125,7 +131,7 @@ RUN cd $UTBOT_ALL/grpc && git submodule update --init
125131RUN cd $UTBOT_ALL/grpc \
126132 && mkdir -p cmake/build \
127133 && cd cmake/build \
128- && $UTBOT_CMAKE_BINARY -DgRPC_INSTALL=ON -DgRPC_BUILD_TESTS=OFF -DCMAKE_BUILD_TYPE=MinSizeRel -DCMAKE_INSTALL_PREFIX=$UTBOT_INSTALL_DIR ../.. \
134+ && $UTBOT_CMAKE_BINARY -DgRPC_INSTALL=ON -DgRPC_BUILD_TESTS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$UTBOT_INSTALL_DIR ../.. \
129135 && make -j`nproc` \
130136 && make install \
131137 && cd $UTBOT_ALL \
@@ -205,13 +211,16 @@ RUN wget https://github.com/agauniyal/rang/releases/download/v3.1.0/rang.hpp -P
205211COPY building_dependencies/runtime_env.sh /home/utbot/.bashrc
206212COPY building_dependencies/runtime_env.sh /root/.bashrc
207213
208- # Install uclibc
209- RUN git clone -b klee_uclibc_v1.2 https://github.com/klee/klee-uclibc.git $UTBOT_ALL/klee-uclibc
210- WORKDIR $UTBOT_ALL/klee-uclibc
211- RUN ./configure --make-llvm-lib && make -j`nproc`
214+ # We need to install version 32 and 64 for klee.
215+ # Install uclibc-32
216+ RUN git clone -b klee_uclibc_v1.2 https://github.com/klee/klee-uclibc.git $UTBOT_ALL/klee-uclibc-32
217+ WORKDIR $UTBOT_ALL/klee-uclibc-32
218+ RUN ./configure --make-llvm-lib && make KLEE_CFLAGS="-m32" -j`nproc`
212219
213- # Install 32bits libs AFTER LLVM compilation
214- RUN apt update && apt install -y --no-install-recommends gcc-multilib g++-multilib gcc-9-multilib g++-9-multilib
220+ # Install uclibc-64
221+ RUN git clone -b klee_uclibc_v1.2 https://github.com/klee/klee-uclibc.git $UTBOT_ALL/klee-uclibc-64
222+ WORKDIR $UTBOT_ALL/klee-uclibc-64
223+ RUN ./configure --make-llvm-lib && make -j`nproc`
215224
216225# Download library for access private members
217226RUN git clone https://github.com/martong/access_private.git $UTBOT_ALL/access_private
0 commit comments