Re: [easybuild] Retrospectively hiding modules / hiding by default
(Resending because it seems that my reply got trapped by our spam-filter). On 11/23/2018 10:53 AM, Markus Geimer wrote: > You don't even need an Lmod hook. Just put something like hide-version foo/42.0 in a global rc file evaluated by Lmod (I believe it has to be TCL). This can easily be done after the fact. I'm using this for quite a while now and it works like a charm. See also https://lmod.readthedocs.io/en/latest/040_FAQ.html?highlight=hide-version Thanks for suggesting the use of Lmod "hide-version" for hiding unwanted/obsolete/system modules from the "module avail" command! There are also some useful hints in https://github.com/TACC/Lmod/blob/master/Transition_to_Lmod7.txt. IMHO, this is the best available solution in stead of rebuilding your entire module tree from scratch (which may still be what we want to do in the long term). I've written the attached script for conveniently generating a ~/.modulerc file from a list of module name patterns which you want to hide. On a CentOS 7 system with the Lmod RPM from EPEL, you can copy the .modulerc file to the Lmod system default file /usr/share/lmod/etc/rc. For the record, I've also documented this procedure and the script in my EasyBuild Wiki page at https://wiki.fysik.dtu.dk/niflheim/EasyBuild_modules#hiding-modules-with-lmod /Ole #!/bin/sh # Create ~/.modulerc file with module hide-version information # The hidden modules will not be shown by "module avail". # List system-wide modulerc file by: # $ module --config 2>&1 | grep MODULERCFILE # MODULERCFILE /usr/share/lmod/etc/rc MODULERC=~/.modulerc # List available modules TEMP=/tmp/modulerc.$$ rm -f $TEMP module --terse --show-hidden avail > $TEMP 2>&1 # Generate a hide list cat < $MODULERC #%Module # Documentation of hide-version: # https://lmod.readthedocs.io/en/latest/040_FAQ.html?highlight=hide-version # and https://github.com/TACC/Lmod/blob/master/Transition_to_Lmod7.txt global env if { [info exists env(LMOD_VERSION_MAJOR)]} { EOF # Define patterns for which modules to hide cat <> $MODULERC GCCcore-5.4.0 GCCcore-6.1.0 GCCcore/5.4.0 GCCcore/6.1.0 GCC-5.4.0-2.26 GCC-6.3.0-2.27 foss/2016a foss-2016a foss/2016b foss-2016b Autoconf Automake Autotools Bison CMake LibTIFF LibUUID M4 Szip Tcl/ Tk/ Tkinter XML-Parser XZ bzip2 binutils cURL expat flex fontconfig freetype gettext gompi-2016b gompi/2016b gperf help2man hwloc libevent libffi libjpeg-turbo libpng libreadline LibTIFF libtool LibUUID libxml2 ncurses numactl pkg-config tmux util-linux zlib EOF # Terminating bracket echo "}" >> $MODULERC echo File $MODULERC has been created rm -f $TEMP
Re: [easybuild] Retrospectively hiding modules / hiding by default
On 11/23/2018 10:53 AM, Markus Geimer wrote:> You don't even need an Lmod hook. Just put something like hide-version foo/42.0 in a global rc file evaluated by Lmod (I believe it has to be TCL). This can easily be done after the fact. I'm using this for quite a while now and it works like a charm. See also https://lmod.readthedocs.io/en/latest/040_FAQ.html?highlight=hide-version Thanks for suggesting the use of Lmod "hide-version" for hiding unwanted/obsolete/system modules from the "module avail" command! There are also some useful hints in https://github.com/TACC/Lmod/blob/master/Transition_to_Lmod7.txt. IMHO, this is the best available solution in stead of rebuilding your entire module tree from scratch (which may still be what we want to do in the long term). I've written the attached script for conveniently generating a ~/.modulerc file from a list of module name patterns which you want to hide. On a CentOS 7 system with the Lmod RPM from EPEL, you can copy the .modulerc file to the Lmod system default file /usr/share/lmod/etc/rc. For the record, I've also documented this procedure and the script in my EasyBuild Wiki page at https://wiki.fysik.dtu.dk/niflheim/EasyBuild_modules#hiding-modules-with-lmod /Ole #!/bin/sh # Create ~/.modulerc file with module hide-version information # The hidden modules will not be shown by "module avail". # List system-wide modulerc file by: # $ module --config 2>&1 | grep MODULERCFILE # MODULERCFILE /usr/share/lmod/etc/rc MODULERC=~/.modulerc # List available modules TEMP=/tmp/modulerc.$$ rm -f $TEMP module --terse --show-hidden avail > $TEMP 2>&1 # Generate a hide list cat < $MODULERC #%Module # Documentation of hide-version: # https://lmod.readthedocs.io/en/latest/040_FAQ.html?highlight=hide-version # and https://github.com/TACC/Lmod/blob/master/Transition_to_Lmod7.txt global env if { [info exists env(LMOD_VERSION_MAJOR)]} { EOF # Define patterns for which modules to hide cat <> $MODULERC GCCcore-5.4.0 GCCcore-6.1.0 GCCcore/5.4.0 GCCcore/6.1.0 GCC-5.4.0-2.26 GCC-6.3.0-2.27 foss/2016a foss-2016a foss/2016b foss-2016b Autoconf Automake Autotools Bison CMake LibTIFF LibUUID M4 Szip Tcl/ Tk/ Tkinter XML-Parser XZ bzip2 binutils cURL expat flex fontconfig freetype gettext gompi-2016b gompi/2016b gperf help2man hwloc libevent libffi libjpeg-turbo libpng libreadline LibTIFF libtool LibUUID libxml2 ncurses numactl pkg-config tmux util-linux zlib EOF # Terminating bracket echo "}" >> $MODULERC echo File $MODULERC has been created rm -f $TEMP