3 Modules framework
The DEISA Common Production Environment offers:
- a common interface to access different software components on different subgroups of homogeneous computers, hiding the possibility that different files of a component would be named or installed in different locations depending on local policies of the sites, and on software packaging for different computer types,
- a common interface for each group of computers, which is available from all the shells, allows people using different shells, or even a user who wants to change his or her shell temporarily or permanently, to use exactly the same commands to access a certain software,
- an individual management of each component allows people to load into the user environment only the required software and also to be able to change the version of each software independently of the others,
- an easy way for each user to switch independently between the current default version of a software to an other one. It can be an older one, if for instance some updates are not yet done in a user code after some incompatible changes in the interface of a library used, or if special bugs are discovered in the current version of a software. Or it can also be a new one, to test and validate it, or just to benefit from its new features, before it becomes the current version.
The Modules tool (http://modules.sourceforge.net/) is used to offer these features and to define the portable interfaces to the components of the DCPE, to set it up according to your needs and to allow you to dynamically enrich your environment during a session.
The module command is mainly used to list, load and unload the special files, which define each component. These files are called modulefiles, and they are written by the system administrators. From the information in a modulefile, the module command configures the user’s environment, allowing you to run the corresponding software. In fact, the module command alters or sets common Unix shell environment variables such as $PATH, $LD_LIBRARY_PATH or $LIBRARY, $MANPATH, etc. and sets the specific variables of the application. All the required definitions for an application are modified in a coordinated way, which prevents users from forgetting some required changes or from making incompatible changes.
The syntax rules for the modulefiles are:
where modulename is the name of the modulefile and version is the optional version number (brackets are used to show that this is not mandatory),
- all names are in lowercase,
- the names are alphanumeric characters (fortran, hdf5, cpmd, etc.),
- when you need to specify a version number, it is placed after the name of the default version with a slash sign as a separator. The version number can have several components, each being a set of alphanumeric characters separated by a dot, to specify the major and minor version numbers, the patches level, etc. (fortran/12.1, cpmd/3.13, nag/21, totalview/8, etc.).
Only one version of a software can be loaded at a given time. If you try to load two versions of a component, a conflict will occur (an error message will be printed and the version pre-viously loaded will stay active).
Please, note that for each software a default version is provided. It is expected to be used in all normal cases.