You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently EB refuses to install software if the $EBROOTWHATEVER variable for that package is set. I've encountered an issue when dependencies are also loaded ($PYTHONPATH gets unset by EB, so on packages that depend on Python, the Python module does't get reloaded, but $PYTHONPATH has been unset).
I think it makes sense what Kenneth proposed in an email exchange, and extended the check to dependencies.
There are a few questions on how to better tackle this:
Check for direct dependencies, full dependency tree, or something in between?
Reject to install or display a big warning?
Make it overridable (via --ignore-modules-loaded-check for instance) or not?
My preferences would be: full dependency tree, reject, overridable.
Thoughts?
The text was updated successfully, but these errors were encountered:
Covering the full dependency tree may not be ideal, since that would i) be slow (resolving the full dependency tree recursively takes more time), ii) it requires having all easyconfig files for the entire deptree available all the time, which is a lot more strict that what we have now.
So, I'd limit it to only direct dependencies, which would probably cover most occurrences (it would've covered your problem).
Another option is to issue a big fat warning if any $EBROOT* environment variables are defined (other than $EBROOTEASYBUILD itself), which is sort of an in between solution in combination with a hard reject for direct deps.
Making it overridable makes sense to avoid blocking you out if you (think you) know what you're doing, but it should be highly discouraged (by using a long option name, for example ;-) and issuing a big fat warning whenever it is used).
Can we generate a temporary module for the software to be installed at the beginning of the whole process, load it in an empty environment, check which $EBROOT* got defined, and use this to compare it with the current environment? That avoids recursively checking dependencies in easyconfigs, and would be much quicker I think. But probably this is not viable for a reason I can't see right now.
But I have to admit that big fat warnings for any $EBROOT* might do a very similar job with way less effort.
Currently EB refuses to install software if the
$EBROOTWHATEVER
variable for that package is set. I've encountered an issue when dependencies are also loaded ($PYTHONPATH
gets unset by EB, so on packages that depend on Python, the Python module does't get reloaded, but$PYTHONPATH
has been unset).I think it makes sense what Kenneth proposed in an email exchange, and extended the check to dependencies.
There are a few questions on how to better tackle this:
--ignore-modules-loaded-check
for instance) or not?My preferences would be: full dependency tree, reject, overridable.
Thoughts?
The text was updated successfully, but these errors were encountered: