summaryrefslogtreecommitdiff
path: root/Dockerfile
blob: c823f4a1fd67412bbf2b8e8be1c7dd4a50c85cf3 (plain)
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
59
60
61
62
63
64
65
66
67
FROM ubuntu:17.10

RUN apt-get update && apt-get -y install cmake libsparsehash-dev \
  build-essential libunwind8-dev libunwind8 libboost-dev \
  libboost-iostreams-dev libboost-program-options-dev \
  zlib1g zlib1g-dev libdwarf-dev qt5-default extra-cmake-modules \
  libkf5coreaddons-dev libkf5i18n-dev libkf5itemmodels-dev \
  libkf5threadweaver-dev libkf5configwidgets-dev libkf5kiocore5 \
  libkf5kiowidgets5 kio-dev cpio rpm2cpio clang libkchart2 \
  libkchart-dev binutils-arm-linux-gnueabi gcc-6-arm-linux-gnueabi gettext \
  g++-6-arm-linux-gnueabi wget

#prepare folder structure
RUN mkdir -p /rootfs/rpms && \
    mkdir -p /heaptrack-common/x64 && \
    mkdir -p /heaptrack-common/armel && \
    mkdir -p /etc/sudoers.d && \
    mkdir -p /heaptrack/build-x64 && \
    mkdir -p /heaptrack/build-armel

#Add new sudo user
ENV USERNAME docker-user
RUN useradd -m $USERNAME && \
        echo "$USERNAME:$USERNAME" | chpasswd && \
        usermod --shell /bin/bash $USERNAME && \
        usermod -aG sudo $USERNAME && \
        echo "$USERNAME ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/$USERNAME && \
        chmod 0440 /etc/sudoers.d/$USERNAME && \
        # Replace 1000 with your user/group id
        usermod  --uid 1000 $USERNAME && \
        groupmod --gid 1000 $USERNAME

#prepare tizen rootfs
ENV ROOTFS_DIR /rootfs
ENV REPO_BASE http://download.tizen.org/snapshots/tizen/base/latest/repos/standard/packages
ENV REPO_UNIFIED http://download.tizen.org/snapshots/tizen/unified/latest/repos/standard/packages
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"
ENV TIZEN_PACKAGES_PATTERN "-[0-9]+\(\.[0-9]+\)+-[0-9]+\(\.[0-9]+\)+\.armv7l\.rpm"

RUN cd /rootfs/rpms && \
    echo "PKGS=\"$TIZEN_PACKAGES_ARMEL\" ; for pkg in \$PKGS; do \
      echo Downloading \$pkg... ; \
      wget -q -r -np -l 1 --accept-regex \$pkg$TIZEN_PACKAGES_PATTERN $REPO_BASE/armv7l/ ; \
      wget -q -r -np -l 1 --accept-regex \$pkg$TIZEN_PACKAGES_PATTERN $REPO_UNIFIED/armv7l/ ; \
    done && \
    find . -name \"*.rpm\" -exec mv {} . \; && \
    rm -rf download.tizen.org \
" > download.sh && /bin/bash download.sh

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

COPY ./ /heaptrack/

#build x64 heaptrack with GUI
RUN cd /heaptrack/build-x64 && cmake .. && make -j4 && cp -r bin lib \
    /heaptrack-common/x64
#build armel heaptrack collection modules without GUI
RUN cd /heaptrack/build-armel && \
    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 && \
    make -j4 && cp -r bin lib /heaptrack-common/armel
#build managed profiler module
ARG ARCH=""
ARG BUILD_TYPE=""
ARG CORECLR_SOURCE=""
RUN cd /heaptrack/scripts/docker && CORECLR_SOURCE=$CORECLR_SOURCE BUILD_TYPE=$BUILD_TYPE ARCH=$ARCH ./build_profiler.sh /heaptrack-common/armel

VOLUME /heaptrack-common