From 481457690a68dce7c4823dc827b2af422a86421e Mon Sep 17 00:00:00 2001
From: Nicolas Pope <nicolas.pope@utu.fi>
Date: Sun, 12 Jun 2022 19:41:21 +0300
Subject: [PATCH] Initial base dockerfile

---
 Dockerfile          | 189 ++++++++++++++++++++++++++++++++++++++++++++
 libnvcuvid.so       | Bin 0 -> 3528 bytes
 libnvidia-encode.so | Bin 0 -> 1480 bytes
 3 files changed, 189 insertions(+)
 create mode 100644 Dockerfile
 create mode 100644 libnvcuvid.so
 create mode 100644 libnvidia-encode.so

diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..6b42ee8
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,189 @@
+FROM nvidia/cuda:11.6.2-devel-ubuntu20.04 AS devel
+
+ARG DEBIAN_FRONTEND=noninteractive
+ENV TZ=Europe/London
+ENV NVIDIA_DRIVER_CAPABILITIES graphics,compute,utility,video
+
+RUN apt-get update &&\
+    # Install build tools, build dependencies and python
+    apt-get install --no-install-recommends -y \
+        build-essential \
+        ninja-build \
+        git \
+        openssh-client \
+        wget \
+        unzip \
+        yasm \
+        cppcheck \
+        pkg-config \
+        vim \
+        pulseaudio \
+        libceres-dev \
+        libreadline-dev \
+        libopus-dev \
+        libxtst-dev \
+        libswscale-dev \
+        libtbb2 \
+        libtbb-dev \
+        libjpeg-dev \
+        libpng-dev \
+        libglew-dev \
+        zlib1g-dev \
+        libasound-dev \
+        libavcodec-dev \
+        libavformat-dev \
+        libavutil-dev \
+        libpostproc-dev \
+        libswscale-dev \
+        libeigen3-dev \
+        libgtk2.0-dev \
+        libxxf86vm-dev \
+        libgnutls28-dev \
+        uuid-dev \
+        libmsgpack-dev \
+        liburiparser-dev \
+        software-properties-common \
+        zenity \
+        gdb \
+        gdbserver \
+        valgrind \
+    && apt-key adv --keyserver keys.gnupg.net --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE && \
+    add-apt-repository "deb https://librealsense.intel.com/Debian/apt-repo focal main" -u && \
+    apt-get update && \
+    apt-get install --no-install-recommends -y \
+        librealsense2-dev \
+    && rm -rf /var/lib/apt/lists/*
+
+COPY ./libnvcuvid.so ./libnvidia-encode.so /usr/lib/x86_64-linux-gnu/
+
+RUN cd /opt/ &&\
+    # CMake
+    wget https://github.com/Kitware/CMake/releases/download/v3.23.2/cmake-3.23.2-linux-x86_64.sh && \
+    chmod a+x ././cmake-3.23.2-linux-x86_64.sh && \
+    ./cmake-3.23.2-linux-x86_64.sh --skip-license --prefix=/usr/local && \
+    rm ./cmake-3.23.2-linux-x86_64.sh && \
+    # Pylon
+    wget -O pylon.deb https://seafile.utu.fi/f/b4585f6c84f0462fac04/?dl=1 &&\
+    apt-get install ./pylon.deb &&\
+    rm ./pylon.deb &&\
+    rm -rf /var/lib/apt/lists/* &&\
+    # Portaudio
+    cd /opt/ &&\
+    wget https://github.com/PortAudio/portaudio/archive/refs/tags/v19.7.0.tar.gz &&\
+    tar -xf ./v19.7.0.tar.gz &&\
+    rm ./v19.7.0.tar.gz &&\
+    cd ./portaudio-19.7.0 &&\
+    ./configure && make && make install &&\
+    rm -rf ./portaudio-19.7.0
+
+ARG OPENCV_VERSION=4.5.5
+
+# Download and unzip OpenCV and opencv_contrib and delte zip files
+RUN cd /opt/ &&\
+    wget https://github.com/opencv/opencv/archive/$OPENCV_VERSION.zip &&\
+    unzip $OPENCV_VERSION.zip &&\
+    rm $OPENCV_VERSION.zip &&\
+    wget https://github.com/opencv/opencv_contrib/archive/$OPENCV_VERSION.zip &&\
+    unzip ${OPENCV_VERSION}.zip &&\
+    rm ${OPENCV_VERSION}.zip &&\
+    # Create build folder and switch to it
+    mkdir /opt/opencv-${OPENCV_VERSION}/build && cd /opt/opencv-${OPENCV_VERSION}/build &&\
+    # Cmake configure
+    cmake \
+        -DOPENCV_EXTRA_MODULES_PATH=/opt/opencv_contrib-${OPENCV_VERSION}/modules \
+        -DWITH_CUDA=ON \
+        -DOPENCV_ENABLE_NONFREE=ON\
+        -DCUDA_ARCH_BIN="6.1 7.5" \
+        -DBUILD_TESTS=OFF\
+        -DBUILD_PERF_TESTS=OFF\
+        -DBUILD_EXAMPLES=OFF\
+        -DBUILD_opencv_bioinspired=OFF\
+        -DBUILD_opencv_cudaobjdetect=OFF\
+        -DBUILD_opencv_dnn_objdetect=OFF\
+        -DBUILD_opencv_dnn_superres=OFF\
+        -DBUILD_opencv_fuzzy=OFF\
+        -DBUILD_opencv_hdf=OFF\
+        -DBUILD_opencv_hfs=OFF\
+        -DBUILD_opencv_dpm=OFF\
+        -DBUILD_opencv_image_hash=OFF\
+        -DBUILD_opencv_java_bindings_generator=OFF\
+        -DBUILD_opencv_js=OFF\
+        -DBUILD_opencv_saliency=OFF\
+        -DBUILD_opencv_sfm=OFF\
+        -DBUILD_opencv_stitching=OFF\
+        -DBUILD_opencv_structured_light=OFF\
+        -DBUILD_opencv_superres=OFF\
+        -DBUILD_opencv_surface_matching=OFF\
+        -DBUILD_opencv_viz=OFF\
+        -DBUILD_opencv_xobjdetect=OFF\
+        -DBUILD_opencv_gapi=OFF\
+        -DBUILD_opencv_videostab=OFF\
+        -DBUILD_opencv_rgbd=OFF\
+        -DWITH_CUDNN=OFF\
+        -DWITH_TIFF=OFF\
+        -DWITH_WEBP=OFF\
+        -DWITH_OPENEXR=OFF\
+        -DWITH_OPENCL=OFF\
+        -DWITH_PROTOBUF=ON\
+        -DCMAKE_BUILD_TYPE=RELEASE \
+        # Install path will be /usr/local/lib (lib is implicit)
+        -DCMAKE_INSTALL_PREFIX=/usr/local \
+        .. &&\
+    # Make
+    make -j"$(nproc)" && \
+    # Install to /usr/local/lib
+    make install && \
+    ldconfig &&\
+    # Remove OpenCV sources and build folder
+    rm -rf /opt/opencv-${OPENCV_VERSION} && rm -rf /opt/opencv_contrib-${OPENCV_VERSION} &&\
+    ln -s /usr/local/include/opencv4/opencv2 /usr/local/include/opencv2
+
+ARG PROTOCOL_VERSION=0.3.2
+
+# Beyond Protocol
+RUN wget https://gitlab.utu.fi/api/v4/projects/14965/packages/generic/libftl-protocol/${PROTOCOL_VERSION}/libftl-protocol${PROTOCOL_VERSION}-Linux.deb && \
+    apt-get install -y ./libftl-protocol${PROTOCOL_VERSION}-Linux.deb && \
+    rm ./libftl-protocol${PROTOCOL_VERSION}-Linux.deb
+
+FROM nvidia/cuda:11.6.2-base-ubuntu20.04 AS runtime
+
+ARG OPENCV_VERSION=4.5.5
+ARG DEBIAN_FRONTEND=noninteractive
+ENV TZ=Europe/London
+ENV NVIDIA_DRIVER_CAPABILITIES graphics,compute,utility,video
+
+RUN apt-get update && apt-get upgrade -y &&\
+    # Install build tools, build dependencies and python
+    apt-get install --no-install-recommends -y \
+        pulseaudio \
+        libceres1 \
+        libreadline8 \
+        libopus0 \
+        libxtst6 \
+        libtbb2 \
+        libjpeg8 \
+        libpng16-16 \
+        libtiff5 \
+        libavformat58 \
+        libpq5 \
+        libxine2 \
+        libglew2.1 \
+        zlib1g \
+        libasound2 \
+        libavcodec58 \
+        libavutil56 \
+        libpostproc55 \
+        libswscale5 \
+        libgtk2.0-0 \
+        libxxf86vm1 \
+        uuid \
+        libmsgpackc2 \
+        liburiparser1 \
+        software-properties-common \
+    && rm -rf /var/lib/apt/lists/*
+
+COPY --from=devel /usr/local/share /usr/local/share
+COPY --from=devel /usr/local/lib /usr/local/lib
+COPY --from=devel /opt/pylon /opt/pylon
+COPY --from=devel /etc/udev/rules.d/69-basler-cameras.rules /etc/udev/rules.d/
+COPY --from=devel /etc/profile.d /etc/profile.d
diff --git a/libnvcuvid.so b/libnvcuvid.so
new file mode 100644
index 0000000000000000000000000000000000000000..f08a209545e076a835d11dcc24bd20d22088b1c5
GIT binary patch
literal 3528
zcmb<-^>JfjWMqH=W(GS35bp~cM8p9?F`VFrG8h;b92hJZSQs1_I2hQ$YFQCd7_1Xq
z5Fr@Nz@PvY0NDYu0w#Wf3nC7q4}euMFu-V-J|+eR22%8KK+Oq!T9N|N2jvo^VEP0Z
z7#QRj7#M^Y7#PGE7#IW?7#O4(7#O6WCh#*bFmOWIAWD{jfdQmPjDdkcf`Nen<b4?i
z1_nNmBpwX%7Yo#HAZ4I1g}DL5=K&E63=F(b8b%>S3xfy)0|Pq)0|PSy1A{OF1A{07
z1A`<?As(8UfrSAU-!NtAU_Y}k2!RYla+f(HC@feQ{LsX+pyE+z;=iHdEokCrq2d*2
z;*+4_X=vg{pzbk16R(A;Pe2p@0#$E=CJqWCAqEzPU(mz=r5O64>gCYXZ-9zxp@~;P
z#U;?houJ}uXySLE;$~>#l1!j9_3?iPHzfVT!aoYCo(E06EY!aqXyV#X_22}66kpGv
z>g&+db3(<P(8PssxJMO-_*|&HDrn{eLd_3B6JG`u&p{Ihl?R}Bfu%!OyljQ4FG5q#
zkX%}pnc`fOnpl$RlA4^Kl3Ii;6qcEinjer@RE$M9IKQ+gITb@SL^vEOUQ*$cpPY@t
zfmntj<dRxkQj}i_7YohHf$M^}Dj+ktq_hZX8&o+&2I^j@7>0w9#UW0E*y5gA0?{8_
zl2}q&j3!v*oLGPmgXnWCP07r6%P-1JEP<<r$bc<HlL3oCq(L@7UGAG$0G4noO3cM3
zWM%>}8XV+cl`e@TiBPek%(BFiRR019Hz+kZKQApay|f55;(}94z#1{^4$aHOv>i>*
z%!DC6H3ej4e0)-IaeQ$}Vo?c0d}>|_Lr!K=UKu#G=oRPd88R?1gnD#7J$ZPrk&v7Z
zDxW|s#;PC&#tH#OX&!ct35*O3pgIJEUH<?756&Bod;)Du&b(kY14Q12fq_8_k9-WM
z{=y?)!@$7s?H_LQ=P)oZ+`%Kihk=3N5FU9@8Mp$E{2vAehCV#<GK>riC3xg*7#SF%
z@W{t7GB7yck*{H7U{J#&KZlWlfd`NL9!3U+Pk(WT-yKE<h8uX~|1dHz?8753!^FU_
z1dqH869YpR9{Ct128IGW@-<8h3}JZW=P)ra*x-@h!^FU#gh&1k69WSW9{E2^3=Hr7
z;0`|-W(I~UIOJjND=kn%ih+Rv)RqF}BLz^!!oa`)YEOaqJD?J<eDeY-4{E1@<gK9k
zVeKkV8xAB+bF5dKQCw0~l9<GxmyuYU!JwB?nO9ty3!zJj81za~D@qvjQZwSyz-2H<
zJ~1~lnMw`=`4<#MQ13Iq!VN})+Fu~6VDhlGDKt32ZC;QWFnL(G!srW72~gV<#DwXG
zg)gX`3X=ob1B)jZ4T~3$90)_B4a5XvMFs|NUj!DfuyzEDo(5KhAYkr>iKs*MgWLuZ
zn*eQZz-SAQ<3JKn40At}%K)lZKz75Foq+deASz(}7??avKd3(eQUUT0Ob*0{;SNxs
RGB7Y$!33Z*NIjGZrU1=O5(EGM

literal 0
HcmV?d00001

diff --git a/libnvidia-encode.so b/libnvidia-encode.so
new file mode 100644
index 0000000000000000000000000000000000000000..99934c7b22357afacb382aef554075081ee787f6
GIT binary patch
literal 1480
zcmb<-^>JfjWMqH=W(GS35HE!ZBH{p{7)~%l84L^z4h$9yEDR0|91QGWwX6s!4Au##
zIWU@mK>@4=WCt4q0|QL_1QSFYMjrsHVqk#LFnu87NYTduH7D?CNeW0GluM9;=>vJ2
zoq>S?<VTQx7A!hJYC!J7B84Kv%)r6`3s;zgGy?;J5CaQC7SsTc9UwUu1_lNJhL8U{
zm?7Z;5(8mSxPjEe%z>%5#i2d`hd6^@nQLBheoCrifTwd&YGO&MXI^nhVqS78vW$Cb
ziEm;>aA`q7eo;wkN?2-9ab|uVLwssVVo4%He0)-IaeQ$}Vo?c0d}>|_Lr!K=URh>J
zW}<E?*lfMxd_6-3hER{rrza0XND+`H7#J8BtAZF9D+Cy&dDuB7FfuU6FhKB?|NsAk
z{p83e(8lD<3uZ&*Y#10AcHxlcgPI!(rD5@;017Z@{DGu?K>09p1E72^kR$^GLpGG=
zhSCyHn&y;VaYk`TQAuJFgI-2raR!54N@ZSgWiEs+DPqtoNv$Yh&`ZsTPb*5yO$Cc5
z=4K{S$zdS>g3>rN88X1a4MrP4?SaX|@&_!O1sNC^KxV+?Vc`m+S3vc{@(N5pEPN#y
z7#Lu3Af>Q)g3+*e0m*?dG}=H+FjfSmDFy}xSiHjW2aM(ct3nVkcf&-~q55I&FMu*&
zbOcNxl!mz<%4INw+70ppNDNkv!OAySIR=x5=@$SghT092g9?GE4yd3Nn1>+H{SN@;
C<aNjZ

literal 0
HcmV?d00001

-- 
GitLab