Re: BRAT changes - mult code and build system

From: Christian Holm Christensen (cholm@hehi03.nbi.dk)
Date: Thu May 03 2001 - 06:24:37 EDT

  • Next message: Christian Holm Christensen: "Re: Building ROOT on solaris (SPARC)"

    Hi Kris et al,  
    
    (this is rather long - sorry)
    
    On Tue, 01 May 2001 10:14:18 -0500
    hagel@comp.tamu.edu wrote
    concerning ": Re: BRAT changes - mult code and build system":
    > Christian,
    > Why is it more sensible to use any rootcint that might be in your path
    > instead of using the one in $ROOTSYS/bin which is associated with the root
    > that you wish to use?  
    
    If you have a rootcint in your path that is not the same as the one
    that is in $ROOTSYS/<what ever>, then you have a serious setup
    problem. 
    
    Also, You might be tempted to install ROOT binaries in, say 
    
          /usr/local/bin 
          /usr/local/root/bin/<arch> 
          /usr/local/root/<root-version>/bin/<arch> 
    
    and libraries in corresponding 
    
          /usr/local/lib
          /usr/local/root/lib/<arch> 
          /usr/local/root/<root-version>/lib/<arch> 
    
    in which case, the ROOTSYS makes no sense (and shouldn't be set at
    all). 
    
    > If you are not directing to the specific one you wish to use, I can
    > imagine some unintended behavior for people like me who might do
    > something "dirty", but still want it to work. 
    
    That's why I generally use a small program called "path" which can
    remove/add/... your path easily, so that you can quickly remove
    references to "dirty installs". I have a script that contains 
    
      setenv LD_LIBRARY_PATH `path -var LD_LIBRARY_PATH -r ${ROOTSYS}/lib`
      setenv PATH `path -r $ROOTSYS/bin` 
    
    These two lines will remove $ROOTSYS/bin from my PATH and $ROOTSYS/lib
    from my LD_LIBRARY_PATH, and then I do: 
    
      setenv ROOTSYS  ${root_base}${root_ver}
      setenv LD_LIBRARY_PATH `path -var LD_LIBRARY_PATH -b ${ROOTSYS}/lib`
      setenv PATH `path -b ${ROOTSYS}/bin`
    
    which will add ${root_base}${root_ver}/bin to my PATH and
    ${root_base}${root_ver}/lib to my LD_LIBRARY_PATH.  ${root_base} is
    where I install my "dirty" ROOTs and ${root_ver} is the version (e.g.,
    3.01.00, new, dev, pro). 
    
    All this sprang out of trying to create a set of scripts that'll ease
    the installation of the various tools used in BRAHMS, from ROOT to
    GBRAHMS, autotools(?) to BRAT.  What I do, is to have a directory
    structure like 
    
        adm:
    	administration scripts to update software etc. These are
    	of form update_<package>, and most of them accept the options 
    	-v <version> -s <symbol>, which will fetch a the package
    	sources and install everything in sw/<package>/<version>, and
    	possibly make a symlink to sw/<package>/<symbol>.  So for
    	example saying 
    
    	   ./update_root -v 3.00.06 -s new 
    
            will get the ROOT sources for version 3.00/06 in
    	src/root/3.00, configure it build it, and install it in 
    	sw/root/3.00 and make a symlink sw/root/new pointing to 
    	sw/root/3.00.
    
        src/<package>/<version>: 
            Source code for each of the software packages 
        sw/bin/<arch>: 
            Binaries for the "common" packages, like Autotools, tar
    	(needed for Solaris - sigh), login programs ("path" and
    	"readconf"), etc. 
        sw/include:
            Headers for "common" packages 
        sw/info:
            GNU Info pages for "common" packages
        sw/lib/<arch>:
            Libraries for "common" packages
        sw/man:
            Unix man(1) pages for "common" packages
        sw/sbin
            So far some scripts used by login feature. 
        sw/share 
            Data files used by "common" packages
        sw/<package>/<version> 
            Installation directories for each non-common (versioned)
    	packages. Packages are:
    	
    	  brat:
    	     No explanation needed 
              brjsf: 
                 Programs to submit jobs to CRF 
    	  gbrahms: 
    	     No explanation needed 
    	  mysql:
                 Client installation. 
              root: 
    	     No explanation needed 
    
            Each of these package directories has a number of version
    	directories, for example for ROOT: 
    
               root/2.25 
               root/3.00
    	   root/pro     => root/2.25
    	   root/new     => root/3.00 
    
            In each version directory, there's the subdirectories 
    	
               bin/<arch>
               lib/<arch> 
    
            and possibly 
    
               include
    	   share
    	    
                
    The idea then, is for people to have a file ~/.brahmsrc in thier home
    directory, with lines like 
    
    	   use-root-new 
    	   use-brat-old 
    	   use-gbrahms-pro 
    
    and in there shell login file (~/.login or ~/.profile) source the
    appropiate file 
    
         sw/sbin/brahms.sh      (SH family - ~/.profile) 
         sw/sbin/brahms.csh     (CSH family - ~/.login)
    
    
    It works fairly well on Linux, and it should work on Solaris if I
    could get ROOT and GBRAHMS to compile!
    
    I've made a installation stuff in rcas:/brahms/data08.  Take a look at
    it if you like. There's a README file in
    rcas:/brahms/data08/adm/README that gives more info. 
    
    Yours, 
    
    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 : Thu May 03 2001 - 06:25:38 EDT