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: 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
This archive was generated by hypermail 2b29 : Sun May 28 2000 - 11:57:59 EDT