diff --git a/centos-7/Dockerfile b/centos-7/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..56456ed6b0e8a27f5047fe5076d19dcdddc6382d --- /dev/null +++ b/centos-7/Dockerfile @@ -0,0 +1,244 @@ +# SPDX-License-Identifier: MIT +FROM centos:7 + +LABEL maintainer="Moritz Maxeiner <moritz.maxeiner@fu-berlin.de>" +LABEL authors="Moritz Maxeiner <moritz.maxeiner@fu-berlin.de>" + +RUN yum install -y centos-release-scl && \ + yum install -y epel-release && \ + yum install -y \ + devtoolset-8 \ + ninja-build \ + bzip2 \ + desktop-file-utils \ + curl-devel \ + expat-devel \ + zlib-devel \ + bzip2-devel \ + xz-devel \ + libzstd-devel \ + rhash-devel \ + libuv-devel \ + && \ + ln -s /usr/bin/ninja-build /usr/local/bin/ninja && \ + yum clean all + +RUN version=3.15.5 && \ + source scl_source enable devtoolset-8 && \ + cd /tmp && \ + curl -sSLO https://cmake.org/files/v${version%.*}/cmake-${version}.tar.gz && \ + tar -xf cmake-${version}.tar.gz && \ + cd cmake-${version} && \ + ./bootstrap --system-libs --no-system-libarchive --no-system-jsoncpp --prefix=/usr/local && \ + make install -j$(nproc --all) && \ + cd .. && \ + rm -rf cmake-${version}* + +RUN yum install -y \ + python36-devel \ + python36-numpy \ + && \ + yum clean all + +RUN yum install -y dkms && \ + cd /tmp && \ + curl -sSLO https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-repo-rhel7-10.1.243-1.x86_64.rpm && \ + rpm -i cuda-repo-rhel7-*.rpm && \ + rm -f cuda-repo-rhel7-*.rpm && \ + yum install -y cuda-10-1 && \ + yum clean all + +RUN yum install -y \ + nasm \ + libass-devel \ + libtheora-devel \ + libvorbis-devel \ + freetype-devel + +RUN version=4.2.1 && \ + source scl_source enable devtoolset-8 && \ + cd /tmp && \ + curl -sSLO http://ffmpeg.org/releases/ffmpeg-${version}.tar.gz && \ + tar -xf ffmpeg-${version}.tar.gz && \ + cd ffmpeg-${version} && \ + ./configure --prefix=/usr/local --enable-gpl --enable-libfreetype --enable-avresample --enable-shared --disable-static --enable-pic && \ + make install && \ + cd .. && \ + rm -rf ffmpeg-${version}* + +RUN version=1.10.5 && \ + source scl_source enable devtoolset-8 && \ + cd /tmp && \ + curl -sSLO https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-${version%.*}/hdf5-${version}/src/hdf5-${version}.tar.bz2 && \ + tar -xf hdf5-${version}.tar.bz2 && \ + cd hdf5-${version} && \ + cmake -S. -B build -G Ninja \ + -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local \ + && \ + ninja -C build install && \ + cd .. && \ + rm -rf hdf5-${version}* + +RUN yum install -y \ + libpng-devel \ + jasper-devel \ + openexr-devel \ + libwebp-devel \ + libjpeg-turbo-devel \ + freeglut-devel \ + mesa-libGL-devel \ + libtiff-devel \ + libdc1394-devel \ + tbb-devel \ + eigen3-devel \ + boost-devel \ + boost-thread \ + libv4l-devel \ + openblas-devel \ + lapack-devel \ + gstreamer-plugins-base-devel \ + tesseract-devel \ + harfbuzz-devel \ + && \ + yum clean all + +ENV Qt5_DIR /opt/qt5/5.12.6/gcc_64/lib/cmake/Qt5 +ADD qtifwsilent.qs /tmp/qtifwsilent.qs +RUN version=5.12.6 && \ + cd /tmp && \ + curl -sSLO https://download.qt.io/official_releases/qt/${version%.*}/${version}/qt-opensource-linux-x64-${version}.run && \ + chmod +x qt-opensource-linux-x64-${version}.run && \ + env QT_INSTALL_DIR=/opt/qt5 ./qt-opensource-linux-x64-${version}.run --script qtifwsilent.qs -platform minimal && \ + rm -f qt-opensource-linux-x64-${version}.run && \ + rm -f qtifwsilent.qs && \ + version=6 && \ + cd /opt && \ + curl -sSLO https://github.com/probonopd/linuxdeployqt/releases/download/${version}/linuxdeployqt-${version}-x86_64.AppImage && \ + chmod +x linuxdeployqt-${version}-x86_64.AppImage && \ + ./linuxdeployqt-${version}-x86_64.AppImage --appimage-extract && \ + mv squashfs-root linuxdeployqt-${version} && \ + ln -s /opt/linuxdeployqt-${version}/AppRun /usr/local/bin/linuxdeployqt + +RUN version=3.4.8 && \ + source scl_source enable devtoolset-8 && \ + cd /tmp && \ + curl -sSL -o opencv-${version}.zip https://github.com/opencv/opencv/archive/${version}.zip && \ + unzip opencv-${version}.zip && \ + curl -sSL -o opencv_contrib-${version}.zip https://github.com/opencv/opencv_contrib/archive/${version}.zip && \ + unzip opencv_contrib-${version}.zip && \ + cd opencv-${version} && \ + export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig && \ + cmake -S. -B build -G Ninja \ + -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local \ + -D PYTHON_DEFAULT_EXECUTABLE=/usr/bin/python3 \ + -D OPENCV_EXTRA_MODULES_PATH=/tmp/opencv_contrib-${version}/modules \ + -D ENABLE_CXX11=ON \ + -D BUILD_EXAMPLES=OFF \ + -D BUILD_PACKAGE=OFF \ + -D BUILD_TESTS=OFF \ + -D BUILD_PERF_TESTS=OFF \ + -D BUILD_DOCS=OFF \ + -D OPENCV_ENABLE_NONFREE=OFF \ + -D WITH_CUDA=ON \ + -D WITH_CUBLAS=ON \ + -D BUILD_opencv_cudacodec=OFF \ + -D WITH_EIGEN=ON \ + -D WITH_FFMPEG=ON \ + -D WITH_IPP=ON \ + -D WITH_JASPER=ON -D BUILD_JASPER=OFF\ + -D WITH_JPEG=ON -D BUILD_JPEG=OFF\ + -D WITH_LAPACK=ON \ + -D WITH_MATLAB=OFF \ + -D WITH_OPENCLAMDBLAS=OFF \ + -D WITH_OPENEXR=ON -D BUILD_OPENEXR=OFF\ + -D WITH_OPENGL=ON \ + -D WITH_PNG=ON -D BUILD_PNG=OFF \ + -D WITH_PROTOBUF=ON -D BUILD_PROTOBUF=OFF\ + -D WITH_QT=ON \ + -D WITH_TBB=OFF \ + -D WITH_TIFF=ON -D BUILD_TIFF=OFF \ + -D WITH_WEBP=ON -D BUILD_WEBP=OFF \ + -D WITH_ZLIB=ON -D BUILD_ZLIB=OFF \ + -D WITH_V4L=ON \ + && \ + ninja -C build install + +ENV MXNet_DIR /opt/mxnet-3.5.1 +RUN version=1.5.1 && \ + source scl_source enable devtoolset-8 && \ + cd /opt && \ + curl -sSLO https://github.com/apache/incubator-mxnet/releases/download/${version}/apache-mxnet-src-${version}-incubating.tar.gz && \ + tar -xf apache-mxnet-src-${version}-incubating.tar.gz && \ + rm -f apache-mxnet-src-${version}-incubating.tar.gz && \ + mv apache-mxnet-src-${version}-incubating mxnet-${version} && \ + cd mxnet-${version} && \ + cmake -S. -B build -G Ninja \ + -D CMAKE_CXX_STANDARD=14 -D USE_CXX14_IF_AVAILABLE=ON \ + -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local \ + -D USE_CUDA=ON -D USE_CUDNN=ON -D USE_NCCL=OFF \ + -D USE_OPENCV=ON -D USE_OPENMP=ON \ + -D USE_LAPACK=ON -D USE_MKL_IF_AVAILABLE=OFF \ + -D USE_DIST_KVSTORE=OFF \ + -D USE_CPP_PACKAGE=ON \ + -D USE_SIGNAL_HANDLER=ON \ + -D ENABLE_CUDA_RTC=ON \ + -D BUILD_CPP_EXAMPLES=OFF \ + -D USE_GPERFTOOLS=OFF \ + -D USE_JEMALLOC=OFF \ + && \ + ninja -C build + +RUN version=2.3.0 && \ + source scl_source enable devtoolset-8 && \ + cd /tmp && \ + curl -sSL -o pybind11-${version}.tar.gz https://github.com/pybind/pybind11/archive/v${version}.tar.gz && \ + tar -xf pybind11-${version}.tar.gz && \ + cd pybind11-${version} && \ + cmake -S. -B build -G Ninja \ + -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local \ + -DPYBIND11_TEST=off \ + && \ + ninja -C build install && \ + cd .. && \ + rm -rf pybind11-${version}* + +RUN version=2.2.1 && \ + source scl_source enable devtoolset-8 && \ + cd /tmp && \ + curl -sSL -o rpclib-${version}.tar.gz https://github.com/rpclib/rpclib/archive/v2.2.1.tar.gz && \ + tar -xf rpclib-${version}.tar.gz && \ + cd rpclib-${version} && \ + cmake -S. -B build -G Ninja \ + -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local \ + && \ + ninja -C build install && \ + cd .. && \ + rm -rf rpclib-${version}* + +RUN yum install -y \ + openssl-devel \ + libffi-devel \ + && \ + yum clean all + +RUN version=3.7.5 && \ + source scl_source enable devtoolset-8 && \ + cd /tmp && \ + curl -sSLO https://www.python.org/ftp/python/${version}/Python-${version}.tgz && \ + tar -xf Python-${version}.tgz && \ + cd Python-${version} && \ + ./configure \ + --prefix=/usr \ + --enable-optimizations \ + --enable-shared \ + --without-ensurepip \ + --with-system-expat \ + --with-system-ffi \ + && \ + make -j$(nproc) altinstall && \ + cd .. && \ + rm -rf Pyhon-${version}* && \ + ldconfig + +ADD agki-nas01.imp.fu-berlin.de-ca-cert.crt /etc/pki/ca-trust/source/anchors/agki-nas01.imp.fu-berlin.de-ca-cert.crt +RUN update-ca-trust diff --git a/centos-7/agki-nas01.imp.fu-berlin.de-ca-cert.crt b/centos-7/agki-nas01.imp.fu-berlin.de-ca-cert.crt new file mode 100644 index 0000000000000000000000000000000000000000..7f84fd5a7d56da924725a070de4d394ee3abe8e2 --- /dev/null +++ b/centos-7/agki-nas01.imp.fu-berlin.de-ca-cert.crt @@ -0,0 +1,25 @@ +-----BEGIN CERTIFICATE----- +MIIEPzCCAyegAwIBAgIJAOyqoPAa3NfpMA0GCSqGSIb3DQEBCwUAMIGaMQswCQYD +VQQGEwJERTEPMA0GA1UECAwGQmVybGluMQ8wDQYDVQQHDAZCZXJsaW4xEjAQBgNV +BAoMCUZVIEJlcmxpbjEYMBYGA1UECwwPQmlvcm9ib3RpY3MgTGFiMREwDwYDVQQD +DAhSb2JvRmlzaDEoMCYGCSqGSIb3DQEJARYZbW9lbmNrQHplZGF0LmZ1LWJlcmxp +bi5kZTAeFw0xODEwMDQxMjA0MDJaFw0yODEwMDExMjA0MDJaMIGaMQswCQYDVQQG +EwJERTEPMA0GA1UECAwGQmVybGluMQ8wDQYDVQQHDAZCZXJsaW4xEjAQBgNVBAoM +CUZVIEJlcmxpbjEYMBYGA1UECwwPQmlvcm9ib3RpY3MgTGFiMREwDwYDVQQDDAhS +b2JvRmlzaDEoMCYGCSqGSIb3DQEJARYZbW9lbmNrQHplZGF0LmZ1LWJlcmxpbi5k +ZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAORjbFrj8BZpKJek3hIN +0jLRe2qt2JQU2OeCRRblsf4T/2DQAl/aKRNwuEyuDa+qqLIOpiHvABrhyZIG004k +cCsQ9y7lVXLQSJSrnh9ZoBJjMak0LIH1s26O2Ga8CfZUSkVv9naWQdDu4jF6FGj1 +3laRVJu/ode/cBooP/ZQmEVtjAqvV8HqAhbJ3e2Syg9XAUvMYgtvsAoT4/dYwcN3 +D8etb/JUQgok3cxYr3WUCTT6LU4s/gk/jCPAzkdGVGRIDdmRVZezV8KwKYNsMgVC +9W1d8klU1wovqlfsZJFIXnkK25iwQ+rDHZI/qLvTWpV0Pp7cgCoXX0dProgvs8vV +pAkCAwEAAaOBhTCBgjAkBgNVHREEHTAbgRltb2VuY2tAemVkYXQuZnUtYmVybGlu +LmRlMA8GA1UdEwQIMAYBAf8CAQAwNgYJYIZIAYb4QgENBCkWJ21vZF9zc2wgZ2Vu +ZXJhdGVkIGN1c3RvbSBDQSBjZXJ0aWZpY2F0ZTARBglghkgBhvhCAQEEBAMCAgQw +DQYJKoZIhvcNAQELBQADggEBAN/C2ly2kYGEK2Z1y978jSEPgnN8NmhAgCAzv1jT +7D1ooKf0vDhv5WOt5+ESizlWFlBMYBwvl4di+vz6uZF0rHy9Pvdfrzerhy9bkTaq +JHOPhcvUjDR8UkxcIcPQt8Yn5c5cOdVMlCh1ztlk3a0sic9SrP5YsnxPhmUoUHld +c0xd20vh6+IyH38SnOOtoztZRjkk+VWAcTRzbvOhknBKuDJ4QXluW2ArxmFbg4EY +E0RPrrOkyHKUr86Srpqk5r3J9VZHfTn0pqYcWITE0Qjh6EMJNGD2epeXVF9RISYE ++GoIQDhFw3ZDaNJ3fvbwFQd7hhxrBJMpNC4nJVyBvnU8Tnc= +-----END CERTIFICATE----- diff --git a/centos-7/qtifwsilent.qs b/centos-7/qtifwsilent.qs new file mode 100644 index 0000000000000000000000000000000000000000..e421e72486e456ada45d4ae938cd574c8fa4770f --- /dev/null +++ b/centos-7/qtifwsilent.qs @@ -0,0 +1,51 @@ +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.5126.gcc_64"); + widget.selectComponent("qt.qt5.5126.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); +}