hdl / conda-eda

Conda recipes for FPGA EDA tools for simulation, synthesis, place and route and bitstream generation.
https://anaconda.org/LiteX-Hub
Apache License 2.0
94 stars 27 forks source link

some packages don't seems to be compatible with google colab notebooks #146

Open proppy opened 2 years ago

proppy commented 2 years ago

It seems that some of the package are not compatible with the runtime environment present in https://colab.research.google.com/.

Installing the following packages with:

!curl -O  https://repo.anaconda.com/miniconda/Miniconda3-py37_4.10.3-Linux-x86_64.sh
!bash Miniconda3-py37_4.10.3-Linux-x86_64.sh -b -f -p /usr/local
!conda install --yes -c LiteX-Hub verible iverilog

produce the following error for verible at runtime:

verible-verilog-lint: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by verible-verilog-lint)

while iverilog seems to work fine:

Icarus Verilog version 12.0 (devel) (0_8-5850-g540555fc-dirty)

Installing verible from the older https://anaconda.org/SymbiFlow/repo channel, seems to work fine

I suspect this might be due to https://github.com/hdl/conda-eda/pull/133 updating all packages to be built using a relatively "recent" version of ubuntu, while colab is still an older version (see https://github.com/googlecolab/colabtools/issues/1880).

One solution could simply be to wait for colab to upgrade or provide multiple linux variants using https://docs.conda.io/projects/conda-build/en/latest/resources/variants.html to accomodate for different glibc versions.

proppy commented 2 years ago

Shared a notebook that reproduce the issue: https://colab.sandbox.google.com/drive/1IsZluwTkYzdDJGpnbA42lKU8c0OvVJL7?resourcekey=0-HAxTMHW6dg_pQHWwazVGhg#scrollTo=DpEQxPYOR33J

proppy commented 2 years ago

Would adding a constraints on the __glibc virtual package as documented in https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-virtual.html?highlight=glibc#managing-virtual-packages workaround this issue? It could allow the install to fail early on to give a better heads up to the users that the package is incompatible with their system.