-
Notifications
You must be signed in to change notification settings - Fork 257
Open
Labels
aarch64aarch64 (or arm64) systemsaarch64 (or arm64) systemsbugSomething isn't workingSomething isn't workinglinkerRelated to linking (ld, ld.so or dyld)Related to linking (ld, ld.so or dyld)linuxLinux systemsLinux systemspythonSupport for Python, pip, Poetry, etc.Support for Python, pip, Poetry, etc.
Description
Current Behavior (bug)
I'm unable to run a test suite which includes the PyPI library pandas. I get the following stack trace trying to execute the test suite using Bazel:
import pandas._libs.window.aggregations as window_aggregations
E ImportError: libstdc++.so.6: cannot open shared object file: No such file or directory
Now adding in stdenv.cc.cc.lib
as mentioned here (#1596) and here (#1276) results in Python and Devbox itself to stop working due to missing GLIBC_2.*:
python3: /nix/store/qyd4c78dl0kbpbc3lc2klp5bzy6585g7-glibc-2.33-108/lib/libc.so.6: version `GLIBC_2.35' not found (required by /project/.devbox/nix/profile/default/lib/libgcc_s.so.1)
python3: /nix/store/qyd4c78dl0kbpbc3lc2klp5bzy6585g7-glibc-2.33-108/lib/libc.so.6: version `GLIBC_2.34' not found (required by /project/.devbox/nix/profile/default/lib/libgcc_s.so.1)
and devbox
devcontainer@accb8d220bc6:/project$ devbox add vim
2023/11/21 12:22:24 findProjectDir: path is
2023/11/21 12:22:24 finding devbox.json in dir: /project
2023/11/21 12:22:24 findProjectDir: path is
2023/11/21 12:22:24 finding devbox.json in dir: /project
Error: exit status 1
2023/11/21 12:22:24 Command stderr: nix: /nix/store/0ckxcm0bnsh64a4vi40d5wjs96i014nl-glibc-2.37-8/lib/libc.so.6: version `GLIBC_2.38' not found (required by /project/.devbox/nix/profile/default/lib/libstdc++.so.6)
2023/11/21 12:22:24
ExecutionID:cb862a02fed74ffdaf8c730630c435ba
<nil>
2023/11/21 12:22:24 findProjectDir: path is
2023/11/21 12:22:24 finding devbox.json in dir: /project
Expected Behavior (fix)
I expect running Python libraries within a Devbox shell to work
Additional context
devcontainer@accb8d220bc6:/project$ devbox version -v
2023/11/21 12:23:45 findProjectDir: path is
2023/11/21 12:23:45 finding devbox.json in dir: /project
2023/11/21 12:23:45 findProjectDir: path is
2023/11/21 12:23:45 finding devbox.json in dir: /project
Version: 0.8.2
Platform: linux_arm64
Commit: 33ea788cb4dbf6958208669c9e4df9c1e858ad2c
Commit Time: 2023-11-15T00:23:52Z
Go Version: go1.21.3
Launcher: 0.2.0
2023/11/21 12:23:45 findProjectDir: path is
2023/11/21 12:23:45 finding devbox.json in dir: /project
Using the following devbox file:
{
"packages": {
"docker": "20.10.26",
"docker-compose": "2.23.0",
"bazelisk": "1.18.0",
"python": "3.9.10",
"nodejs": "16.12.0",
"postgresql_13": "13.6",
"black": "22.12.0",
"nbstripout": "0.6.1",
"pre-commit": "3.3.3",
"sqlfluff": "1.4.5",
"nodePackages.prettier": "2.8.8",
"buildifier": "5.1.0",
"go-task": "3.24.0",
"bazel-remote": "2.3.9",
"awscli2": "2.13.3",
"git": "2.42.0",
"moreutils": "0.67"
},
"shell": {
"init_hook": ["alias bazel='bazelisk'"],
"scripts": {
"test": ["echo \"Error: no test specified\" && exit 1"]
}
}
}
and the following Dockerfile
# NOTE: not pinning on sha here so we are pulling the right image for the right arch
FROM ubuntu:mantic-20231011
ARG TARGETARCH
# Setup right locale
ENV LC_ALL="en_US.UTF-8"
ENV LANG="en_US.UTF-8"
ENV LANGUAGE="en_US.UTF-8"
RUN apt-get update \
&& apt-get install -y locales locales-all \
&& locale-gen en_US.UTF-8 \
&& update-locale LANG=en_US.UTF-8 \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# Setup the Europe/Amsterdam timezone
ENV TZ=Europe/Amsterdam
RUN apt-get update \
&& apt-get install -y tzdata \
&& ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# Setup non-root user for the container
# with the ability to use passwordless sudo
RUN apt-get update \
&& apt-get install -y sudo \
&& userdel --remove ubuntu \
&& useradd -u 1000 -m devcontainer -s /bin/bash \
&& usermod -a -G sudo devcontainer \
&& echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /project
RUN chown devcontainer:devcontainer /project
# Install nix and devbox installer dependencies
RUN apt-get update \
&& apt-get install -y ca-certificates curl xz-utils \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
USER devcontainer
RUN curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install linux --init none --no-confirm
RUN sudo chown -R devcontainer:devcontainer /nix
RUN curl -fsSL https://get.jetpack.io/devbox -o /tmp/install-devbox.sh && \
chmod +x /tmp/install-devbox.sh && \
/tmp/install-devbox.sh -f && \
rm -f /tmp/install-devbox.sh
COPY --chown=devcontainer devbox.json devbox.lock ./
RUN devbox run -- echo "Installed Packages."
RUN devbox shellenv --init-hook >> ~/.profile
SHELL ["/bin/bash", "--login", "-c"]
# Ensure bazel is globally enabled (not sure why the alias does not work inside devbox.json)
RUN sudo ln -s $(which bazelisk) /usr/local/bin/bazel
# The py_wheel rule requires a global python and does not work with the devbox one.
RUN sudo ln -s /project/.devbox/nix/profile/default/bin/python /usr/bin/python
RUN sudo ln -s /project/.devbox/nix/profile/default/bin/python /usr/bin/python3
COPY --chown=devcontainer . .
RUN mkdir -p /home/devcontainer/bazel
przemek-pokrywka, trya2l and apgrucza
Metadata
Metadata
Assignees
Labels
aarch64aarch64 (or arm64) systemsaarch64 (or arm64) systemsbugSomething isn't workingSomething isn't workinglinkerRelated to linking (ld, ld.so or dyld)Related to linking (ld, ld.so or dyld)linuxLinux systemsLinux systemspythonSupport for Python, pip, Poetry, etc.Support for Python, pip, Poetry, etc.