-
Notifications
You must be signed in to change notification settings - Fork 2.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Replace conda with pyenv to fix incorrect libstdc++ use in jammy CI. #6966
Changes from 3 commits
3e964a5
b774e5f
c7c2c03
05cf179
1bb4602
1d1aeb1
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -67,34 +67,55 @@ RUN if [ "${BUILD_SYCL_MODULE}" = "ON" ]; then \ | |
rm -rf /etc/apt/sources.list.d/oneAPI.list; \ | ||
fi | ||
|
||
# Dependencies: basic | ||
# Dependencies: basic and python-build | ||
# gcc-11 causes a seg fault in tensormap when built in Release mode. Upgrade to | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Have we found the root cause for that or is it really a bug only due to gcc11? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Thanks for catching that. I think it was actually the libunwind issue. I've been working with gcc-11 on jammy (22.04) without issues. Reverted. |
||
# gcc-13 instead. | ||
RUN apt-get update && apt-get install -y \ | ||
git \ | ||
wget \ | ||
curl \ | ||
build-essential \ | ||
pkg-config \ | ||
zlib1g \ | ||
zlib1g-dev \ | ||
libssl-dev \ | ||
libbz2-dev \ | ||
libreadline-dev \ | ||
libsqlite3-dev \ | ||
libncursesw5-dev \ | ||
xz-utils \ | ||
tk-dev \ | ||
libxml2-dev \ | ||
libxmlsec1-dev \ | ||
libffi-dev \ | ||
liblzma-dev \ | ||
&& if c++ --version | grep -F ' 11.' ; then \ | ||
apt-get install -y g++-13 \ | ||
&& update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++-13 100 \ | ||
&& c++ --version; \ | ||
fi \ | ||
&& rm -rf /var/lib/apt/lists/* | ||
|
||
# Miniconda or Intel conda | ||
# The **/open3d/bin paths are used during docker run, in this way docker run | ||
# pyenv or Intel Python | ||
# The pyenv python paths are used during docker run, in this way docker run | ||
# does not need to activate the environment again. | ||
ENV PATH="/root/miniconda3/bin:${PATH}" | ||
ENV PATH="/root/miniconda3/envs/open3d/bin:${PATH}" | ||
# The soft link from the python patch level version to the python mino version | ||
# ensures python wheel commands (i.e. open3d) are in PATH, since we don't know | ||
# which patch level pyenv will install (latest). | ||
ENV PYENV_ROOT=/root/.pyenv | ||
ENV PATH="$PYENV_ROOT/shims:$PYENV_ROOT/bin:$PYENV_ROOT/versions/$PYTHON_VERSION/bin:$PATH" | ||
ENV PATH="/opt/intel/oneapi/intelpython/latest/bin:${PATH}" | ||
ENV PATH="/opt/intel/oneapi/intelpython/latest/envs/open3d/bin:${PATH}" | ||
RUN if [ "${BUILD_SYCL_MODULE}" = "OFF" ]; then \ | ||
wget -q https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh; \ | ||
bash Miniconda3-latest-Linux-x86_64.sh -b; \ | ||
rm Miniconda3-latest-Linux-x86_64.sh; \ | ||
curl https://pyenv.run | bash \ | ||
&& pyenv update \ | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I was working on switching to Miniforge in #6717 😅 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. miniforge likely won't fix this issue, since it's a copy of conda and likely uses it's on libstdc++ as well. |
||
&& pyenv install $PYTHON_VERSION \ | ||
&& pyenv global $PYTHON_VERSION \ | ||
&& pyenv rehash \ | ||
&& ln -s $PYENV_ROOT/versions/${PYTHON_VERSION}* $PYENV_ROOT/versions/${PYTHON_VERSION}; \ | ||
fi | ||
RUN conda --version \ | ||
&& conda create -y -n open3d python=${PYTHON_VERSION} | ||
RUN python --version && pip --version | ||
|
||
# Activate open3d virtualenv | ||
# This works during docker build. It becomes the prefix of all RUN commands. | ||
# Ref: https://stackoverflow.com/a/60148365/1255535 | ||
SHELL ["conda", "run", "-n", "open3d", "/bin/bash", "-o", "pipefail", "-c"] | ||
SHELL ["/bin/bash", "-o", "pipefail", "-c"] | ||
|
||
# Dependencies: cmake | ||
ENV PATH=${HOME}/${CMAKE_VERSION}/bin:${PATH} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice catch! This should significantly reduce the number of heap allocations