-
Notifications
You must be signed in to change notification settings - Fork 219
add support for installing hidden modules and using them as dependencies (WIP) #1009
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
Conversation
…se 'exists' in 'skip_available'
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Extend the docstring with the new argument.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
|
Looks good after first read |
|
@wpoely86: added some extra stuff w.r.t. checking for existing (potentially) hidden modules, and fixed your remarks I'd like to be able to merge this ASAP, since this is (kind of) blocking other stuff I have queued up. Can you review this PR again? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Am I missing something here? If hidden=True and the first part of this and is False, then the we should get a hidden name?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I need to think about this... I think the hidden named argument only matters if the module is not being specified as being hidden by another way, i.e. it's a fallback mechanism.
But I need to double check that again, the logic gets complex here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
if it's not specified, won't the first part of the and be False? And thus the other part doesn't matter anymore?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changed it to force_visible, and used False as a default, please check again.
The intention is to force the module name to be a non-hidden module name, regardless of whether the installed module should be hidden or not. This is used to determine the installation subdir which (for now?) matches the module name.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks better!
|
Second read, still looks great 👍 |
…ke it easier to grok
|
Jenkins is happy with this too, so merging in, thanks for the review @wpoely86! @ocaisa has a good idea to leverage this support for hidden modules, to make modules for stuff that users typically don't care about (i.e., wouldn't load directly themselves) hidden. Examples include |
add support for installing hidden modules and using them as dependencies (WIP)
|
I totally vote for this! Using That, in conjunction with HMNS, would be a big win for end-users. |
|
I'm having second thoughts on installing stuff like Instead, we should probably add an EasyBuild configuration option that allows to list the software packages that should be installed as hidden modules, somewhat similar to That gives more freedom imho, avoids updating all existing easyconfig files and reserves Thoughts? |
|
Can we not use hierarchy for this? Now, you got MPI where everything ends up in. Maybe split this up in supporting libraries and end user applications? Both will be visible with avail and spider but you can make a clear distinct between in the output of module av so the end users can easily see which programs are installed. |
|
@boegel: I was not sure what you meant, but I think I get it now. I was also thinking about a configuration flag that would treat Overall, I'm ok with your approach, even if it means I'll have to manually specify extra arguments when I install packages, different for each one of them, if I want to use hidden dependencies. |
|
@wpoely86: sure, with a custom module naming scheme you can do that already The point is that EasyBuild shouldn't force you one way or another, every site will have the policies they want to stick to, EB should allow to implement all of them. |
|
@boegel Although having nice and easy to use defaults is a big plus. Having to write a custom module naming scheme to start with is a big showstopper, at least for me. |
|
@kcgthb: so, it seems we need both a |
|
@boegel: well, probably. So yes, that's the most flexible approach. Maybe the most confusing too. :) |
|
@boegel Installing apps and deps in separate trees is also a nice approach. But this would have to be available as a configuration switch (as a provided module naming scheme) to be really usable. I don't think it's reasonable to expect first-time EB users to write their own module custom naming scheme right away to benefit from this apps/deps separation. |
|
@kcgthb: I'd say |
|
@kcgthb: I don't think providing a configuration switch to differentiate between apps and deps would work. When is something a dep and not an app? That seems a site-specific aspect to me... |
|
Ok for |
|
Aldo you can do a split between end users apps and supporting libraries in the namescheme technically, I don't think it's possible in practice. You have no way of knowing what a easyconfig is? Something in the catagory |
|
@kcgthb: w.r.t. the |
|
I agree with @boegel, hidden deps should be used sparely. If you want to present nicer and cleaner to the end user, hierarchical modules are the way to go. |
|
@wpoely86: well, I think actually hiding stuff that users would never load directly, like |
|
What if an end user wants his home made program to compile with |
|
Yeah, well, the optimal solution probably doesn't exist... So, each site should be able to configure EB to make it behave as they want it to, as easily as possible (like @kcgthb already mentioned, not having to dive deep into the framework and write custom Python code, if possible at all). |
|
So that means a naming scheme based on the catagories? Then it should be possible to alter the output of module av to display something better then other. |
|
@wpoely86: picking categories that appeal to everyone is equally impossible... That's just moving the problem imho. |
|
@boegel. Regarding |
|
@kcgthb: I certainly can do that, both cases. I guess the question there is: should EB complain (and fail) when it detects an 'inconsistency' like that, or implicitly pick up what is there (e.g. pick up |
|
I think that hiding is a bad idea in general. First hidden modules are only hidden from avail and spider and not from module list. We all have novice users but not all users are novice. When you hide things, you hide them from users who want to know its there. You are going to get questions about say ncurses/.4.2.1 which wasn't on the avail list but is listed with the modules your users have. The only time I think that hiding is a good idea is when you have to install something that staff and maybe friendly users to test before making available for general use. |
|
@rtmclay: don't you agree that hiding a |
Not 100% finished yet, but getting there. I'm not confident enough yet that I'm covering everything I need to... Some code cleanup might be needed too.
Currently tackled:
hiddendependencies, and resolving those dependencies correctly--dry-run(needs an enhanced unit test)@wpoely86: please review, since we discussed this earlier