Re: [ROOT] Installation directory

From: Christian Holm Christensen (cholm@hehi03.nbi.dk)
Date: Mon Apr 28 2003 - 21:09:24 MEST


Hi Vincent, 

Vincent Régnard <regnard@ganil.fr> wrote concerning
  [ROOT] Installation directory [Mon, 28 Apr 2003 20:27:11 +0200] 
----------------------------------------------------------------------
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Hi,
> I have been compiling and installing root v3.05.04 on a debian
> I "configure linuxdeb --prefix=/usr/local/root/root_v3.05.04"
> The compilation did succeed, I ran the "make install"
> a directory tree is created under the appropriate directory with lib, share, 
> bin and include, but the dynamic libraries and headers fall into a rather 
> unusual directory:
> headers are stored under $ROOTSYS/include/root/
> libraries are stored under $ROOTSYS/lib/root/ 
> binary directory is ok !

Please read `README/INSTALL', the section entitled `Choosing the
installation method', sub-item 2. 

The reason that the libraries live in `/usr/local/lib/root' and not
`/usr/local/lib' is that there are some unfortunate file names of the
ROOT libraries, like `libMatrix', libCore, etc. - imagine how many
applications would like to call their LA library just that.  So to
work around that, the libraries are installed in a subdirectory of
`/usr/local/lib'.  

ROOT contain some 500+ headers - you don't want them in
`/usr/local/include'  (not to mention `/usr/include') so we do the
standard thing, which is to put them all into a subdirectory.  

It would be nice if all client code and the ROOT headers themselves
used the form 

  #include <root/[header]> 

so that you basically didn't need to specify `-I/usr/include/root' on
the compiler command line.  However, the `root-config' script remedies
some of that. 

> The fact that a root subdirectory is created does look correct to me even if 
> it not a real problem. 

I guess you mean, `does _not_ look correct', or ...? 

> I modified my /etc/profile and everything works fine but I checked on 
> previous releases and usually headers where installed in $ROOTSYS/include
> and libraries $ROOTSYS/lib as we are used to under *nix system.

The point is, that when you use _any_ of the options that sets 
installation directories, you should _not_ set ROOTSYS.  As explained
in the installation instructions, ROOT will not look at that variable
if compiled as the second option describes. 

This has been in ROOT since 3.00 I think.  It's not at all a new
feature. 

> I realised the problem when running the test/programs. Invoking make
> in the  test directory revealed impossible to find the .so libs.  
> root-config --libs and root-config --cflags revealed the correct
> path for the  libs and headers but the Makefile in the test
> directory seems to use  LD_LIBRARY_FLAG and I had to modified it in
> /etc/profile to get it work. 

This is exactly why one should _never_ _ever_ expect the ROOTSYS
environment variable is set when building client applications and
libraries, but _always_ use the `root-config' script to get the paths
and so on (I know of at least one major client frameworks that assumes
that ROOTSYS is set, which is just plain wrong). 

If you have administrative privileges on a GNU/Linux system, you
should consider editing `/etc/ld.so.conf' to contain the path to the
ROOT libraries, and then run `ldconfig' (that's what the Debian and
Red Hat packages do). 

You can also compile the ROOT binaries with a specific runtime
load path by passing the option `--enable-rpath' to `configure. 

Both these issues are explained in the `README/INSTALL' file. 
 
> Maybe I missed something, ... 

You did - please read `README/INSTALL'  (a polite RTFM :-)

> ... otherwise I hope this remark will help debian users if it is a
> debian installation related problem.

It's not. 

For the Debian GNU/Linux (Woody, on i386) user out there.  You can now
use apt-get to get some `.deb' packages of ROOT.  Add the line  

  deb: http://cholm.home.cern.ch/cholm stable local 

to your `/etc/apt/sources.list' and run 

  apt-get update
  apt-get install root-bin

Note, that the `.deb's are build on my home system, may not be all up
to date, and can have funny dependencies (I mix Woody and Sid :-).
Hopefully the situation will change soon, and I'll have a pure stable
machine that can do regular builds.  More as that happens. 

It would be cool if the ROOT guys would build RPMs and DEBs as part of
their release process (hint hint :-) 

Also, there's a couple of packages you may need to do this, and I
haven't really set it up nicely just yet, but I'm working on it. 

> I saw the possibility to make some deb packages, ...

Just do `make debian' :-) 

> ... is there already a debian mirror where we can find precompiled
> uptodate deb packages ??? 

Up-to-date no, but see above. 

> Are there already some maintainers for such deb packages ?  

Yes and no.  I plan to become a Debian developer, but it is not at all
certain that ROOT will be able to enter Debian.  It certainly won't be
able to enter the `main' or `contrib' archives, as the licences is not
compliant with the Debian Free Software Guidelines, and other issues
may well keep it out of the `non-free' archive too.  

Anyway, the licence actually prohibits you from redistributing `.deb'
with out prior permission from the ROOT team.  Building them, and
installing them is OK, but redistributing them is not, as that
constitutes `modified' work. 

Hope that helps.

Oh, and it seems like Debian GNU/Linux is on the rise in the ROOT
community: very cool.   Now we just need some more Debian GNU/Hurd
users too :-)

Yours, 

 ___  |  Christian Holm Christensen 
  |_| |	 -------------------------------------------------------------
    | |	 Address: Sankt Hansgade 23, 1. th.  Phone:  (+45) 35 35 96 91
     _|	          DK-2200 Copenhagen N       Cell:   (+45) 24 61 85 91
    _|	          Denmark                    Office: (+45) 353  25 305
 ____|	 Email:   cholm@nbi.dk               Web:    www.nbi.dk/~cholm
 | |



This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:11 MET