Add interpret results output into custom stream.
[sdk/tools/heaptrack.git] / Dockerfile
1 FROM ubuntu:17.10
2
3 RUN apt-get update && apt-get -y install cmake libsparsehash-dev \
4   build-essential libunwind8-dev libunwind8 libboost-dev \
5   libboost-iostreams-dev libboost-program-options-dev \
6   zlib1g zlib1g-dev libdwarf-dev qt5-default extra-cmake-modules \
7   libkf5coreaddons-dev libkf5i18n-dev libkf5itemmodels-dev \
8   libkf5threadweaver-dev libkf5configwidgets-dev libkf5kiocore5 \
9   libkf5kiowidgets5 kio-dev cpio rpm2cpio clang libkchart2 \
10   libkchart-dev binutils-arm-linux-gnueabi gcc-6-arm-linux-gnueabi gettext \
11   g++-6-arm-linux-gnueabi wget
12
13 #prepare folder structure
14 RUN mkdir -p /rootfs/rpms && \
15     mkdir -p /heaptrack-common/x64 && \
16     mkdir -p /heaptrack-common/armel && \
17     mkdir -p /etc/sudoers.d && \
18     mkdir -p /heaptrack/build-x64 && \
19     mkdir -p /heaptrack/build-armel
20
21 #Add new sudo user
22 ENV USERNAME docker-user
23 RUN useradd -m $USERNAME && \
24         echo "$USERNAME:$USERNAME" | chpasswd && \
25         usermod --shell /bin/bash $USERNAME && \
26         usermod -aG sudo $USERNAME && \
27         echo "$USERNAME ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/$USERNAME && \
28         chmod 0440 /etc/sudoers.d/$USERNAME && \
29         # Replace 1000 with your user/group id
30         usermod  --uid 1000 $USERNAME && \
31         groupmod --gid 1000 $USERNAME
32
33 #prepare tizen rootfs
34 ENV ROOTFS_DIR /rootfs
35 ENV REPO_BASE http://download.tizen.org/snapshots/tizen/base/latest/repos/standard/packages
36 ENV REPO_UNIFIED http://download.tizen.org/snapshots/tizen/unified/latest/repos/standard/packages
37 ENV TIZEN_PACKAGES_ARMEL "gcc glibc glibc-devel libunwind libunwind-devel zlib zlib-devel libdw libdw-devel boost boost-devel boost-iostreams boost-program-options"
38 ENV TIZEN_PACKAGES_PATTERN "-[0-9]+\(\.[0-9]+\)+-[0-9]+\(\.[0-9]+\)+\.armv7l\.rpm"
39
40 RUN cd /rootfs/rpms && \
41     echo "PKGS=\"$TIZEN_PACKAGES_ARMEL\" ; for pkg in \$PKGS; do \
42       echo Downloading \$pkg... ; \
43       wget -q -r -np -l 1 --accept-regex \$pkg$TIZEN_PACKAGES_PATTERN $REPO_BASE/armv7l/ ; \
44       wget -q -r -np -l 1 --accept-regex \$pkg$TIZEN_PACKAGES_PATTERN $REPO_UNIFIED/armv7l/ ; \
45     done && \
46     find . -name \"*.rpm\" -exec mv {} . \; && \
47     rm -rf download.tizen.org \
48 " > download.sh && /bin/bash download.sh
49
50 RUN cd /rootfs && echo "RPMS=\$(ls rpms/*.rpm) ; for rpm in \$RPMS; do rpm2cpio \$rpm | cpio -idmv 2> /dev/null ; done" > unpack.sh && /bin/bash unpack.sh
51
52 COPY ./ /heaptrack/
53
54 #build x64 heaptrack with GUI
55 RUN cd /heaptrack/build-x64 && cmake .. && make -j4 && cp -r bin lib \
56     /heaptrack-common/x64
57 #build armel heaptrack collection modules without GUI
58 RUN cd /heaptrack/build-armel && \
59     CC=arm-linux-gnueabi-gcc-6 CXX=arm-linux-gnueabi-g++-6 CPLUS_INCLUDE_PATH=/rootfs/usr/lib/gcc/armv7l-tizen-linux-gnueabi/6.2.1/include/c++:/rootfs/usr/lib/gcc/armv7l-tizen-linux-gnueabi/6.2.1/include/c++/armv7l-tizen-linux-gnueabi cmake .. -DHEAPTRACK_BUILD_GUI=OFF -DCMAKE_TOOLCHAIN_FILE=/heaptrack/profiler/profiler/cross/armel/toolchain.cmake && \
60     make -j4 && cp -r bin lib /heaptrack-common/armel
61 #build managed profiler module
62 ARG ARCH=""
63 ARG BUILD_TYPE=""
64 ARG CORECLR_SOURCE=""
65 RUN cd /heaptrack/scripts/docker && CORECLR_SOURCE=$CORECLR_SOURCE BUILD_TYPE=$BUILD_TYPE ARCH=$ARCH ./build_profiler.sh /heaptrack-common/armel
66
67 VOLUME /heaptrack-common