mirror of
https://github.com/alicevision/Meshroom.git
synced 2025-08-06 10:18:42 +02:00
[docker] update dockerfile for python2
- move to docker folder - split between deps and meshroom - new extract files script
This commit is contained in:
parent
f934cb4454
commit
a4638acb13
5 changed files with 179 additions and 80 deletions
|
@ -1,74 +0,0 @@
|
||||||
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
|
|
||||||
|
|
||||||
|
|
68
docker/Dockerfile_centos_deps_py2
Normal file
68
docker/Dockerfile_centos_deps_py2
Normal file
|
@ -0,0 +1,68 @@
|
||||||
|
ARG AV_VERSION
|
||||||
|
ARG CUDA_VERSION
|
||||||
|
ARG CENTOS_VERSION=7
|
||||||
|
FROM alicevision/alicevision:${AV_VERSION}-centos${CENTOS_VERSION}-cuda${CUDA_VERSION}
|
||||||
|
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/Qt5.14.1/5.14.1/gcc_64 \
|
||||||
|
QT_CI_LOGIN=alicevisionjunk@gmail.com \
|
||||||
|
QT_CI_PASSWORD=azerty1.
|
||||||
|
|
||||||
|
WORKDIR ${MESHROOM_BUNDLE}
|
||||||
|
RUN mv "${AV_BUNDLE}" "${MESHROOM_BUNDLE}/aliceVision" && \
|
||||||
|
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 \
|
||||||
|
${MESHROOM_BUNDLE}/aliceVision/share/pkgconfig
|
||||||
|
|
||||||
|
# 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 \
|
||||||
|
libxkbcommon-x11
|
||||||
|
|
||||||
|
# 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 ./*requirements.txt ./setup.py ${MESHROOM_DEV}/
|
||||||
|
|
||||||
|
# Install Meshroom requirements and freeze bundle
|
||||||
|
WORKDIR "${MESHROOM_DEV}"
|
||||||
|
RUN pip install -r dev_requirements.txt -r requirements.txt
|
||||||
|
|
||||||
|
# Install Qt (to build plugins)
|
||||||
|
WORKDIR /tmp/qt
|
||||||
|
COPY dl/qt.run /tmp/qt
|
||||||
|
COPY ./docker/qt-installer-noninteractive.qs ${MESHROOM_DEV}/docker/
|
||||||
|
RUN chmod +x qt.run && \
|
||||||
|
./qt.run --verbose --platform minimal --script "${MESHROOM_DEV}/docker/qt-installer-noninteractive.qs" && \
|
||||||
|
rm qt.run
|
||||||
|
|
72
docker/Dockerfile_centos_py2
Normal file
72
docker/Dockerfile_centos_py2
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
ARG MESHROOM_VERSION
|
||||||
|
ARG AV_VERSION
|
||||||
|
ARG CUDA_VERSION
|
||||||
|
ARG CENTOS_VERSION
|
||||||
|
FROM alicevision/meshroom-deps:${MESHROOM_VERSION}-av${AV_VERSION}-centos${CENTOS_VERSION}-cuda${CUDA_VERSION}-py2
|
||||||
|
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 -p 2222:22 --name meshroom -v</path/to/your/data>:/data alicevision/meshroom:develop-av2.2.8.develop-ubuntu20.04-cuda11.0
|
||||||
|
# ssh -p 2222 -X root@<docker host> /opt/Meshroom_bundle/Meshroom # Password is 'meshroom'
|
||||||
|
|
||||||
|
ENV MESHROOM_DEV=/opt/Meshroom \
|
||||||
|
MESHROOM_BUILD=/tmp/Meshroom_build \
|
||||||
|
MESHROOM_BUNDLE=/opt/Meshroom_bundle \
|
||||||
|
AV_INSTALL=/opt/AliceVision_install \
|
||||||
|
QT_DIR=/opt/Qt5.14.1/5.14.1/gcc_64 \
|
||||||
|
PATH="${PATH}:${MESHROOM_BUNDLE}" \
|
||||||
|
OPENIMAGEIO_LIBRARY=/opt/AliceVision_install/lib
|
||||||
|
|
||||||
|
COPY *.txt *.md *.py ${MESHROOM_DEV}/
|
||||||
|
COPY ./docs ${MESHROOM_DEV}/docs
|
||||||
|
COPY ./meshroom ${MESHROOM_DEV}/meshroom
|
||||||
|
COPY ./tests ${MESHROOM_DEV}/tests
|
||||||
|
COPY ./bin ${MESHROOM_DEV}/bin
|
||||||
|
|
||||||
|
WORKDIR ${MESHROOM_DEV}
|
||||||
|
|
||||||
|
RUN 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/ \
|
||||||
|
${MESHROOM_BUNDLE}/lib/PySide2/QtWeb* \
|
||||||
|
${MESHROOM_BUNDLE}/lib/PySide2/pyside2-lupdate \
|
||||||
|
${MESHROOM_BUNDLE}/lib/PySide2/rcc \
|
||||||
|
${MESHROOM_BUNDLE}/lib/PySide2/designer
|
||||||
|
|
||||||
|
WORKDIR ${MESHROOM_BUILD}
|
||||||
|
|
||||||
|
# Build Meshroom plugins
|
||||||
|
RUN cmake "${MESHROOM_DEV}" -DALICEVISION_ROOT="${AV_INSTALL}" -DCMAKE_INSTALL_PREFIX="${MESHROOM_BUNDLE}/qtPlugins"
|
||||||
|
RUN make "-j$(nproc)" qtOIIO
|
||||||
|
|
||||||
|
RUN make "-j$(nproc)" qmlAlembic
|
||||||
|
RUN make "-j$(nproc)" qtAliceVision
|
||||||
|
RUN make "-j$(nproc)" && \
|
||||||
|
rm -rf "${MESHROOM_BUILD}" "${MESHROOM_DEV}" \
|
||||||
|
${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 \
|
||||||
|
${MESHROOM_BUNDLE}/aliceVision/share/pkgconfig
|
||||||
|
|
||||||
|
# Enable SSH X11 forwarding, needed when the Docker image
|
||||||
|
# is run on a remote machine
|
||||||
|
RUN yum -y install openssh-server xauth mesa-dri-drivers && \
|
||||||
|
systemctl enable sshd && \
|
||||||
|
mkdir -p /run/sshd
|
||||||
|
|
||||||
|
RUN sed -i "s/^.*X11Forwarding.*$/X11Forwarding yes/; s/^.*X11UseLocalhost.*$/X11UseLocalhost no/; s/^.*PermitRootLogin prohibit-password/PermitRootLogin yes/; s/^.*X11UseLocalhost.*/X11UseLocalhost no/;" /etc/ssh/sshd_config
|
||||||
|
RUN echo "root:meshroom" | chpasswd
|
||||||
|
|
||||||
|
WORKDIR /root
|
||||||
|
|
||||||
|
EXPOSE 22
|
||||||
|
CMD bash -c "test -s /etc/machine-id || systemd-machine-id-setup; sshd-keygen; /usr/sbin/sshd -D"
|
||||||
|
|
|
@ -1,10 +1,15 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -e
|
set -ex
|
||||||
|
|
||||||
|
|
||||||
test -z "$MESHROOM_VERSION" && MESHROOM_VERSION="$(git rev-parse --abbrev-ref HEAD)-$(git rev-parse --short HEAD)"
|
test -z "$MESHROOM_VERSION" && MESHROOM_VERSION="$(git rev-parse --abbrev-ref HEAD)-$(git rev-parse --short HEAD)"
|
||||||
test -z "$AV_VERSION" && echo "AliceVision version not specified, set AV_VERSION in the environment" && exit 1
|
test -z "$AV_VERSION" && echo "AliceVision version not specified, set AV_VERSION in the environment" && exit 1
|
||||||
test -z "$CUDA_VERSION" && CUDA_VERSION="10.2"
|
test -z "$CUDA_VERSION" && CUDA_VERSION="10.2"
|
||||||
test -z "$CENTOS_VERSION" && CENTOS_VERSION=7
|
test -z "$CENTOS_VERSION" && CENTOS_VERSION="7"
|
||||||
|
test -z "$MESHROOM_PYTHON2" || echo "========== Build for Python 2 =========="
|
||||||
|
test -z "$MESHROOM_PYTHON2" || export PYTHON2_DOCKER_EXT="-py2"
|
||||||
|
test -z "$MESHROOM_PYTHON2" || export PYTHON2_DOCKERFILE_EXT="_py2"
|
||||||
|
test -z "$MESHROOM_PYTHON2" && echo "========== Build for Python 3 =========="
|
||||||
|
|
||||||
test -d docker || (
|
test -d docker || (
|
||||||
echo This script must be run from the top level Meshroom directory
|
echo This script must be run from the top level Meshroom directory
|
||||||
|
@ -22,8 +27,8 @@ docker build \
|
||||||
--build-arg "CUDA_VERSION=${CUDA_VERSION}" \
|
--build-arg "CUDA_VERSION=${CUDA_VERSION}" \
|
||||||
--build-arg "CENTOS_VERSION=${CENTOS_VERSION}" \
|
--build-arg "CENTOS_VERSION=${CENTOS_VERSION}" \
|
||||||
--build-arg "AV_VERSION=${AV_VERSION}" \
|
--build-arg "AV_VERSION=${AV_VERSION}" \
|
||||||
--tag "alicevision/meshroom-deps:${MESHROOM_VERSION}-av${AV_VERSION}-centos${CENTOS_VERSION}-cuda${CUDA_VERSION}" \
|
--tag "alicevision/meshroom-deps:${MESHROOM_VERSION}-av${AV_VERSION}-centos${CENTOS_VERSION}-cuda${CUDA_VERSION}${PYTHON2_DOCKER_EXT}" \
|
||||||
-f docker/Dockerfile_centos_deps .
|
-f docker/Dockerfile_centos_deps${PYTHON2_DOCKERFILE_EXT} .
|
||||||
|
|
||||||
# Meshroom
|
# Meshroom
|
||||||
docker build \
|
docker build \
|
||||||
|
@ -32,6 +37,6 @@ docker build \
|
||||||
--build-arg "CUDA_VERSION=${CUDA_VERSION}" \
|
--build-arg "CUDA_VERSION=${CUDA_VERSION}" \
|
||||||
--build-arg "CENTOS_VERSION=${CENTOS_VERSION}" \
|
--build-arg "CENTOS_VERSION=${CENTOS_VERSION}" \
|
||||||
--build-arg "AV_VERSION=${AV_VERSION}" \
|
--build-arg "AV_VERSION=${AV_VERSION}" \
|
||||||
--tag "alicevision/meshroom:${MESHROOM_VERSION}-av${AV_VERSION}-centos${CENTOS_VERSION}-cuda${CUDA_VERSION}" \
|
--tag "alicevision/meshroom:${MESHROOM_VERSION}-av${AV_VERSION}-centos${CENTOS_VERSION}-cuda${CUDA_VERSION}${PYTHON2_DOCKER_EXT}" \
|
||||||
-f docker/Dockerfile_centos .
|
-f docker/Dockerfile_centos${PYTHON2_DOCKERFILE_EXT} .
|
||||||
|
|
||||||
|
|
28
docker/extract.sh
Executable file
28
docker/extract.sh
Executable file
|
@ -0,0 +1,28 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
AV_VERSION="2.2.10.hdri"
|
||||||
|
MESHROOM_VERSION="2020.0.1.hdri"
|
||||||
|
|
||||||
|
test -z "$MESHROOM_VERSION" && MESHROOM_VERSION="$(git rev-parse --abbrev-ref HEAD)-$(git rev-parse --short HEAD)"
|
||||||
|
test -z "$AV_VERSION" && echo "AliceVision version not specified, set AV_VERSION in the environment" && exit 1
|
||||||
|
test -z "$CUDA_VERSION" && CUDA_VERSION="10.2"
|
||||||
|
test -z "$CENTOS_VERSION" && CENTOS_VERSION="7"
|
||||||
|
test -z "$MESHROOM_PYTHON2" || echo "========== Build for Python 2 =========="
|
||||||
|
test -z "$MESHROOM_PYTHON2" || export PYTHON2_DOCKER_EXT="-py2"
|
||||||
|
test -z "$MESHROOM_PYTHON2" || export PYTHON2_DOCKERFILE_EXT="_py2"
|
||||||
|
test -z "$MESHROOM_PYTHON2" && echo "========== Build for Python 3 =========="
|
||||||
|
|
||||||
|
test -d docker || (
|
||||||
|
echo This script must be run from the top level Meshroom directory
|
||||||
|
exit 1
|
||||||
|
)
|
||||||
|
|
||||||
|
VERSION_NAME=${MESHROOM_VERSION}-av${AV_VERSION}-centos${CENTOS_VERSION}-cuda${CUDA_VERSION}${PYTHON2_DOCKER_EXT}
|
||||||
|
|
||||||
|
# Retrieve the Meshroom bundle folder
|
||||||
|
rm -rf ./Meshroom-${VERSION_NAME}
|
||||||
|
CID=$(docker create alicevision/meshroom:${VERSION_NAME})
|
||||||
|
docker cp ${CID}:/opt/Meshroom_bundle ./Meshroom-${VERSION_NAME}
|
||||||
|
docker rm ${CID}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue