Skip to content

Switch Lmod initialisation scripts to use /cvmfs/software.eessi.io/init/modules #109

@ocaisa

Description

@ocaisa

As we move closer to releasing 2025.06, I think it makes sense that we still make 2023.06 available even though it will no longer be the default. Lmod initialisation can do this fairly easily since we can just make /cvmfs/software.eessi.io/init/modules the initial module path. We can also:

  • Make the initial load of EESSI sticky with
    ## ability to predefine elsewhere the default list
    LMOD_SYSTEM_DEFAULT_MODULES=${LMOD_SYSTEM_DEFAULT_MODULES:-"EESSI/$EESSI_VERSION"}
    export LMOD_SYSTEM_DEFAULT_MODULES
    EESSI_MODULE_STICKY=1 module --initial_load --no_redirect restore
    

One problem right now is that the LMOD_RC is set on an EESSI_VERSION basis, but we should consider maintaining a central version (at least for the spider caches). It's not trivial to do this right now as the spider caches do not currently include the requirement to load the EESSI module (i.e., there is a hierarchy but it is not recognised in the spider caches):

ocaisa@~$ module list

Currently Loaded Modules:
  1) EESSI/2025.06 (H)

  Where:
   H:  Hidden Module

ocaisa@~$ module spider GCCcore

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  GCCcore:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    Description:
      The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Java, and Ada, as well as libraries for these languages (libstdc++, libgcj,...).

     Versions:
        GCCcore/13.3.0
        GCCcore/14.2.0

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  For detailed information about a specific "GCCcore" package (including how to load the modules) use the module's full name.
  Note that names that have a trailing (E) are extensions provided by other modules.
  For example:

     $ module spider GCCcore/14.2.0
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

ocaisa@~$ export LMOD_RC=$LMOD_RC:/cvmfs/software.eessi.io/versions/2023.06/software/linux/x86_64/intel/icelake/.lmod/lmodrc.lua
ocaisa@~$ module spider GCCcore

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  GCCcore:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    Description:
      The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Java, and Ada, as well as libraries for these languages (libstdc++, libgcj,...).

     Versions:
        GCCcore/12.2.0
        GCCcore/12.3.0
        GCCcore/13.2.0
        GCCcore/13.3.0
        GCCcore/14.2.0

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  For detailed information about a specific "GCCcore" package (including how to load the modules) use the module's full name.
  Note that names that have a trailing (E) are extensions provided by other modules.
  For example:

     $ module spider GCCcore/14.2.0
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

ocaisa@~$ module spider GCCcore/14.2.0

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  GCCcore: GCCcore/14.2.0
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    Description:
      The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Java, and Ada, as well as libraries for these languages (libstdc++, libgcj,...).


    This module can be loaded directly: module load GCCcore/14.2.0

    Help:
      Description
      ===========
      The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Java, and Ada,
       as well as libraries for these languages (libstdc++, libgcj,...).


      More information
      ================
       - Homepage: https://gcc.gnu.org/

ocaisa@~$ module spider GCCcore/12.2.0

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  GCCcore: GCCcore/12.2.0
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    Description:
      The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Java, and Ada, as well as libraries for these languages (libstdc++, libgcj,...).


    This module can be loaded directly: module load GCCcore/12.2.0

    Help:
      Description
      ===========
      The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Java, and Ada,
       as well as libraries for these languages (libstdc++, libgcj,...).


      More information
      ================
       - Homepage: https://gcc.gnu.org/

Right now we have a pattern in our EESSI module

        if ( mode() ~= "spider" ) then
            prepend_path("MODULEPATH", eessi_module_path_accel)
            eessiDebug("Using accelerator modules at: " .. eessi_module_path_accel)
        end

which stops Lmod from looking into the the hierarchy. I think this condition might not be necessary if we had a spider cache for /cvmfs/software.eessi.io/init/modules, and I also think that if Lmod is aware of the spider caches for each EESSI_VERSION this will be a tiny spider cache.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions