diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index dd31993d469c3047b5ee070cdfedb344919ebe24..5a06afd63d4f4764adb40b266ce6e97c90c63807 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -27,12 +27,8 @@ build ubuntu-18.04: - CACHE_FILE="/var/lib/gitlab-runner/.local/share/robofish-docker-gpu-driver-version" - if [[ -f $CACHE_FILE ]] && [[ "$(cat $CACHE_FILE)" == "$GPU_DRIVER_VERSION" ]]; then OPTS=''; else OPTS='--no-cache'; fi - echo -n $GPU_DRIVER_VERSION > $CACHE_FILE - - docker build $OPTS --pull -t "${CI_REGISTRY}/${CI_PROJECT_PATH,,}:base-ubuntu18.04" -f ubuntu18.04/base/Dockerfile ubuntu18.04/base - - docker push "${CI_REGISTRY}/${CI_PROJECT_PATH,,}:base-ubuntu18.04" - - docker build $OPTS --pull -t "${CI_REGISTRY}/${CI_PROJECT_PATH,,}:devel-ubuntu18.04" -f ubuntu18.04/devel/Dockerfile ubuntu18.04 - - docker push "${CI_REGISTRY}/${CI_PROJECT_PATH,,}:devel-ubuntu18.04" - - docker build $OPTS --pull -t "${CI_REGISTRY}/${CI_PROJECT_PATH,,}:cuda-devel-ubuntu18.04" -f ubuntu18.04/cuda-devel/Dockerfile ubuntu18.04 - - docker push "${CI_REGISTRY}/${CI_PROJECT_PATH,,}:cuda-devel-ubuntu18.04" + - docker build $OPTS --pull -t "${CI_REGISTRY}/${CI_PROJECT_PATH,,}:ubuntu-18.04" -f ubuntu-18.04/Dockerfile ubuntu-18.04 + - docker push "${CI_REGISTRY}/${CI_PROJECT_PATH,,}:ubuntu-18.04" after_script: - docker logout "${CI_REGISTRY}" diff --git a/ubuntu-18.04/Dockerfile b/ubuntu-18.04/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..9919f328a132795518e83197913719b30db81ab5 --- /dev/null +++ b/ubuntu-18.04/Dockerfile @@ -0,0 +1,41 @@ +FROM nvidia/cudagl:10.0-runtime-ubuntu18.04 + +LABEL maintainer="Moritz Maxeiner <moritz.maxeiner@fu-berlin.de>" +LABEL authors="Moritz Maxeiner <moritz.maxeiner@fu-berlin.de>" + +ENV TZ=Europe/Berlin +ENV DEBIAN_FRONTEND=noninteractive + +RUN apt-get update && \ + apt-get install -y --no-install-recommends software-properties-common && \ + add-apt-repository ppa:ubuntu-toolchain-r/test -y && \ + apt-get update && \ + apt-get install -y locales && \ + locale-gen en_US.UTF-8 && \ + echo $TZ > /etc/timezone && \ + apt-get install -y tzdata && \ + rm /etc/localtime && \ + ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && \ + dpkg-reconfigure -f noninteractive tzdata && \ + apt-get install -y --no-install-recommends \ + build-essential \ + pkg-config \ + gcc-9 g++-9 \ + ninja-build \ + curl \ + git \ + p7zip-full \ + file \ + nano && \ + apt-get install -y \ + ffmpeg \ + python3.7 \ + python3.7-venv \ + python3-pip \ + python3-setuptools \ + python3-distutils + +ADD agki-nas01.imp.fu-berlin.de-ca-cert.crt /usr/local/share/ca-certificates/agki-nas01.imp.fu-berlin.de-ca-cert.crt +RUN update-ca-certificates + +RUN apt-get clean diff --git a/ubuntu18.04/base/agki-nas01.imp.fu-berlin.de-ca-cert.crt b/ubuntu-18.04/agki-nas01.imp.fu-berlin.de-ca-cert.crt similarity index 100% rename from ubuntu18.04/base/agki-nas01.imp.fu-berlin.de-ca-cert.crt rename to ubuntu-18.04/agki-nas01.imp.fu-berlin.de-ca-cert.crt diff --git a/ubuntu18.04/base/Dockerfile b/ubuntu18.04/base/Dockerfile deleted file mode 100644 index bbc6468e214a13867a0ab6e2923f8d6f77b2a9c1..0000000000000000000000000000000000000000 --- a/ubuntu18.04/base/Dockerfile +++ /dev/null @@ -1,129 +0,0 @@ -FROM nvidia/cudagl:10.0-devel-ubuntu18.04 - -LABEL maintainer="Moritz Maxeiner <moritz.maxeiner@fu-berlin.de>" -LABEL authors="Moritz Maxeiner <moritz.maxeiner@fu-berlin.de>" - -ENV TZ=Europe/Berlin -ENV DEBIAN_FRONTEND=noninteractive - -COPY qtifwsilent.qs /tmp/qtifwsilent.qs -RUN apt-get update && \ - apt-get install -y --no-install-recommends software-properties-common && \ - add-apt-repository ppa:ubuntu-toolchain-r/test -y && \ - apt-get update && \ - apt-get install -y locales && \ - locale-gen en_US.UTF-8 && \ - echo $TZ > /etc/timezone && \ - apt-get install -y tzdata && \ - rm /etc/localtime && \ - ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && \ - dpkg-reconfigure -f noninteractive tzdata && \ - apt-get install -y --no-install-recommends \ - build-essential \ - pkg-config \ - gcc-8 g++-8 \ - ninja-build \ - curl \ - git \ - p7zip-full \ - file \ - nano && \ - apt-get install -y \ - libcudnn7-dev \ - libgfortran3 \ - protobuf-compiler \ - graphviz \ - fuse \ - ffmpeg \ - libboost-all-dev \ - libopenblas-dev \ - liblapack-dev \ - libcurl4-openssl-dev \ - libzmq3-dev \ - libprotobuf-dev \ - libepoxy-dev \ - libglm-dev \ - libegl1-mesa-dev \ - libcgal-dev \ - libjsoncpp-dev \ - libwebsocketpp-dev \ - libfreetype6-dev \ - libharfbuzz-dev \ - libeigen3-dev \ - libpulse-mainloop-glib0 \ - libxkbcommon-x11-0 \ - libgstreamer-plugins-base1.0-0 \ - python3.7 \ - python3.7-dev \ - python3.7-venv \ - python3-pip \ - python3-setuptools \ - python3-distutils && \ - cd /tmp && \ - curl -sSLO https://download.qt.io/official_releases/qt/5.12/5.12.4/qt-opensource-linux-x64-5.12.4.run && \ - chmod +x qt-opensource-linux-x64-5.12.4.run && \ - env QT_INSTALL_DIR=/opt/qt5 ./qt-opensource-linux-x64-5.12.4.run --script qtifwsilent.qs -platform minimal && \ - rm qt-opensource-linux-x64-5.12.4.run && \ - rm qtifwsilent.qs && \ - curl -sSL -o /usr/local/bin/linuxdeployqt https://github.com/probonopd/linuxdeployqt/releases/download/5/linuxdeployqt-5-x86_64.AppImage && \ - chmod +x /usr/local/bin/linuxdeployqt -ENV Qt5_DIR /opt/qt5/5.12.4/gcc_64/lib/cmake/Qt5 - -RUN python3.7 -m pip --no-cache-dir install \ - graphviz \ - opencv-python==3.4.5.20 \ - nose \ - nose-timer \ - pylint \ - requests \ - Pillow \ - wheel \ - twine \ - h5py \ - joblib \ - psutil - -RUN cd /tmp && \ - curl -sSLO https://cmake.org/files/v3.15/cmake-3.15.4.tar.gz && \ - tar -xf cmake-3.15.4.tar.gz && \ - cd cmake-3.15.4 && \ - ./configure --prefix=/usr/local && \ - make install -j$(nproc --all) && \ - cd .. && \ - rm -rf cmake-3.15.4* - -COPY hdf5-1.10.2-no-trailing-attributes.patch /tmp -RUN cd /tmp && \ - curl -sSLO https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.2/src/hdf5-1.10.2.tar.bz2 && \ - tar -xf hdf5-1.10.2.tar.bz2 && \ - cd hdf5-1.10.2 && \ - patch -p1 -i /tmp/hdf5-1.10.2-no-trailing-attributes.patch && \ - cmake -Bbuild -H. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -G Ninja && \ - ninja -C build install && \ - cd .. && \ - rm -rf hdf5-1.10.2* - -RUN cd /tmp && \ - curl -sSLO https://github.com/pybind/pybind11/archive/v2.3.0.tar.gz && \ - tar -xf v2.3.0.tar.gz && \ - cd pybind11-2.3.0 && \ - cmake -Bbuild -H. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DPYBIND11_TEST=off -G Ninja && \ - ninja -C build install && \ - cd .. && \ - rm -f v2.3.0.tar.gz && \ - rm -rf pybind11-2.3.0 - -RUN cd /tmp && \ - curl -sSLO https://github.com/rpclib/rpclib/archive/v2.2.1.tar.gz && \ - tar -xf v2.2.1.tar.gz && \ - cd rpclib-2.2.1 && \ - cmake -Bbuild -H. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -G Ninja && \ - ninja -C build install && \ - cd .. && \ - rm -f v2.2.1.tar.gz && \ - rm -rf rpclib-2.2.1 - -ADD agki-nas01.imp.fu-berlin.de-ca-cert.crt /usr/local/share/ca-certificates/agki-nas01.imp.fu-berlin.de-ca-cert.crt -RUN update-ca-certificates - -RUN apt-get clean diff --git a/ubuntu18.04/base/hdf5-1.10.2-no-trailing-attributes.patch b/ubuntu18.04/base/hdf5-1.10.2-no-trailing-attributes.patch deleted file mode 100644 index 5da079e5d8308591b225f07adfb187b3addfad72..0000000000000000000000000000000000000000 --- a/ubuntu18.04/base/hdf5-1.10.2-no-trailing-attributes.patch +++ /dev/null @@ -1,113 +0,0 @@ -Attributes must preceed function declarator ---- a/src/H5detect.c -+++ b/src/H5detect.c -@@ -1360,8 +1360,8 @@ - * - *------------------------------------------------------------------------- - */ --static void --detect_C89_integers(void) HDF_NO_UBSAN -+static void HDF_NO_UBSAN -+detect_C89_integers(void) - { - DETECT_BYTE(signed char, SCHAR, d_g[nd_g]); nd_g++; - DETECT_BYTE(unsigned char, UCHAR, d_g[nd_g]); nd_g++; -@@ -1388,8 +1388,8 @@ - * - *------------------------------------------------------------------------- - */ --static void --detect_C89_floats(void) HDF_NO_UBSAN -+static void HDF_NO_UBSAN -+detect_C89_floats(void) - { - DETECT_F(float, FLOAT, d_g[nd_g]); nd_g++; - DETECT_F(double, DOUBLE, d_g[nd_g]); nd_g++; -@@ -1410,8 +1410,8 @@ - * - *------------------------------------------------------------------------- - */ --static void --detect_C99_integers8(void) HDF_NO_UBSAN -+static void HDF_NO_UBSAN -+detect_C99_integers8(void) - { - #if H5_SIZEOF_INT8_T>0 - #if H5_SIZEOF_INT8_T==1 -@@ -1472,8 +1472,8 @@ - * - *------------------------------------------------------------------------- - */ --static void --detect_C99_integers16(void) HDF_NO_UBSAN -+static void HDF_NO_UBSAN -+detect_C99_integers16(void) - { - #if H5_SIZEOF_INT16_T>0 - DETECT_I(int16_t, INT16, d_g[nd_g]); nd_g++; -@@ -1510,8 +1510,8 @@ - * - *------------------------------------------------------------------------- - */ --static void --detect_C99_integers32(void) HDF_NO_UBSAN -+static void HDF_NO_UBSAN -+detect_C99_integers32(void) - { - #if H5_SIZEOF_INT32_T>0 - DETECT_I(int32_t, INT32, d_g[nd_g]); nd_g++; -@@ -1548,8 +1548,8 @@ - * - *------------------------------------------------------------------------- - */ --static void --detect_C99_integers64(void) HDF_NO_UBSAN -+static void HDF_NO_UBSAN -+detect_C99_integers64(void) - { - #if H5_SIZEOF_INT64_T>0 - DETECT_I(int64_t, INT64, d_g[nd_g]); nd_g++; -@@ -1599,8 +1599,8 @@ - * - *------------------------------------------------------------------------- - */ --static void --detect_C99_integers(void) HDF_NO_UBSAN -+static void HDF_NO_UBSAN -+detect_C99_integers(void) - { - /* break it down to more subroutines so that each module subroutine */ - /* is smaller and takes less time to compile with optimization on. */ -@@ -1625,8 +1625,8 @@ - * - *------------------------------------------------------------------------- - */ --static void --detect_C99_floats(void) HDF_NO_UBSAN -+static void HDF_NO_UBSAN -+detect_C99_floats(void) - { - #if H5_SIZEOF_DOUBLE == H5_SIZEOF_LONG_DOUBLE - /* -@@ -1656,8 +1656,8 @@ - * - *------------------------------------------------------------------------- - */ --static void --detect_alignments(void) HDF_NO_UBSAN -+static void HDF_NO_UBSAN -+detect_alignments(void) - { - /* Detect structure alignment for pointers, hvl_t, hobj_ref_t, hdset_reg_ref_t */ - DETECT_M(void *, POINTER, m_g[na_g]); na_g++; -@@ -1744,8 +1744,8 @@ - * - *------------------------------------------------------------------------- - */ --int --main(void) HDF_NO_UBSAN -+int HDF_NO_UBSAN -+main(void) - { - - #if defined(H5_HAVE_SETSYSINFO) && defined(SSI_NVPAIRS) diff --git a/ubuntu18.04/base/qtifwsilent.qs b/ubuntu18.04/base/qtifwsilent.qs deleted file mode 100644 index 429a7928bd968010f6204efc695a68f79b8e4669..0000000000000000000000000000000000000000 --- a/ubuntu18.04/base/qtifwsilent.qs +++ /dev/null @@ -1,51 +0,0 @@ -function Controller() { - installer.autoRejectMessageBoxes(); - installer.installationFinished.connect(function() { - gui.clickButton(buttons.NextButton); - }) -} - -Controller.prototype.WelcomePageCallback = function() { - gui.clickButton(buttons.NextButton, 7000); -} - -Controller.prototype.CredentialsPageCallback = function() { - gui.clickButton(buttons.NextButton); -} - -Controller.prototype.IntroductionPageCallback = function() { - gui.clickButton(buttons.NextButton); -} - -Controller.prototype.TargetDirectoryPageCallback = function() { - gui.currentPageWidget().TargetDirectoryLineEdit.setText(installer.environmentVariable("QT_INSTALL_DIR")); - gui.clickButton(buttons.NextButton); -} - -Controller.prototype.ComponentSelectionPageCallback = function() { - var widget = gui.currentPageWidget(); - widget.deselectAll(); - widget.selectComponent("qt.qt5.5124.gcc_64"); - widget.selectComponent("qt.qt5.5124.qtcharts"); - gui.clickButton(buttons.NextButton); -} - -Controller.prototype.LicenseAgreementPageCallback = function() { - gui.currentPageWidget().AcceptLicenseRadioButton.setChecked(true); - gui.clickButton(buttons.NextButton); -} - -Controller.prototype.StartMenuDirectoryPageCallback = function() { - gui.clickButton(buttons.NextButton); -} - -Controller.prototype.ReadyForInstallationPageCallback = function() { - gui.clickButton(buttons.NextButton); -} - -Controller.prototype.FinishedPageCallback = function() { - var checkBoxForm = gui.currentPageWidget().LaunchQtCreatorCheckBoxForm; - if (checkBoxForm && checkBoxForm.launchQtCreatorCheckBox) - checkBoxForm.launchQtCreatorCheckBox.checked = false; - gui.clickButton(buttons.FinishButton); -} diff --git a/ubuntu18.04/cuda-devel/Dockerfile b/ubuntu18.04/cuda-devel/Dockerfile deleted file mode 100644 index 6da21ecd0330346e67c239114743f4e51e9f6339..0000000000000000000000000000000000000000 --- a/ubuntu18.04/cuda-devel/Dockerfile +++ /dev/null @@ -1,30 +0,0 @@ -FROM git.imp.fu-berlin.de:5000/bioroboticslab/robofish/docker:base-ubuntu18.04 - -# NOTE: This still uses prebuild non-CUDA OpenCV. Compile OpenCV from source if CUDA support in OpenCV is required. -RUN apt-get update && \ - apt-get install -y libopencv-dev && \ - cd /opt && \ - curl -sSLO https://github.com/apache/incubator-mxnet/releases/download/1.5.1/apache-mxnet-src-1.5.1-incubating.tar.gz && \ - tar -xf apache-mxnet-src-1.5.1-incubating.tar.gz --owner root --group root --no-same-owner && \ - rm -f apache-mxnet-src-1.5.1-incubating.tar.gz && \ - mv apache-mxnet-src-1.5.1-incubating mxnet-1.5.1 && \ - cd mxnet-1.5.1 && \ - cmake -Bbuild -H. \ - -DCMAKE_CXX_STANDARD=14 -DUSE_CXX14_IF_AVAILABLE=ON \ - -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local \ - -DUSE_CUDA=ON -DUSE_CUDNN=ON -DUSE_NCCL=ON \ - -DUSE_OPENCV=ON -DUSE_OPENMP=ON \ - -DUSE_LAPACK=ON -DUSE_MKL_IF_AVAILABLE=OFF \ - -DUSE_DIST_KVSTORE=ON \ - -DUSE_CPP_PACKAGE=ON \ - -DUSE_SIGNAL_HANDLER=ON \ - -DENABLE_CUDA_RTC=ON \ - -DBUILD_CPP_EXAMPLES=OFF \ - -DUSE_GPERFTOOLS=OFF \ - -DUSE_JEMALLOC=OFF \ - -G Ninja && \ - ninja -C build && \ - cd python && \ - python3.7 setup.py install && \ - apt-get clean -ENV MXNet_DIR /opt/mxnet-1.5.1 diff --git a/ubuntu18.04/devel/Dockerfile b/ubuntu18.04/devel/Dockerfile deleted file mode 100644 index eb742f24ce1e2cb29d2c63d1ee20ca4ef2958168..0000000000000000000000000000000000000000 --- a/ubuntu18.04/devel/Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -FROM git.imp.fu-berlin.de:5000/bioroboticslab/robofish/docker:base-ubuntu18.04 - -RUN apt-get update && \ - apt-get install -y libopencv-dev && \ - cd /opt && \ - curl -sSLO https://github.com/apache/incubator-mxnet/releases/download/1.5.1/apache-mxnet-src-1.5.1-incubating.tar.gz && \ - tar -xf apache-mxnet-src-1.5.1-incubating.tar.gz --owner root --group root --no-same-owner && \ - rm -f apache-mxnet-src-1.5.1-incubating.tar.gz && \ - mv apache-mxnet-src-1.5.1-incubating mxnet-1.5.1 && \ - cd mxnet-1.5.1 && \ - cmake -Bbuild -H. \ - -DCMAKE_CXX_STANDARD=14 -DUSE_CXX14_IF_AVAILABLE=ON \ - -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local \ - -DUSE_CUDA=OFF -DUSE_CUDNN=OFF -DUSE_NCCL=OFF \ - -DUSE_OPENCV=ON -DUSE_OPENMP=ON \ - -DUSE_LAPACK=ON -DUSE_MKL_IF_AVAILABLE=OFF \ - -DUSE_DIST_KVSTORE=ON \ - -DUSE_CPP_PACKAGE=ON \ - -DUSE_SIGNAL_HANDLER=ON \ - -DENABLE_CUDA_RTC=OFF \ - -DBUILD_CPP_EXAMPLES=OFF \ - -DUSE_GPERFTOOLS=OFF \ - -DUSE_JEMALLOC=OFF \ - -G Ninja && \ - ninja -C build && \ - cd python && \ - python3.7 setup.py install && \ - apt-get clean -ENV MXNet_DIR /opt/mxnet-1.5.1