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

Bug fix for modpath_extensions_for function. #1474

Merged
merged 1 commit into from
May 18, 2016
Merged

Bug fix for modpath_extensions_for function. #1474

merged 1 commit into from
May 18, 2016

Conversation

t-brown
Copy link
Contributor

@t-brown t-brown commented Nov 13, 2015

Updating the regex within the modules modpath_extensions_for
function to find the module dependencies when using lua module
files.

This addresses issue #1473

Updating the regex within the modules modpath_extensions_for
function to find the module dependencies when using lua module
files.
@hpcugentbot
Copy link

Automatic reply from Jenkins: Can I test this?

@boegel
Copy link
Member

boegel commented Nov 14, 2015

Jenkins: ok to test

@boegel boegel added this to the v2.5.0 milestone Nov 14, 2015
modtxt = self.read_module_file(mod_name)
useregex = re.compile(r"^\s*module\s+use\s+(\S+)", re.M)
exts = useregex.findall(modtxt)
# Should be module show so as to catch conditional loads.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not loads, use statements

@boegel
Copy link
Member

boegel commented Nov 14, 2015

@t-brown: this is only a partial fix, right? there also was the issue where the .lua extension was not being taken into account to determine the relative subdirectory in which the module file is located?

@hpcugentbot
Copy link

EasyBuild framework unit test suite PASSed (see https://jenkins1.ugent.be/job/easybuild-framework-pr-builder/2338/console for more details).

This pull request is now ready for review/testing.

Please try and find someone who can tackle this; contact @boegel if you're not sure what to do.

@boegel
Copy link
Member

boegel commented Nov 26, 2015

@t-brown: what's the status of this? you mentioned that there still was some problem here?

@boegel
Copy link
Member

boegel commented Jan 20, 2016

This will need to be revisited thoroughly when #1472 is merged in, since they're getting in the way of each other.

@t-brown: I propose I take this over from you, since things just got more complicated (only a little bit though)?
Can you provide details on what exact problem you ran into that resulted in blocking this?

@boegel boegel modified the milestones: v2.6.0, v2.7.0 Jan 22, 2016
@t-brown
Copy link
Contributor Author

t-brown commented Jan 22, 2016

It seems that when using recursive-module-unload with hierarchical modules:

[config]
    buildpath=/dev/shm
    module-naming-scheme=HierarchicalMNS
    modules-tool=Lmod
    module-syntax=Lua
    recursive-module-unload=1

The module files generated at the second hierarchical level include it's parent. For example, /GCC/4.9.3-binutils-2.25/Autoconf/2.69 contains:

    load("GCC/4.9.3-binutils-2.25")
    load("binutils/2.25")
    load("M4/1.4.17")

and GCC/4.9.3-binutils-2.25/Automake/1.15 contains:

    load("GCC/4.9.3-binutils-2.25")
    load("binutils/2.25")
    load("Autoconf/2.69")

So when build foss-2015b.eb (for example), loads GCC/4.9.3-binutils-2.25 then loads Autoconf/2.69 and then when trying to load Automake/1.15, hits the load("GCC/4.9.3-binutils-2.25") which causes an unload, then the load fails:

Lmod has detected the following error: These module(s) exist but cannot be loaded as requested: "Autoconf/2.69", "binutils/2.25", "GCC/4.9.3-binutils-2.25"

If you comment out the load("GCC/4.9.3-binutils-2.25") from all modules under that hierarchy, it loads and works.

@boegel
Copy link
Member

boegel commented Jan 22, 2016

@t-brown: hah! OK, that is very wrong indeed, the load("GCC/...") shouldn't be there for a module installed using GCC as a toolchain

This is supposed to be handled by https://github.com/hpcugent/easybuild-framework/blob/master/easybuild/framework/easyblock.py#L901, which (through path_to_top_of_module_tree) relies on modpath_extensions_for.

So, that means the use regex must be correct.

What does a debug log for e.g. Autoconf include for List of retained dependencies:?

@boegel
Copy link
Member

boegel commented Feb 18, 2016

@t-brown: ping?

@boegel
Copy link
Member

boegel commented Mar 9, 2016

@t-brown: did you have any time for this? If not, I'll probably try and get it fixed myself (on top of your work/feedback).

@boegel boegel removed this from the v2.7.0 milestone Apr 1, 2016
@boegel boegel modified the milestones: v2.8.0, v2.7.0 Apr 1, 2016
@boegel
Copy link
Member

boegel commented May 10, 2016

@t-brown final ping before I fork this off myself to get it fixed for EB v2.8.0 (i.e., this week)

@boegel
Copy link
Member

boegel commented May 18, 2016

fixed via #1766, thanks for your work on this @t-brown!

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

Successfully merging this pull request may close these issues.

3 participants