Skip to content
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

Warning in case certain (any?) modules in the dependency tree are loaded at install time #1723

Closed
damianam opened this issue Apr 14, 2016 · 3 comments
Milestone

Comments

@damianam
Copy link
Member

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?

@boegel
Copy link
Member

boegel commented Apr 14, 2016

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).

@boegel boegel added this to the v2.8.0 milestone Apr 14, 2016
@damianam
Copy link
Member Author

Crappy idea with a bit of wishful thinking:

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.

@damianam
Copy link
Member Author

damianam commented Mar 6, 2018

Fixed here #2228

@damianam damianam closed this as completed Mar 6, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants