On 23/11/2018 10:57, Ole Holm Nielsen wrote:
I completely agree with Loris!  I have been wanting to hide irrelevant modules from the listing of "module avail" for a very long time (the curious users can always use "module spider").  The "module list" should list all loaded modules, hidden or not.

At the recent Supercomputing 2018 conference I asked Davide Vanzo (EasyBuild) and Robert McLay (Lmod) exactly this question, and Davide's answer is that you must rebuild all of the module .lua files with --module-only and --hide-deps.  You *do not* have to rebuild the software itself!

It's also possible to hide modules by configuring Lmod, see the isVisibleHook function in https://lmod.readthedocs.io/en/latest/170_hooks.html

I think Davide's solution of rebuilding the module files is the simplest way forward.  However, it isn't trivial to do correctly on a running system, because you will be messing with the locations of modules in the .lua files which could break user jobs.  It is strongly recommended to make a copy of the module tree and work on this without impacting the production system.  When completed, you can point users to the location of the new module tree (on a shared file system, I presume).

This leads us to an interesting project for interested EasyBuild sites. Can we design some tools to perform:

1. Create a configuration file with "system" module names (not end-user applications) that we want to hide.  My favorites include all module names beginning with: Autoconf, Automake, Autotools, Bison, CMake, LibTIFF, LibUUID, M4, Szip, Tcl, Tk, Tkinter, XML-Parser, XZ, bzip2, binutils, cURL, expat, flex, fontconfig, freetype, gettext, help2man, hwloc, lib*, ncurses, numactl, pkg-config, tmux, util-linux, zlib

2. Write a script that traverses all directories in $EASYBUILD_PREFIX/modules/all and rebuilds all the .lua files using "eb --module-only --hide-deps".  Maybe the above "system" module names must be rebuilt with --hidden, whereas end-user applications must be rebuilt with a --hide-deps list equal to the desired hidden modules.  I'm unsure of the correct logic here, but maybe EasyBuild experts can comment on this?

The "eb --help" explains how to hide modules:

 --hidden  Install 'hidden' module file(s) by prefixing their             version with '.' (def False)  --hide-deps=HIDE-DEPS  Comma separated list of dependencies that you want automatically hidden, (e.g. --hide-deps=zlib,ncurses) (type comma-separated list)

Does anyone have the time and courage to work on a setup with such a functionality?

Just to add my 2 cents: the support in EasyBuild to hide dependencies/installations via --hide-deps / --hidden dates from before Lmod had support for hiding modules via a .modulerc file.

Hiding modules via Lmod is a lot better than letting EasyBuild hide modules (by letting the filename of the module file start with a '.', to make it a classic hidden file in Linux, there's nothing more to it), for a number of reasons:

* You can do it for existing software installations.

* It doesn't affect users in any (negative) way: the module names stay exactly the same (i.e. no '.' is injected), so existing "module load" commands will still work.

* You can roll back if you want to, for example if users start complaining that modules that were available before have suddenly gone missing (not too many people are aware of 'ml --show-hidden avail').


We should probably update the EasyBuild documentation on --hide-deps to make that clear...

Anyone up for taking a stab at that?


regards,

Kenneth



Best regards,
Ole


On 11/23/2018 10:17 AM, Loris Bennett wrote:
Hi Sam,

Thanks for the info about rebuilding the module files.

Regarding the visibility of modules, I just want to exclude some from
the results of 'module av'.  I assume 'module list' will still show all
the modules which are loaded, hidden or not.  That doesn't bother me,
since, as far as I know, very few of our users look at the output of
'module list' anyway.

Cheers,

Loris

Sam Moors <sammo...@gmail.com> writes:

Hi Loris,

You can instruct EB to only rebuild the modules with the '--module-only' option.
I don't know about your second question though.

That said, are you sure you want to hide the dependencies?

I think it is useful for the users to know which deps are loaded, so
they can avoid conflicts with other modules, even if it may look
daunting to see 50+ modules loaded in some cases.

Cheers,
Sam

On Fri, Nov 23, 2018 at 8:25 AM Loris Bennett <loris.benn...@fu-berlin.de> wrote:

  Hi,

  Now that I have installed a couple of packages with easybuild I have a
  surprising number of modules and realise that I should have been using
  --hide-deps. I have two questions about this:

  1. Is there any way to retrospectively hide modules, other than tweaking
  the module files by hand, say, rebuilding the modules?
  2. Can a set of modules be defined which will be hidden by default?

  Cheers,

  Loris

  --
  Dr. Loris Bennett (Mr.)
  ZEDAT, Freie Universität Berlin Email loris.benn...@fu-berlin.de



Reply via email to