diff --git a/centos/Dockerfile b/centos/Dockerfile index 2b748b1f7fd0075171d09dea822b655239a17e31..d390c51bc8edcac7fcfe969102061a25b9c153ae 100644 --- a/centos/Dockerfile +++ b/centos/Dockerfile @@ -4,7 +4,7 @@ FROM centos:7 LABEL maintainer="Moritz Maxeiner <moritz.maxeiner@fu-berlin.de>" LABEL authors="Moritz Maxeiner <moritz.maxeiner@fu-berlin.de>" -ENV BASH_ENV "/etc/profile" +ENV BASH_ENV="/etc/profile" RUN yum install -y \ centos-release-scl \ epel-release && \ @@ -35,8 +35,8 @@ ADD bash/toolchain.sh /etc/profile.d/toolchain.sh ADD bash/ld-library-path.sh /etc/profile.d/ld-library-path.sh # CMake -RUN version=3.19.4 && \ - yum install -y \ +ARG CMake_VERSION=3.21.2 +RUN yum install -y \ curl-devel \ expat-devel \ zlib-devel \ @@ -49,13 +49,13 @@ RUN version=3.19.4 && \ yum clean all && \ source /etc/profile && \ cd /tmp && \ - curl -sSLO https://cmake.org/files/v${version%.*}/cmake-${version}.tar.gz && \ - tar -xf cmake-${version}.tar.gz && \ - cd cmake-${version} && \ + curl -sSLO https://cmake.org/files/v${CMake_VERSION%.*}/cmake-${CMake_VERSION}.tar.gz && \ + tar -xf cmake-${CMake_VERSION}.tar.gz && \ + cd cmake-${CMake_VERSION} && \ ./bootstrap --system-libs --no-system-libarchive --no-system-jsoncpp --prefix=/usr/local && \ make install -j$(nproc --all) && \ cd .. && \ - rm -rf cmake-${version}* + rm -rf cmake-${CMake_VERSION}* # Ninja RUN yum install -y ninja-build && \ @@ -70,8 +70,8 @@ RUN yum install -y \ yum clean all # FFmpeg -RUN version=4.2.4 && \ - yum install -y \ +ARG FFmpeg_VERSION=4.2.4 +RUN yum install -y \ nasm \ libass-devel \ libtheora-devel \ @@ -87,52 +87,118 @@ RUN version=4.2.4 && \ make install && \ cd .. && \ rm -rf nv-codec-headers && \ - curl -sSLO http://ffmpeg.org/releases/ffmpeg-${version}.tar.gz && \ - tar -xf ffmpeg-${version}.tar.gz && \ - cd ffmpeg-${version} && \ + curl -sSLO http://ffmpeg.org/releases/ffmpeg-${FFmpeg_VERSION}.tar.gz && \ + tar -xf ffmpeg-${FFmpeg_VERSION}.tar.gz && \ + cd ffmpeg-${FFmpeg_VERSION} && \ ./configure --prefix=/usr/local --enable-gpl --enable-nvenc --enable-libfreetype --enable-avresample --enable-shared --disable-static --enable-pic && \ make install && \ cd .. && \ - rm -rf ffmpeg-${version}* + rm -rf ffmpeg-${FFmpeg_VERSION}* # HDF -RUN version=1.10.7 && \ - yum install -y \ +ARG HDF_VERSION=1.10.7 +RUN yum install -y \ bzip2 \ && \ yum clean all && \ source /etc/profile && \ 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} && \ + curl -sSLO https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-${HDF_VERSION%.*}/hdf5-${HDF_VERSION}/src/hdf5-${HDF_VERSION}.tar.bz2 && \ + tar -xf hdf5-${HDF_VERSION}.tar.bz2 && \ + cd hdf5-${HDF_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}* + rm -rf hdf5-${HDF_VERSION}* # Qt -ENV Qt5_DIR /opt/qt5/5.12.10/gcc_64/lib/cmake/Qt5 -ADD qtifwsilent.qs /tmp/qtifwsilent.qs -RUN version=5.12.10 && \ - yum install -y \ - libxkbcommon-x11 \ - pulseaudio-libs \ +ARG Qt5_VERSION=5.15.2 +RUN yum install -y \ + alsa-lib-devel \ + at-spi2-atk-devel \ + bison \ + bluez-libs-devel \ + clang-devel \ + cups-devel \ + dbus-devel \ + double-conversion-devel \ + egl-wayland-devel \ + flex \ + flite-devel \ + fontconfig-devel \ + freeglut-devel \ + freetype-devel \ + gperf \ + gstreamer-plugins-base-devel \ + gstreamer1-devel \ + gstreamer1-plugins-base-devel \ + gtk3-devel \ + harfbuzz-devel \ + jasper-devel \ + libcap-devel \ + libdc1394-devel \ + libicu-devel \ + libinput-devel \ + libjpeg-turbo-devel \ + libmng-devel \ + libpng-devel \ + libticonv-devel \ + libtiff-devel \ + libv4l-devel \ + libwebp-devel \ + libxcb \ + libxcb-devel \ + libXcomposite-devel \ + libXcursor-devel \ + libxkbcommon-devel \ + libxkbcommon-x11-devel \ + libXrandr-devel \ + libxslt-devel \ + libXtst-devel \ + libzstd-devel \ + llvm-devel \ + mesa-libEGL-devel \ + mesa-libgbm-devel \ + mesa-libGL-devel \ + nspr-devel \ + nss-devel \ + openssl11-devel \ + pciutils-devel \ + pcre2-devel \ + postgresql-devel \ + pulseaudio-libs-devel \ pulseaudio-libs-glib2 \ - gstreamer1-plugins-base \ + ruby \ + speech-dispatcher-devel \ + tesseract-devel \ + tslib-devel \ + vulkan-devel \ + wayland-devel \ + xcb-util \ + xcb-util-devel \ + xcb-util-image-devel \ + xcb-util-keysyms-devel \ + xcb-util-renderutil-devel \ + xcb-util-wm-devel \ && \ yum clean all && \ - echo -e "\n127.0.0.1 iapi.qt.io\n::1 iapi.qt.io" >> /etc/hosts && \ source /etc/profile && \ - 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 --verbose --script qtifwsilent.qs -platform minimal && \ - rm -f qt-opensource-linux-x64-${version}.run && \ - rm -f qtifwsilent.qs && \ - echo "/opt/qt5/${version}/gcc_64/lib" > /etc/ld.so.conf.d/qt5.conf + source scl_source enable devtoolset-8 && \ + cd /opt && \ + curl -sSLO https://download.qt.io/official_releases/qt/${Qt5_VERSION%.*}/${Qt5_VERSION}/single/qt-everywhere-src-${Qt5_VERSION}.tar.xz && \ + tar -xf qt-everywhere-src-${Qt5_VERSION}.tar.xz && \ + cd qt-everywhere-src-${Qt5_VERSION} && \ + mkdir build && \ + cd build && \ + ../configure -prefix "/opt/qt5/${Qt5_VERSION}" -opensource -confirm-license -no-feature-qdoc -skip qtwebengine -xcb -xcb-xlib -xcb-native-painting -openssl OPENSSL_INCDIR=/usr/include/openssl11 OPENSSL_LIBDIR=/usr/lib64/openssl11 && \ + make -j $(nproc) && \ + make install && \ + cd ../.. && \ + rm -rf qt-everywhere-src-${Qt5_VERSION}* && \ + echo "/opt/qt5/${Qt5_VERSION}/lib" > /etc/ld.so.conf.d/qt5.conf +ENV Qt5_DIR=/opt/qt5/${Qt5_VERSION}/lib/cmake/Qt5 # linuxdeployqt RUN version=6 && \ @@ -148,10 +214,11 @@ RUN version=6 && \ ln -s /opt/linuxdeployqt-${version}/AppRun /usr/local/bin/linuxdeployqt # Boost +ARG Boost_VERSION=1.73.0 RUN cd /tmp && \ - curl -sSLO https://boostorg.jfrog.io/artifactory/main/release/1.73.0/source/boost_1_73_0.tar.gz && \ - tar -xf boost_1_73_0.tar.gz && \ - cd boost_1_73_0 && \ + curl -sSLO https://boostorg.jfrog.io/artifactory/main/release/${Boost_VERSION}/source/boost_${Boost_VERSION//./_}.tar.gz && \ + tar -xf boost_${Boost_VERSION//./_}.tar.gz && \ + cd boost_${Boost_VERSION//./_} && \ ./bootstrap.sh \ --prefix=/opt/boost && \ ./b2 install \ @@ -165,21 +232,21 @@ RUN cd /tmp && \ ldconfig # fmt -RUN version=7.1.0 && \ - cd /tmp && \ - curl -sSLO https://github.com/fmtlib/fmt/releases/download/${version}/fmt-${version}.zip && \ - unzip fmt-${version}.zip && \ - cd fmt-${version} && \ +ARG fmt_VERSION=7.1.0 +RUN cd /tmp && \ + curl -sSLO https://github.com/fmtlib/fmt/releases/download/${fmt_VERSION}/fmt-${fmt_VERSION}.zip && \ + unzip fmt-${fmt_VERSION}.zip && \ + cd fmt-${fmt_VERSION} && \ cmake -S. -B build -G Ninja \ -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local \ && \ ninja -C build install && \ cd .. && \ - rm -rf fmt-${version}* + rm -rf fmt-${fmt_VERSION}* # OpenCV -RUN version=4.5.0 && \ - yum install -y \ +ARG OpenCV_VERSION=4.5.0 +RUN yum install -y \ libpng-devel \ jasper-devel \ libwebp-devel \ @@ -200,16 +267,16 @@ RUN version=4.5.0 && \ source /etc/profile && \ 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} && \ + curl -sSL -o opencv-${OpenCV_VERSION}.zip https://github.com/opencv/opencv/archive/${OpenCV_VERSION}.zip && \ + unzip opencv-${OpenCV_VERSION}.zip && \ + curl -sSL -o opencv_contrib-${OpenCV_VERSION}.zip https://github.com/opencv/opencv_contrib/archive/${OpenCV_VERSION}.zip && \ + unzip opencv_contrib-${OpenCV_VERSION}.zip && \ + cd opencv-${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 OPENCV_EXTRA_MODULES_PATH=/tmp/opencv_contrib-${OpenCV_VERSION}/modules \ -D ENABLE_CXX11=ON \ -D BUILD_EXAMPLES=OFF \ -D BUILD_PACKAGE=OFF \ @@ -250,10 +317,10 @@ RUN version=4.5.0 && \ && \ ninja -C build install && \ cd .. && \ - rm -rf opencv-${version}* opencv_contrib-${version}* + rm -rf opencv-${OpenCV_VERSION}* opencv_contrib-${OpenCV_VERSION}* # MXNet -ENV MXNet_DIR /opt/mxnet-1.6.0 +ENV MXNet_DIR=/opt/mxnet-1.6.0 ADD patches/mxnet-1.6.0-manual-cuda-arch-flags.patch /opt/mxnet-1.6.0-manual-cuda-arch-flags.patch RUN version=1.6.0 && \ source /etc/profile && \ @@ -285,44 +352,44 @@ RUN version=1.6.0 && \ ninja -C build # pybind11 -RUN version=2.6.0 && \ - source /etc/profile && \ +ARG pybind11_VERSION=2.7.1 +RUN source /etc/profile && \ 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} && \ + curl -sSL -o pybind11-${pybind11_VERSION}.tar.gz https://github.com/pybind/pybind11/archive/v${pybind11_VERSION}.tar.gz && \ + tar -xf pybind11-${pybind11_VERSION}.tar.gz && \ + cd pybind11-${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}* + rm -rf pybind11-${pybind11_VERSION}* # pylon (Basler cameras) -RUN version=5.2.0.13457 && \ - cd /tmp && \ - curl -sSLO https://www.baslerweb.com/fp-1551786516/media/downloads/software/pylon_software/pylon-${version}-x86_64.tar.gz && \ - tar -xf pylon-${version}-x86_64.tar.gz && \ - cd pylon-${version}-x86_64 && \ - tar -xf pylonSDK-${version}-x86_64.tar.gz && \ +ARG pylon_VERSION=5.2.0.13457 +RUN cd /tmp && \ + curl -sSLO https://www.baslerweb.com/fp-1551786516/media/downloads/software/pylon_software/pylon-${pylon_VERSION}-x86_64.tar.gz && \ + tar -xf pylon-${pylon_VERSION}-x86_64.tar.gz && \ + cd pylon-${pylon_VERSION}-x86_64 && \ + tar -xf pylonSDK-${pylon_VERSION}-x86_64.tar.gz && \ mv pylon5 /opt/pylon5 && \ cd .. && \ - rm -rf pylon-${version}* + rm -rf pylon-${pylon_VERSION}* ADD bash/pylon.sh /etc/profile.d/pylon.sh # CGAL -RUN version=5.2 && \ - yum install -y \ +ARG CGAL_VERSION=5.2 +RUN yum install -y \ gmp-devel \ mpfr-devel \ && \ yum clean all && \ source /etc/profile && \ cd /tmp && \ - curl -sSLO https://github.com/CGAL/cgal/releases/download/v${version}/CGAL-${version}.tar.xz && \ - tar -xf CGAL-${version}.tar.xz && \ - cd CGAL-${version} && \ + curl -sSLO https://github.com/CGAL/cgal/releases/download/v${CGAL_VERSION}/CGAL-${CGAL_VERSION}.tar.xz && \ + tar -xf CGAL-${CGAL_VERSION}.tar.xz && \ + cd CGAL-${CGAL_VERSION} && \ cmake -S. -B build -G Ninja \ -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local \ -DCGAL_INSTALL_LIB_DIR=lib -DCGAL_INSTALL_CMAKE_DIR="lib/cmake/CGAL" \ @@ -330,13 +397,13 @@ RUN version=5.2 && \ && \ ninja -C build install && \ cd .. && \ - rm -rf CGAL-${version}* + rm -rf CGAL-${CGAL_VERSION}* # glm -RUN version=0.9.9.8 && \ - cd /tmp && \ - curl -sSLO https://github.com/g-truc/glm/releases/download/${version}/glm-${version}.zip && \ - unzip glm-${version}.zip && \ +ARG glm_VERSION=0.9.9.8 +RUN cd /tmp && \ + curl -sSLO https://github.com/g-truc/glm/releases/download/${glm_VERSION}/glm-${glm_VERSION}.zip && \ + unzip glm-${glm_VERSION}.zip && \ mv glm /opt/glm && \ rm -rf glm* && \ echo "export glm_DIR=/opt/glm/cmake/glm" > /etc/profile.d/glm.sh @@ -488,60 +555,3 @@ RUN python3.9 -m pip --no-cache-dir install -U pip && \ pandas \ h5py \ deprecation - - -# xsimd -RUN name=xsimd && \ - version=7.4.9 && \ - cd /tmp && \ - curl -sSL https://github.com/xtensor-stack/${name}/archive/${version}.tar.gz -o ${name}-${version}.tar.gz && \ - tar -xf ${name}-${version}.tar.gz && \ - cd ${name}-${version} && \ - cmake -S. -B build -G Ninja \ - -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local \ - && \ - ninja -C build install && \ - cd .. && \ - rm -rf ${name}-${version}* - -# xtl -RUN name=xtl && \ - version=0.7.0 && \ - cd /tmp && \ - curl -sSL https://github.com/xtensor-stack/${name}/archive/${version}.tar.gz -o ${name}-${version}.tar.gz && \ - tar -xf ${name}-${version}.tar.gz && \ - cd ${name}-${version} && \ - cmake -S. -B build -G Ninja \ - -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local \ - && \ - ninja -C build install && \ - cd .. && \ - rm -rf ${name}-${version}* - -# xtensor -RUN name=xtensor && \ - version=0.23.0 && \ - cd /tmp && \ - curl -sSL https://github.com/xtensor-stack/${name}/archive/${version}.tar.gz -o ${name}-${version}.tar.gz && \ - tar -xf ${name}-${version}.tar.gz && \ - cd ${name}-${version} && \ - cmake -S. -B build -G Ninja \ - -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local \ - && \ - ninja -C build install && \ - cd .. && \ - rm -rf ${name}-${version}* - -# xtensor-python -RUN name=xtensor-python && \ - version=0.25.0 && \ - cd /tmp && \ - curl -sSL https://github.com/xtensor-stack/${name}/archive/${version}.tar.gz -o ${name}-${version}.tar.gz && \ - tar -xf ${name}-${version}.tar.gz && \ - cd ${name}-${version} && \ - cmake -S. -B build -G Ninja \ - -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local \ - && \ - ninja -C build install && \ - cd .. && \ - rm -rf ${name}-${version}* diff --git a/centos/qtifwsilent.qs b/centos/qtifwsilent.qs deleted file mode 100644 index de213aeec8bc2cccfa4d2d5b35b19fb2f3454ff9..0000000000000000000000000000000000000000 --- a/centos/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.51210.gcc_64"); - widget.selectComponent("qt.qt5.51210.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); -}