Closed jpivarski closed 2 years ago
Oh, I should also mention the motivation: I was hunting down a performance issue, thinking that I was running cppyy from conda-forge, only to find out that I was actually running cppyy from a self-compiled copy of ROOT (not through conda-forge). That's my own problem—self-compiled software can always conflict with software installed through conda-forge—but it got me thinking about what would happen if someone installed both the cppyy
and root
packages from conda-forge, thinking they are independent and compatible because conda lets them do it.
Maybe I misunderstand what you wrote above, but I think the real problem in your example is that it's picking up a root library from somewhere else, outside of the conda prefixes.
For me, import ROOT
works fine. However, import cppyy
complains with:
>>> import cppyy
(Re-)building pre-compiled headers (options: -O2); this may take a minute ...
In file included from input_line_10:9:
In file included from ./etc/dictpch/allHeaders.h:315:
./include/ROOT/TReentrantRWLock.hxx:28:19: error: use of undeclared identifier 'TVirtualRWMutex'
using Hint_t = TVirtualRWMutex::Hint_t;
However, cppyy
seems to be functional even though this error happpens.
Can this be closed @jpivarski ?
If not, we would need to mark these packages as incompatible in the meta.yaml
here and also patch the existing metadata.
You're right! I had intended to create a clean reproducer, but I see in the error output that it's getting ROOT from /home/jpivarski/irishep/root-install
and that's causing an error. (My test environment wasn't clean enough.)
If you can't reproduce it in a clean environment, I guess it's fine. ROOT users very often install ROOT in several different ways, but the "conda way" is for everything to be installed from conda and that works here.
Ok. I'll close this then. :)
Solution to issue cannot be found in the documentation.
Issue
Currently, it's possible to install the conda-forge packages
cppyy
androot
in the same environment. However, their Python packages overshadow each other:may try to load the Python library from the
cppyy
package or from theroot
package. (Which one wins depends on the order ofsys.path
.)Is there some way to label these conda-forge packages as mutually incompatible at installation-time? They're mutually incompatible at runtime.
I'll also include the root-feedstock maintainers here: @chrisburr, @eguiraud, @henryiii.
Installed packages
Attempting to install in an empty environment (see Environment info, below), with only one channel, conda-forge (installed via Miniforge).
The problem is that it would allow this:
Although I expect bad things to happen in theory, I decided to actually try it, too. Here's what happens after installation:
Environment info
Brand new environment: