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
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
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
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"
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/ ; \
46 find . -name \"*.rpm\" -exec mv {} . \; && \
47 rm -rf download.tizen.org \
48 " > download.sh && /bin/bash download.sh
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
54 #build x64 heaptrack with GUI
55 RUN cd /heaptrack/build-x64 && cmake .. && make -j4 && cp -r bin lib \
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
65 RUN cd /heaptrack/scripts/docker && CORECLR_SOURCE=$CORECLR_SOURCE BUILD_TYPE=$BUILD_TYPE ARCH=$ARCH ./build_profiler.sh /heaptrack-common/armel
67 VOLUME /heaptrack-common