Re: Environments - Re: Disappearing root

From: Anders Holm (aholm@alf.nbi.dk)
Date: Mon May 29 2000 - 02:10:11 EDT

  • Next message: Christian Holm Christensen: "Re: Environments - Re: Disappearing root"

    Hej environment and vesion managers
    
    I agree with Kris:  
    
    We should avoid always being hunting for the latest version of everything.
    For the reasons Kris gives. 
    
    Anders
    
    
    On Sun, 28 May 2000 hagel@comp.tamu.edu wrote:
    
    > Hello,
    > I agree with Konstantin on keeping things simple with as little choice as
    > possible.  The one problem I see is if we keep root/pro as close to the current
    > version of root as possible, doesn't that mean that things will change often which
    > will lead to people frequently having something that worked yesterday that does not
    > work today?
    > 
    > Kris
    > 
    > Konstantin Olchanski wrote:
    > 
    > > On Sun, May 28, 2000 at 05:53:34PM +0200, Christian Holm Christensen wrote:
    > > > Hi all,
    > > >
    > > > It seems that there are a few problems with the environments on the
    > > > pii<x>, so let me offer a possible solution:
    > > >
    > > > Here at NBI, we've set up a set of scripts that let people choose what
    > > > version of the software they want to use. The idea is a follows:
    > > >
    > >
    > > You misunderstand:
    > >
    > > I do not want choice.
    > > I do not want multiple versions.
    > > I do not want 100 setup scripts to run.
    > >
    > > The STAR environment is close to what you suggest, and ask anybody,
    > > their environment is extremely unproductive. Everything is always broken.
    > > I do not wish us moving into the same direction.
    > >
    > > Please keep things simple.
    > >
    > > - 1 (one) production version of ROOT, with a fixed path (~brahmlib/root/pro).
    > > - any number of experimental ROOT versions, but they should become
    > >   production versions as soon as possible. Ideally, our production
    > >   version should always be the current ROOT release.
    > >
    > > K.O.
    > >
    > > >
    > > > Each user in the group has a "~/.hehirc" file, where they are free to
    > > > choose the versions needed. If one want's to use another version, then
    > > > all one has to do, is to edit this file. The "~/.hehirc" file can look
    > > > like:
    > > >
    > > >   #
    > > >   # Lines beginning with '#' are comments.
    > > >   #
    > > >   use-brat-new
    > > >   use-gbrahms
    > > >   use-cern-2000
    > > >
    > > > In addition, each user must have the line
    > > >
    > > >    if ( -f /home/hehi/hehi/etc/hehi.cshrc ) then
    > > >      source /home/hehi/hehi/etc/hehi.cshrc
    > > >    endif
    > > >
    > > > in "~/.login" (in case of C-shells)
    > > >
    > > >   if test -f /home/hehi/hehi/etc/hehi.shrc ) then
    > > >     source /home/hehi/hehi/etc/hehi.shrc
    > > >   fi
    > > >
    > > > in "~/.profile" (in case of Korn-shells).
    > > >
    > > > These configuration scripts does all the work needed. Basically, they
    > > > parse the "~/.hehirc" for lines like "use-<feature>[-<version>]",
    > > > using "grep" and "sed":
    > > >
    > > >   setenv HEHI_TOP <out top directory for software>
    > > >
    > > >   # re-configuartin file
    > > >   set rcfile=${HOME}/.hehirc
    > > >   # defined features
    > > >   set options=( brat root objy gbrahms na44 qt cern TeXLive msql mysql )
    > > >
    > > >   # Loop over defined features
    > > >   foreach opt ($options)
    > > >     # Find the line macthing the current feature. Notice, some people
    > > >     # like to make "grep" an alias, so we escape it.
    > > >     set version=`\grep ^use-$opt $rcfile | sed -n "s/use-$opt-*\(.*\)/\1_/p"`
    > > >     if ($version != "") then
    > > >       # if the line matched contain a version number, we go on
    > > >       if ($version == "_") then
    > > >         # if the version is '_', inserted above, then we default to
    > > >         # "pro" version, which is asymbolic link to a specific version.
    > > >         set ${opt}Vers=pro
    > > >       else
    > > >         # otherwise we extract the version number form the matched line
    > > >         set ${opt}Vers=`echo $version| sed -n "s/\(.*\)_/\1/p"`
    > > >       endif
    > > >     endif
    > > >     # Remove temp variables
    > > >     unset opt
    > > >     unset version
    > > >   end
    > > >   # Remove temp variables
    > > >   unset options
    > > >   unset rcfile
    > > >
    > > > Having defined variables <opt>Vers=<version>, we can now do the checks
    > > > for the proper directories, set the environment and so on:
    > > >
    > > >   ### echo %%% Setup for BRAT
    > > >   if ( $?bratVers )  then
    > > >     # if variable "bratVers" is defined, then, we check to see if
    > > >     # wanted directory exist.
    > > >     if ( -d ${HEHI_TOP}/brat/${bratVers} ) then
    > > >       setenv BRATSYS  ${HEHI_TOP}/brat/${bratVers}
    > > >       setenv BRATHOME ${BRATSYS}
    > > >       setenv LD_LIBRARY_PATH ${BRATSYS}/lib/${BRAHMS_ARCH}:${LD_LIBRARY_PATH}
    > > >       setenv PATH ${BRATSYS}/bin/${BRAHMS_ARCH}:${PATH}
    > > >       # If "use-root[-<x>]" wasn't found, enable the default ROOT
    > > >       # version, since BRAT needs it.
    > > >       if (! $?rootVers) set rootVers=pro
    > > >     else
    > > >       echo "Requested BRAT version doesn't exist"
    > > >     endif
    > > >     # remove temp variable.
    > > >     unset bratVers
    > > >   endif
    > > >   ### echo %%%  Setup for ROOT
    > > >   if ($?rootVers) then
    > > >     if ( -d ${HEHI_TOP}/root/${rootVers} ) then
    > > >       setenv ROOTSYS ${HEHI_TOP}/root/${rootVers}
    > > >       setenv LD_LIBRARY_PATH ${ROOTSYS}/lib:${LD_LIBRARY_PATH}
    > > >       setenv PATH  ${ROOTSYS}/bin:${PATH}
    > > >     endif
    > > >     else
    > > >       echo "Requested ROOT version doesn't exist"
    > > >     unset rootVers
    > > >   endif
    > > >   ### echo %%%  Setup for CERNLIB
    > > >   if ($?cernVers) then
    > > >     # system may define CERN and CERN_LEVEL, so check those first.
    > > >     if (! $?CERN)       setenv CERN /cern
    > > >     if (! $?CERN_LEVEL) setenv CERN_LEVEL $cernVers
    > > >     if (! $?CERN_ROOT)  setenv CERN_ROOT ${CERN}/${CERN_LEVEL}
    > > >     # if the CERNLIB bin directory already is in the PATH, we shouldn't
    > > >     # add it again.
    > > >     if ( ! `echo $PATH | sed -n "s|.*cern.*|1|p"` ) \
    > > >       setenv PATH ${CERN_ROOT}/bin:${PATH}
    > > >     unset cernVers
    > > >   endif
    > > >
    > > > And a simil;ar script should exist for Korn-shells.
    > > >
    > > > On the pii<x>, we are fortunate to be the only users, so this kind of
    > > > script could be put directly into /etc/csh.cshrc and /etc/profile, if
    > > > so wanted.
    > > >
    > > > Now, $HEHITOP has a directory layout somewhat like:
    > > >
    > > >  $HEHITOP-+-brat-+-1.5.4
    > > >           |      +-1.5.5
    > > >           |      +-1.5.pre6
    > > >           |      +-1.6
    > > >           |      +-1.6.1
    > > >           |      +-pro => 1.5.pre6 (1.5.5 is buggy)
    > > >           |      +-new => 1.6.1
    > > >           |      +-old => 1.5.4
    > > >         +-root-+-2.23.11
    > > >           |      +-2.23.12
    > > >         |      +-2.24.02
    > > >         |      +-2.24.04
    > > >         |      +-pro => 2.23.12 (This is what ROOT calls pro)
    > > >         |      +-new => 2.24.04
    > > >         |      +-old => 2.23.11
    > > >         ...
    > > >
    > > > Now a user having a "~/.hehirc" file with the lines:
    > > >
    > > >   use-root-2.24.02
    > > >   use-brat-new
    > > >
    > > > while have a (parial) environemnt like
    > > >
    > > >   ROOTSYS $HEHI_TOP/root/2.24.02
    > > >   BRATSYS $HEHI_TOP/brat/1.6.1
    > > >   BRATHOME $HEHI_TOP/brat/1.6.1
    > > >   PATH $ROOTSYS/bin;$BRATSYS/bin;...
    > > >   LD_LIBRARY_PATH $ROOTSYS/lib;$BRATSYS/lib/$BRAHMS_ARCH;...
    > > >
    > > > I think this scheme works rather good. At least we're pretty sure what
    > > > version of BRAT/ROOT we're using, and everything is coherent. Also,
    > > > the user is completly free to everride any environment settings they
    > > > may see fit; however, then they can not expect the same level of
    > > > support as if they had used the "~/.hehirc" mechanism.
    > > >
    > > > I hope this will be useful,
    > > >
    > > > Christian  -----------------------------------------------------------
    > > > Holm Christensen                             Phone:  (+45) 35 35 96 91
    > > >   Sankt Hansgade 23, 1. th.                  Office: (+45) 353  25 305
    > > >   DK-2200 Copenhagen N                       Web:    www.nbi.dk/~cholm
    > > >   Denmark                                    Email:       cholm@nbi.dk
    > >
    > > --
    > > Konstantin Olchanski
    > > Physics Department, Brookhaven National Laboratory, Long Island, New York
    > > olchansk@bnl.gov
    > 
    > 
    
    =========================================================
    Anders Holm                     email:   aholm@nbi.dk
    Niels Bohr institute            phone:   (45) 35 32 52 13 
    University of Copenhagen        fax:     (45) 35 32 50 16
    Blegdamsvej 17
    DK-2100 Copenhagen
    Denmark
    ========================================================
    



    This archive was generated by hypermail 2b29 : Mon May 29 2000 - 02:14:30 EDT