Re: BRAHVO does not start. ROOT problem?

From: Christian Holm Christensen (cholm@hehi03.nbi.dk)
Date: Tue May 16 2000 - 11:11:02 EDT

  • Next message: Christian Holm Christensen: "Re: BRAHVO does not start. ROOT problem?"

    Hi Konstantin, 
    
    On Tue, 16 May 2000 10:38:00 -0400 Konstantin Olchanski <olchansk@ux1.phy.bnl.gov> wrote:
    > 
    > Folks, BRAHVO no longer runs on pii5. This is what I get:
    > 
    > 
    > operator@pii5<10>:id -a
    > uid=1021(operator) gid=31025(brahms) groups=31025(brahms)
    > operator@pii5<11>:pwd
    > /home/operator/HV/brahvo/bin
    > operator@pii5<12>:
    > operator@pii5<13>:brahvo
    > 
    > !!!!!!!!!!!!!!   W A R N I N G    !!!!!!!!!!!!!
    > 
    > The internal data structures have been changed.
    > Please recompile the setup file which contains
    > the definition "G__cpp_setupX11_G__X11()"
    > using CINT version 5.14.25, Nov 25 1999.
    > library=51428 cintbody=51415
    > 
    > !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    > 
    > operator@pii5<14>:
    
    Kris has recently moved ROOTSYS to point to ROOT version 2.24.04
    (previously 2.23.12), and as the incrementation of the second version 
    number indicates, this means  _alot_ of changes. Most noticably, CINT
    generated code isn't fully backward compatible (that's what I gather
    schimming through the release notes). This all boils down to:
    Recompile BraHVo, using the new ROOT version. 
    
    Hope that helps. 
    
    Incidently, many of these confutions could be avoided if the ROOT
    libraries was linkedd with the version number in the SONAME of the
    libraries. Ofcourse not all operating systems support this e.g.,
    Windoze, Digital Unix, Solaris, Silicon Graphics, IBM AIX, etc., but
    on those that do e.g., Linux, it can really prevent alot of version
    mismatches. To put the version number 2.1.12 into the SONAME of
    library libFoo, build from files Bar.o and Baz.o, one would do:
    
      prompt% g++ -shared -Wl,-soname,libFoo.so.2.1 -o libFoo.so.2.1.12 \ 
    	  Bar.o Baz.o 
      prompt% ln -s libFoo.so.2.1.12 libFoo.so.2.1
      prompt% ln -s libFoo.so.2.1 libFoo.so 
    
    This terasnlates into Make rules:
    
      LIBNAME	      = Foo
      LIBRARY	      = lib$(LIBNAME).so 
      LIBOBJS	      = Bar.o Baz.o 
      MAJOR		      = 2
      MINOR		      = 1
      REVISION	      = 12
    
      SOMAKER	      = g++
      SOFLAGS	      = -shared -Wl,-soname,
    
      %.so:
    	$(LD) $(SOFLAGS)$@.$(MAJOR).$(MINOR) \
    	      -o $@.$(MAJOR).$(MINOR).$(REVISION) $(LIBOBJS)
    	ln -s $@.$(MAJOR).$(MINOR).$(REVISION) $@.$(MAJOR).$(MINOR)
    	ln -s $@.$(MAJOR).$(MINOR) $@
    
      all:	$(LIBRARY)
      $(LIBRARY):$(LIBOBJS)
       
    Notice, that it is custumeray to have no more then Major and Minor
    version number in the SONAME. In fact, the GNU people recommends that
    one follows a versioning scheme, where only the Major version number
    is in the SONAME. 
    
    Anyway, that's a side note, but I thought I mention it, since I like
    that feature of Linux alot, and someone may find it useful. I did
    suggest this scheme at one time to the ROOT team, but they didn't
    really respond. 
    
    Cheers, 
    
    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 : Tue May 16 2000 - 11:14:16 EDT