Giter Site home page Giter Site logo

vplugaru / lmod Goto Github PK

View Code? Open in Web Editor NEW

This project forked from tacc/lmod

0.0 1.0 0.0 9.1 MB

Lmod: An Environment Module System based on Lua, Reads TCL Modules, Supports a Software Hierarchy

Home Page: www.tacc.utexas.edu/tacc-projects/lmod

Lua 81.29% Shell 3.45% Perl 3.16% C 0.08% Tcl 10.82% Ruby 1.21%

lmod's Introduction

If you are going to be at SC'13 in Denver this year there will be
an informal BoF at the TACC booth Wednesday 11/20/13 at 12:00noon to 12:30pm.
Or you can email me if you wish to chat there at other times.



Lmod Version 5.2:
Features:
  a) Modulefiles can mix load commands and setenv's and still be saved and restored.
  b) In Lua modulefiles you can modify load function behavior:
        load(atleast("a","1.2"))       -- load module "a" with version 1.2
                                       -- or higher.
        load(between("b","1.2","1.4")  -- load module "b" with version between
                                       -- 1.2 and 1.4.
        load(latest("c"))              -- load latest version of "c", ignore
                                       -- marked default.

     This only works in Lua module files, and works on all load functions:
     load, always_load.
  c) In Lua modulefiles you can modify prereq function behavior:
        prereq(atleast("a","1.2"))      -- Module "a" must be version 1.2 
                                        -- or higher.
        prereq(between("b","1.2","1.4") -- Module "b" must be version between
                                        -- 1.2 and 1.4.
        prereq(latest("c"))             -- Module "c" must be latest possible

     This only works in Lua module files, and works on all prereq functions:
     prereq, prereq_any.


Lmod Version 5.1.5:
Bug Fixes:
  a) Changes in the terse output for avail and spider.  A directory
     that contains module versions has a trailing "/"
  b) The environment that a module sees (and only in that environment).
     Lmod defines the following variables shown with their current values:
        LMOD_VERSION:          5.1.5
        LMOD_VERSION_MAJOR:    5
        LMOD_VERSION_MINOR:    1
        LMOD_VERSION_SUBMINOR: 5

  c) Module function to do version comparison (only for lua based modulefiles):

       if (convertToCanonical(LmodVersion()) > convertToCanonical("5.0")) then
          -- Do something that is only valid for Lmod 5.0 or greater
       end

    The function convertToCanonical() knows how to deal with alpha, beta,
    and rc version and the function LmodVersion() returns the current
    version of Lmod.
     

Lmod Version 5.1.1:
Bug Fixes and internal improvements
  a) Lmod can now find all the dot module files.
  b) Fixed bug with inherit()
  c) Settarg nolonger tries to control all TARG_* variables.
  d) Better handling of "Rebuild cache ..." line.
  e) Improvements to the execute function.
  f) "module --mt" prints the module table
  g) "settarg --stt" prints the settarg table.

Lmod Version 5.1.0:

Version 5.1.0 now supports the following new features:

a) module --ignore_cache which tells Lmod to ignore the cache even if it
   exists.

b) module --config reports how lmod was configured.

c) Lmod no longer walks the directory tree on command like list and
   unload.

d) The pager is now used only when TERM is defined and stderr is
   connected to a tty (this includes a pty: pseudo tty).

e) The system startup scripts (init/profile, and init/cshrc) that
   are usually linked to modules.sh and modules.csh in /etc/profile.d
   contains now modulefiles: lmod and settarg.  Please consider using
   this as defined or moving these module files into your normal
   MODULEPATH.

f) Support for settarg has been added for Bash, Zsh and Tcsh users.

g) See README.old for features added in earlier versions.

------------------------------------------------------------------------
What is Settarg?
------------------------------------------------------------------------

Settarg is new module that accesses a new tool to dynamically and
automatically updates "$TARG" and a host of other environment
variables. These new environment variables encapsulate the state of
the modules loaded.

                        *** NOTE **** 

Please note that settarg feature is optional and is implemented as a
module.  If and only if the settarg module is loaded you get the new
behavior.  You can load and unload the settarg module at will to turn
on and off these new features.  Settarg does work for tcsh users as
well a feat not to be scoffed at! Unfortunately regular csh is
missing necessary features for it to work.

                        *** NOTE ****


For example, if I have the gcc/4.7.2 module loaded
and the new settarg module loaded I get the following variables
defined in my environment.


   TARG=OBJ/_x86_64_06_1a_gcc-4.7.3
   TARG_COMPILER=gcc-4.7.3
   TARG_COMPILER_FAMILY=gcc
   TARG_MACH=x86_64_06_1a

If I change my compiler to intel/13.1.0, these variables change to:

   TARG=OBJ/_x86_64_06_1a_intel-13.1.0
   TARG_COMPILER=intel-13.1.0
   TARG_COMPILER_FAMILY=intel
   TARG_MACH=x86_64_06_1a

This was designed to help me as a developer of software applications
where I am constantly changing compilers, mpi stacks and other
modules. These variable are used to set the compiler flags and other
things in my Makefiles to control how my application is built. In my
case $TARG the directory is where the the objects, libraries and
executables are placed during the build process. It easy to have the
title bar reflect the dynamic state of your modules. You can
abbreviate items mentioned in the titlebar.  I have found this
combination of settarg and Lmod to be a powerful development
tool. Even if this workflow is not yours, you may find parts of this
useful. 

For a more complete tour of settargs features see:
contrib/settarg/Settarg.txt and the Make example in
contrib/settarg/make_example.

lmod's People

Watchers

Valentin Plugaru avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.