Компиляция долларов США Pixar в контейнере Docker для функций Azure

Кто-нибудь пробовал скомпилировать доллары США Pixar в официальных образах Docker для функций Azure? Я пробовал следующий Dockerfile (вдохновленный https://github.com/leon/docker-gltf-to-udsz/blob/master/usd/Dockerfile):

FROM mcr.microsoft.com/azure-functions/node:2.0

RUN apt-get -qq update && apt-get install -y --no-install-recommends \
    git build-essential cmake nasm python2.7-dev python-pip python-jinja2 \
    libglew-dev libxrandr-dev libxcursor-dev libxinerama-dev libxi-dev zlib1g-dev && \
    rm -rf /var/lib/apt/lists/*

ENV USD_RELEASE="19.11"
ENV USD_SRC="/usr/src/usd"
ENV USD_INSTALL="/usr/local/usd"
ENV PYTHONPATH="${PYTHONPATH}:${USD_INSTALL}/lib/python"
ENV PATH="${PATH}:${USD_INSTALL}/bin"
RUN git clone --branch "v${USD_RELEASE}" --depth 1 https://github.com/PixarAnimationStudios/USD.git "${USD_SRC}"
RUN cd "${USD_SRC}" && \
    python ./build_scripts/build_usd.py -v --no-usdview "${USD_INSTALL}" && \
    rm -rf "${USD_SRC}" "${USD_INSTALL}/build" "${USD_INSTALL}/src"

Но при 52% сборка не выполняется с таким сообщением:

...
[ 52%] Building CXX object pxr/base/lib/gf/CMakeFiles/_gf.dir/wrapMatrix4f.cpp.o
[ 52%] Building CXX object pxr/base/lib/work/CMakeFiles/work.dir/threadLimits.cpp.o
[ 52%] Building CXX object pxr/base/lib/work/CMakeFiles/work.dir/utils.cpp.o
[ 52%] Linking CXX shared library libwork.so
[ 52%] Built target work
[ 52%] Building CXX object pxr/base/lib/gf/CMakeFiles/_gf.dir/wrapMatrix4d.cpp.o
c++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-6/README.Bugs> for instructions.
pxr/base/lib/tf/CMakeFiles/_tf.dir/build.make:782: recipe for target 'pxr/base/lib/tf/CMakeFiles/_tf.dir/wrapTestTfPython.cpp.o' failed
make[2]: *** [pxr/base/lib/tf/CMakeFiles/_tf.dir/wrapTestTfPython.cpp.o] Error 4
CMakeFiles/Makefile2:507: recipe for target 'pxr/base/lib/tf/CMakeFiles/_tf.dir/all' failed
make[1]: *** [pxr/base/lib/tf/CMakeFiles/_tf.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 52%] Building CXX object pxr/base/lib/vt/CMakeFiles/vt.dir/functions.cpp.o
[ 52%] Building CXX object pxr/base/lib/gf/CMakeFiles/_gf.dir/wrapMultiInterval.cpp.o
[ 52%] Building CXX object pxr/base/lib/vt/CMakeFiles/vt.dir/hash.cpp.o
[ 52%] Building CXX object pxr/base/lib/vt/CMakeFiles/vt.dir/streamOut.cpp.o
[ 52%] Building CXX object pxr/base/lib/vt/CMakeFiles/vt.dir/types.cpp.o
c++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-6/README.Bugs> for instructions.
pxr/base/lib/gf/CMakeFiles/_gf.dir/build.make:446: recipe for target 'pxr/base/lib/gf/CMakeFiles/_gf.dir/wrapMatrix4f.cpp.o' failed
make[2]: *** [pxr/base/lib/gf/CMakeFiles/_gf.dir/wrapMatrix4f.cpp.o] Error 4
make[2]: *** Waiting for unfinished jobs....
[ 52%] Building CXX object pxr/base/lib/vt/CMakeFiles/vt.dir/value.cpp.o
[ 52%] Building CXX object pxr/base/lib/vt/CMakeFiles/vt.dir/arrayPyBuffer.cpp.o
[ 52%] Building CXX object pxr/base/lib/vt/CMakeFiles/vt.dir/valueFromPython.cpp.o
c++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-6/README.Bugs> for instructions.
pxr/base/lib/gf/CMakeFiles/_gf.dir/build.make:470: recipe for target 'pxr/base/lib/gf/CMakeFiles/_gf.dir/wrapMatrix4d.cpp.o' failed
make[2]: *** [pxr/base/lib/gf/CMakeFiles/_gf.dir/wrapMatrix4d.cpp.o] Error 4
[ 52%] Building CXX object pxr/base/lib/vt/CMakeFiles/vt.dir/wrapArray.cpp.o
CMakeFiles/Makefile2:672: recipe for target 'pxr/base/lib/gf/CMakeFiles/_gf.dir/all' failed
make[1]: *** [pxr/base/lib/gf/CMakeFiles/_gf.dir/all] Error 2
[ 52%] Linking CXX shared library libvt.so
[ 52%] Built target vt
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2

Я не уверен, что с этим делать, поскольку я плохо разбираюсь в разработке на C++... Есть идеи, что здесь может быть не так? Возможно, отсутствуют какие-то зависимости?

2 ответа

У меня была такая же проблема, когда я строил, и исправление состояло в том, чтобы увеличить лимит памяти моего Docker. Видимо, ошибка cc1plus почти всегда связана с нехваткой памяти.

Быстрый ответ: Docker должен иметь мало доступной памяти -> перейдите чтобы исправить это.

Я просто сталкиваюсь с той же проблемой при выполнении catkin_makeдля сборки CubeSLAM в контейнере docker-ubuntu-vnc-desktop .

Как уже упоминал dtzman — и более подробно объяснил Джон в этом сообщении StackOverflow — это связано с недостаточным объемом памяти.

Если вы не работаете в Linux, где docker имеет доступ ко всей памяти хост-компьютера, вы можете легко управлять ресурсами, доступными для docker, следуя сюда,ответу Роберта на (не совсем правильно сформулированный) вопрос StackOverflow «Как назначить больше память в контейнер докера».

Другие вопросы по тегам