ARG CUDA_TAG=7.0 ARG OS_TAG=7 FROM alicevision/alicevision:2.2.0-centos${OS_TAG}-cuda${CUDA_TAG} LABEL maintainer="AliceVision Team alicevision-team@googlegroups.com" # Execute with nvidia docker (https://github.com/nvidia/nvidia-docker/wiki/Installation-(version-2.0)) # docker run -it --runtime=nvidia meshroom ENV MESHROOM_DEV=/opt/Meshroom \ MESHROOM_BUILD=/tmp/Meshroom_build \ MESHROOM_BUNDLE=/opt/Meshroom_bundle \ QT_DIR=/opt/qt/5.13.0/gcc_64 \ PATH="${PATH}:${MESHROOM_BUNDLE}" # Workaround for qmlAlembic/qtAliceVision builds: fuse lib/lib64 folders RUN cp -rf ${AV_INSTALL}/lib/* ${AV_INSTALL}/lib64 && rm -rf ${AV_INSTALL}/lib && ln -s ${AV_INSTALL}/lib64 ${AV_INSTALL}/lib # Install libs needed by Qt RUN yum install -y \ flex \ fontconfig \ freetype \ glib2 \ libICE \ libX11 \ libxcb \ libXext \ libXi \ libXrender \ libSM \ libXt-devel \ libGLU-devel \ mesa-libOSMesa-devel \ mesa-libGL-devel \ mesa-libGLU-devel \ xcb-util-keysyms \ xcb-util-image # Install Python2 RUN yum install -y python-devel && curl https://bootstrap.pypa.io/get-pip.py -o /tmp/get-pip.py && python /tmp/get-pip.py && pip install --upgrade pip COPY . "${MESHROOM_DEV}" WORKDIR "${MESHROOM_DEV}" # Install Meshroom requirements and freeze bundle RUN pip install -r dev_requirements.txt -r requirements.txt && python setup.py install_exe -d "${MESHROOM_BUNDLE}" && \ find ${MESHROOM_BUNDLE} -name "*Qt5Web*" -delete && \ find ${MESHROOM_BUNDLE} -name "*Qt5Designer*" -delete && \ rm -rf ${MESHROOM_BUNDLE}/lib/PySide2/typesystems/ ${MESHROOM_BUNDLE}/lib/PySide2/examples/ ${MESHROOM_BUNDLE}/lib/PySide2/include/ ${MESHROOM_BUNDLE}/lib/PySide2/Qt/translations/ ${MESHROOM_BUNDLE}/lib/PySide2/Qt/resources/ && \ rm ${MESHROOM_BUNDLE}/lib/PySide2/QtWeb* && \ rm ${MESHROOM_BUNDLE}/lib/PySide2/pyside2-lupdate ${MESHROOM_BUNDLE}/lib/PySide2/pyside2-rcc # Install Qt (to build plugins) WORKDIR /tmp/qt # Qt version in specified in docker/qt-installer-noninteractive.qs RUN curl -LO http://download.qt.io/official_releases/online_installers/qt-unified-linux-x64-online.run && \ chmod u+x qt-unified-linux-x64-online.run && \ ./qt-unified-linux-x64-online.run --verbose --platform minimal --script "${MESHROOM_DEV}/docker/qt-installer-noninteractive.qs" && \ rm ./qt-unified-linux-x64-online.run WORKDIR ${MESHROOM_BUILD} # Build Meshroom plugins RUN cmake "${MESHROOM_DEV}" -DALICEVISION_ROOT="${AV_INSTALL}" -DQT_DIR="${QT_DIR}" -DCMAKE_INSTALL_PREFIX="${MESHROOM_BUNDLE}/qtPlugins" # RUN make -j8 qtOIIO # RUN make -j8 qmlAlembic # RUN make -j8 qtAliceVision RUN make -j8 && cd /tmp && rm -rf ${MESHROOM_BUILD} RUN mv "${AV_BUNDLE}" "${MESHROOM_BUNDLE}/aliceVision" RUN rm -rf ${MESHROOM_BUNDLE}/aliceVision/share/doc ${MESHROOM_BUNDLE}/aliceVision/share/eigen3 ${MESHROOM_BUNDLE}/aliceVision/share/fonts ${MESHROOM_BUNDLE}/aliceVision/share/lemon ${MESHROOM_BUNDLE}/aliceVision/share/libraw ${MESHROOM_BUNDLE}/aliceVision/share/man/ aliceVision/share/pkgconfig