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
This archive was generated by hypermail 2b29 : Sun May 28 2000 - 14:54:58 EDT