easybuilders / easybuild

EasyBuild - building software with ease
http://easybuild.io
GNU General Public License v2.0
461 stars 143 forks source link

Cannot load the module that has been actually installed module when building #813

Closed bowentan closed 2 years ago

bowentan commented 2 years ago

Description System: Ubuntu 20.04/Centos7 Lmod Version: 8.7.7/8.4.23 EasyBuild Version: 4.6.0

I am currently installing the GCC-11.3.0.eb but after installing the help2man-1.49.2-GCCcore-11.3.0.eb, the "unknown module" error occurred as follows, when EasyBuild was installing flex-2.6.4-GCCcore-11.3.0.eb.

Lmod has detected the following error:  The following module(s) are unknown: 

"help2man/1.49.2"

And I also couldn't find this module via module spider or module avail commands, in both systems and both Lmod versions. I checked and guaranteed that the lua file was indeed located in MODULEPATH and the related executables were located in software path.

Could you help about this problem?

ocaisa commented 2 years ago

Can you share what your MODULEPATH is when you call the command that throws this error? Can you also share the output of eb --show-config

bowentan commented 2 years ago
MODULEPATH=/disk2/apps/modules/all/core:/opt/apps/lmod/lmod/modulefiles/Core

and

> eb --show-config

#
# Current EasyBuild configuration
# (C: command line argument, D: default value, E: environment variable, F: configuration file)
#
buildpath            (D) = /home/.easybuild/.local/easybuild/build
containerpath        (D) = /home/.easybuild/.local/easybuild/containers
installpath          (C) = /disk2/apps
module-depends-on    (C) = True
module-extensions    (C) = True
module-naming-scheme (C) = HierarchicalLowerCaseMNS
optarch              (C) = GENERIC
repositorypath       (D) = /home/.easybuild/.local/easybuild/ebfiles_repo
robot                (C) = /disk2/apps/easyconfigs, /usr/easybuild/easyconfigs, /usr/local/easybuild/easyconfigs
robot-paths          (C) = /disk2/apps/easyconfigs, /usr/easybuild/easyconfigs, /usr/local/easybuild/easyconfigs
sourcepath           (D) = /home/.easybuild/.local/easybuild/sources
tmp-logdir           (C) = /home/.easybuild/tmp
tmpdir               (C) = /home/.easybuild/tmp

The HierarchicalLowerCaseMNS is my custom naming scheme and I also append the file in the attachment. hierarchical_lowercase_mns.zip

I only modified the path string to lower case.

ocaisa commented 2 years ago

Ah, you are using a custom MNS. That's an important detail you should have mentioned, the problem is there. You are not consistently lowercasing return values throughout the MNS (in particular det_modpath_extensions ). Look inside the module you have for GCCcore and you will see that it (probably) tries to extend MODULEPATH into a location that does not exist.

ocaisa commented 2 years ago

You need to lowercase all the paths that are returned there

bowentan commented 2 years ago

After debugging the name scheme, I gave up using my custom one. And yes, it was the problem from my custom scheme...

Thanks a lot for help.