File: Dockerfile

package info (click to toggle)
visp 3.7.0-10
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 166,384 kB
  • sloc: cpp: 392,705; ansic: 224,448; xml: 23,444; python: 13,701; java: 4,792; sh: 207; objc: 145; makefile: 118
file content (175 lines) | stat: -rw-r--r-- 6,144 bytes parent folder | download
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
FROM ubuntu:22.04

ARG DEBIAN_FRONTEND=noninteractive
ARG USER_UID=1001
ENV TZ=Europe/Paris

## Variable containing the URL of the GIT repository that needs to be tested.
## By default GIT_URL is set to https://githb.com/lagadic/visp and GIT_BRANCH_NAME is set to master branch
## To build this container use :
##
##   docker build . -t ubuntu-dep-src:v1 --build-arg GIT_URL="${YOUR_URL}" [--build-arg GIT_BRANCH_NAME="{BRANCH_NAME}"]
##
ARG GIT_URL=https://github.com/lagadic/visp
ARG GIT_BRANCH_NAME=master
RUN ["/bin/bash", "-c", ": ${GIT_URL:?Build argument GIT_URL needs to be set and not null.}"]
ENV GIT_URL="$GIT_URL"
ENV GIT_BRANCH_CMD="${GIT_BRANCH_NAME}"
ENV GIT_BRANCH_CMD=${GIT_BRANCH_CMD:+"--branch $GIT_BRANCH_NAME --depth 1"}
ENV FUNCTION_GET_LATEST='git -c "versionsort.suffix=-" ls-remote --exit-code --refs --sort="version:refname" --tags ${GIT_ADDRESS} "*.*.*" | cut --delimiter="/" --fields=3 | grep -v -e pr | tail --lines=1'

# Update aptitude with default packages
RUN apt-get update \
    && apt-get install -y \
      build-essential \
      cmake \
      cmake-curses-gui \
      curl \
      gedit \
      git \
      locales \
      lsb-release \
      iputils-ping \
      nano \
      sudo \
    && apt-get clean

# Install common dependencies
RUN apt update \
    && apt install -y \
      gfortran \
      freeglut3-dev \
      mesa-common-dev \
      mesa-utils \
      nlohmann-json3-dev \
      libboost-all-dev \
      libdc1394-dev \
      libeigen3-dev \
      libflann-dev \
      libgl1-mesa-dev \
      libglfw3-dev \
      libglu1-mesa-dev \
      libgtk-3-dev \
      liblapack-dev \
      libssl-dev \
      libusb-1.0-0-dev \
      libv4l-dev \
      libx11-dev \
      pkg-config \
    && apt-get clean

# Set Locale
RUN locale-gen en_US en_US.UTF-8 && \
    update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \
    export LANG=en_US.UTF-8

ENV USERNAME=vispci

RUN useradd -U --uid $USER_UID -ms /bin/bash ${USERNAME} \
    && echo "${USERNAME}:${USERNAME}" | chpasswd \
    && adduser ${USERNAME} sudo \
    && echo "$USERNAME ALL=NOPASSWD: ALL" >> /etc/sudoers.d/${USERNAME} \
    && adduser ${USERNAME} video

# Commands below are now run as normal user
USER ${USERNAME}

# When running a container start in the home folder
WORKDIR /home/$USERNAME
ENV HOME=/home/$USERNAME

# Some apps don't show controls without this
ENV QT_X11_NO_MITSHM=1

# Create folder for 3rd parties
RUN mkdir -p ${HOME}/visp-ws/3rdparty

# Install OpenBLAS from source
RUN cd ${HOME}/visp-ws/3rdparty \
    && GIT_ADDRESS="https://github.com/xianyi/OpenBLAS.git" \
    && LATEST_TAG=`eval $FUNCTION_GET_LATEST` \
    && git clone --depth 1 --branch $LATEST_TAG $GIT_ADDRESS \
    && cd OpenBLAS \
    && mkdir install \
    && make -j$(($(nproc) / 2)) \
    && make -j$(($(nproc) / 2)) install PREFIX=$(pwd)/install

ENV OpenBLAS_HOME=${HOME}/visp-ws/3rdparty/OpenBLAS/install

# Install VTK from source
ENV GIT_CLONE_PROTECTION_ACTIVE=false
RUN cd ${HOME}/visp-ws/3rdparty \
    && GIT_ADDRESS="https://github.com/Kitware/VTK.git" \
    && LATEST_TAG=`eval $FUNCTION_GET_LATEST` \
    && git clone --recursive --depth 1 --branch $LATEST_TAG $GIT_ADDRESS \
    && cd VTK \
    && mkdir build && cd build && mkdir install \
    && cmake .. -DVTK_ANDROID_BUILD=OFF -DVTK_BUILD_DOCUMENTATION=OFF -DVTK_BUILD_EXAMPLES=OFF -DVTK_BUILD_EXAMPLES=OFF \
      -DCMAKE_BUILD_TYPE=Release -DVTK_GROUP_ENABLE_Imaging=DONT_WANT -DVTK_GROUP_ENABLE_MPI=DONT_WANT \
      -DVTK_GROUP_ENABLE_Web=DONT_WANT -DCMAKE_INSTALL_PREFIX=${HOME}/visp-ws/3rdparty/VTK/build/install \
    && make -j$(($(nproc) / 2)) install

ENV VTK_DIR=${HOME}/visp-ws/3rdparty/VTK/build/install

# Install OpenCV from source
RUN cd ${HOME}/visp-ws/3rdparty \
    && GIT_ADDRESS="https://github.com/opencv/opencv.git" \
    && LATEST_TAG=`eval $FUNCTION_GET_LATEST` \
    && git clone --depth 1 --branch $LATEST_TAG $GIT_ADDRESS \
    && mkdir opencv/build \
    && cd opencv/build \
    && mkdir install \
    && cmake .. -DBUILD_EXAMPLES=OFF -DBUILD_PERF_TESTS=OFF -DBUILD_TESTS=OFF -DCMAKE_BUILD_TYPE=Release \
      -DCMAKE_INSTALL_PREFIX=${HOME}/visp-ws/3rdparty/opencv/build/install \
    && make -j$(($(nproc) / 2)) install

ENV OpenCV_DIR=${HOME}/visp-ws/3rdparty/opencv/build/install

# Install IntelĀ® RealSenseā„¢ SDK
RUN cd ${HOME}/visp-ws/3rdparty \
    && GIT_ADDRESS="https://github.com/IntelRealSense/librealsense.git" \
    && LATEST_TAG=`eval $FUNCTION_GET_LATEST` \
    && git clone --depth 1 --branch $LATEST_TAG $GIT_ADDRESS \
    && mkdir librealsense/build \
    && cd librealsense/build \
    && mkdir install \
    && cmake .. -DBUILD_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=Release \
      -DCMAKE_INSTALL_PREFIX=${HOME}/visp-ws/3rdparty/librealsense/build/install \
    && make -j$(($(nproc) / 2)) install

ENV REALSENSE2_DIR=${HOME}/visp-ws/3rdparty/librealsense/build/install

# Build PCL from source
RUN cd ${HOME}/visp-ws/3rdparty \
    && GIT_ADDRESS="https://github.com/PointCloudLibrary/pcl.git" \
    && LATEST_TAG=`eval $FUNCTION_GET_LATEST` \
    && git clone --depth 1 --branch $LATEST_TAG $GIT_ADDRESS \
    && mkdir pcl/build \
    && cd pcl/build \
    && mkdir install \
    && cmake .. -DBUILD_tools=OFF -DBUILD_global_tests=OFF -DPCL_DISABLE_GPU_TESTS=ON -DCMAKE_BUILD_TYPE=Release \
      -DCMAKE_INSTALL_PREFIX=${HOME}/visp-ws/3rdparty/pcl/build/install \
    && make -j$(($(nproc) / 3)) install

ENV PCL_DIR=${HOME}/visp-ws/3rdparty/pcl/build/install

# Install visp-images
RUN mkdir -p ${HOME}/visp-ws \
    && cd ${HOME}/visp-ws \
    && git clone https://github.com/lagadic/visp-images.git \
    && echo "export VISP_WS=${HOME}/visp-ws" >> ${HOME}/.bashrc \
    && echo "export VISP_INPUT_IMAGE_PATH=${HOME}/visp-ws/visp-images" >> ${HOME}/.bashrc

# Download ViSP
RUN cd ${HOME}/visp-ws \
    && git clone ${GIT_URL} ${GIT_BRANCH_CMD}

# Build visp
RUN cd ${HOME}/visp-ws \
    && mkdir visp-build \
    && cd visp-build \
    && cmake ../visp -DCMAKE_INSTALL_PREFIX=${HOME}/visp-ws/visp-build/install \
    && make -j$(($(nproc) / 2)) developer_scripts \
    && make -j$(($(nproc) / 2)) install

CMD ["/bin/bash"]