Add llvm 6.0 to CI docker image (#1086)
author박세희/동작제어Lab(SR)/Principal Engineer/삼성전자 <saehie.park@samsung.com>
Mon, 20 Aug 2018 23:39:57 +0000 (08:39 +0900)
committer박종현/동작제어Lab(SR)/Staff Engineer/삼성전자 <jh1302.park@samsung.com>
Mon, 20 Aug 2018 23:39:57 +0000 (08:39 +0900)
This will add llvm 6.0 dev binaries to CI docker image.
- builds llvm 6.0 from source
- use docker multi-stage to reduce image size

Signed-off-by: SaeHie Park <saehie.park@samsung.com>
Dockerfile

index fcb1be5..48c3af7 100644 (file)
@@ -1,3 +1,43 @@
+#-------------------------------------------------------------------------------
+# llvm_builder is to prepare llvm binary built from source
+FROM ubuntu:14.04 as llvm_builder
+
+ARG HTTP_PROXY
+ARG HTTPS_PROXY
+ARG UBUNTU_MIRROR
+
+RUN if [ -n "$HTTP_PROXY" ] ; then echo "Acquire::http::proxy \"${HTTP_PROXY}\";" >> /etc/apt/apt.conf ; fi
+RUN if [ -n "$HTTPS_PROXY" ] ; then echo "Acquire::https::proxy \"${HTTPS_PROXY}\";" >> /etc/apt/apt.conf ; fi
+RUN if [ -n "$UBUNTU_MIRROR" ] ; then sed "s/archive.ubuntu.com/${UBUNTU_MIRROR}/g" -i /etc/apt/sources.list ; fi
+RUN if [ -n "$HTTP_PROXY" ] || [ -n "$HTTPS_PROXY" ] ; then echo "use_proxy=yes" >> /root/.wgetrc ; fi
+RUN if [ -n "$HTTP_PROXY" ] ; then echo "http_proxy=${HTTP_PROXY}" >> /root/.wgetrc ; fi
+RUN if [ -n "$HTTPS_PROXY" ] ; then echo "https_proxy=${HTTPS_PROXY}" >> /root/.wgetrc ; fi
+
+RUN apt update
+
+# Install 'add-apt-repository'
+RUN apt-get install -y software-properties-common
+
+# Add CMake 3.5 PPA, llvm 6.0 requires at least 3.4.3
+RUN add-apt-repository -y ppa:ubuntu-toolchain-r/rust
+RUN apt update
+
+# Install base dependencies
+RUN apt install -y make cmake3 wget g++
+
+# Build llvm 6.0.1 from source
+WORKDIR /root/llvm
+RUN wget http://releases.llvm.org/6.0.1/llvm-6.0.1.src.tar.xz
+RUN tar xvf llvm-6.0.1.src.tar.xz
+WORKDIR /root/llvm/llvm_build
+RUN cmake ../llvm-6.0.1.src/ -DCMAKE_INSTALL_PREFIX=/opt/usr \
+-DCMAKE_BUILD_TYPE=Release \
+-DBUILD_SHARED_LIBS=ON \
+-DLLVM_TARGETS_TO_BUILD="X86;ARM"
+RUN make -j$(nproc)
+RUN cmake --build . --target install
+
+#-------------------------------------------------------------------------------
 FROM ubuntu:14.04
 
 ARG HTTP_PROXY
@@ -43,5 +83,8 @@ RUN apt install -y libboost-filesystem-dev # Caffe
 RUN apt install -y libboost-thread-dev # Caffe
 RUN apt install -y libatlas-base-dev # Caffe
 
+# Copy installed llvm binary from llvm_builder image
+COPY --from=llvm_builder /opt/usr /usr
+
 # Clean archives (to reduce image size)
 RUN apt-get clean -y