How to automatize ROOT installation (for a proof cluster)

Hello,

We would like to build a small PROOF cluster to perform tests. The nodes are
running SL5 x86_64. I would like to automatize installation of ROOT as much as
possible. I have listed 4 different ways to do it :

a) Install a binary distribution SL5 on each server
b) Fetch the distrib and compile on each server
c) Fetch the distrib, compile and build an RPM to be installed on other servers
d) Install a binary distribution one one server and create a binary RPM including
all the install tree

I can do a) and b). I am trying c) at the moment but I have questions :

  1. what is the status of ROOT for the x86_64 platform ? It seems it requires i386
    version of the libraries in order to build ?

  2. for using ROOT as a PROOF server, what are the minimal .configure options
    to include (–disable --enable) ?

  3. I have problems using the automatic procedure to build the RPM with
    make redhat. What is the status of this, are there known problems ?

Thank you very much.

JM Barbet.

Dear JM,

ROOT on X86_64 works fine as far as we can say and it tries to uses x86-64 versions of the libraries to build. Did you experience problems with that?

By default the required basic service (xrootd) is enabled. This should typically be enough. Specific authentication requirements may need require the specification of some option, though. If you specify your need in the respect, I can be more precise.

Could you please post/describe the problems? We can try to get the author to look at them.

G. Ganis

Hello, Thanks for the answer,

[quote]ROOT on X86_64 works fine as far as we can say and it tries to uses x86-64 versions of the libraries to build. Did you experience problems with that?
[/quote]

On a SL5.2 x86_64 system :

 ./configure linux --prefix=/opt
Configuring for linux
Checking for GNU Make version >= 3.79.1 ... ok
Checking for C compiler ... gcc
Checking for C++ compiler ... g++
Checking for linker (LD) ... g++
Checking for F77 compiler ... gfortran
Checking for libX11 ... no
configure: libX11 (package libX11-devel) MUST be installed

64bitsd version of the library is installed :

rpm -qa | grep -i libX11
libX11-1.0.3-9.el5
libX11-devel-1.0.3-9.el5

It works if I install the 32bits version of this library (+ a dozen others also required
for this basic build).

I have not started to study authentication in PROOF so, for the moment, building
ROOT for using on PROOF servers with no or basic auth is enough. But, thanks,
I may come back on this subject in the PROOF specific forum. BTW, could I
also remove the needs for X11 libraries or other stuff by adding --disable options
to the ./configure ? (trying to build the miminal ROOT for using with PROOF) ?

About building RPMs, I have to reproduce and keep a log of the problems to be
more precise. I will give more info later.

Thanks again.

JM

Hello JM,

I think the problem is that you force ‘linux’ at configure.
Try with

  ./configure --prefix=/opt

You should get something like

Configuring for linuxx8664gcc
Checking for GNU Make version >= 3.79.1 ... ok
Checking for C compiler ... gcc
Checking for C++ compiler ... g++
Checking for linker (LD) ... g++
Checking for F77 compiler ... gfortran
Checking for libX11 ... /usr/lib64
Checking for X11/Xlib.h ... /usr/include
Checking for X11/Xft/Xft.h ... /usr/include
Checking for X11/extensions/shape.h ... /usr/include
...

If not, try forcing x86_64 with

  ./configure linuxx8664gcc  --prefix=/opt

If still does not work, could you locate libX11.so? Normally it should be under /usr/lib64 …

Not at the moment: there are a few libraries not always installed by default (e.g. X11-devel, Xpm, Xft, …) which are mandatory; ‘configure’ will tell you which ones …

Ok.

Gerri

[quote=“barbet”]Hello, Thanks for the answer,
About building RPMs, I have to reproduce and keep a log of the problems to be
more precise. I will give more info later.
[/quote]

Hello,

I gave a new try and here is what I have found :

Only the packages libtool-static and root-system were built and the later had only
the file /usr/share/doc/root-5.22.00/README in it. It seems this is because the
.configure in the script build/package/lib/makerpmspec.sh failed silently because
the mysql librairies were not available. IMHO it should stop the process and return
an error.

The parameters passed to the .configure in this script build/package/lib/makerpmspec.sh
are not the ones used with the .configure at the top level, so we build a spec file that
will build almost all the packages.

Event if I try to pass minimal parameters to the .configure called in the script
build/package/lib/makerpmspec.sh, the package list is very long. Could we only
build a few if not one package ?

BTW, enabling mathmore result in a BuildRequire dependency to gsl-devel which
is not available in Scientific-Linux. I had to get it from the ATRPMS repository.

Also, I do not know how to get rid of the BuildRequire dependency to libungif-devel.

And finally, when trying rpmbuild -ba root.spec, the process fails with many messages
like the one below and I suspect that this is because links for the libraries are not
correctly build by the portion of code below from root.spec :

Messages :

 [...]
   File not found: /tmp/rootrpm/usr/lib/root/5.22/libProofx.so.5
    File not found: /tmp/rootrpm/usr/lib/root/5.22/libProofx.so.5.22
    File not found: /tmp/rootrpm/usr/lib/root/5.22/libXrdProofd.so.5
    File not found: /tmp/rootrpm/usr/lib/root/5.22/libXrdProofd.so.5.22
    File not found: /tmp/rootrpm/usr/lib/root/5.22/libTreeViewer.so.5
    File not found: /tmp/rootrpm/usr/lib/root/5.22/libTreeViewer.so.5.22
    File not found: /tmp/rootrpm/usr/bin/cint
    File not found: /tmp/rootrpm/usr/bin/makecint
    File not found: /tmp/rootrpm/usr/lib/root/5.22/libCint.so.5
    File not found: /tmp/rootrpm/usr/lib/root/5.22/libCint.so.5.22
    File not found: /tmp/rootrpm/usr/lib/root/5.22/libCintex.so.5
    File not found: /tmp/rootrpm/usr/lib/root/5.22/libCintex.so.5.22
    File not found: /tmp/rootrpm/usr/lib/root/5.22/libCore.so.5
    File not found: /tmp/rootrpm/usr/lib/root/5.22/libCore.so.5.22
[...]

Code :

# Make links from version specific directory to `normal' libary dir
(cd ${RPM_BUILD_ROOT}%{_prefix}/lib/root && \
    for i in %{sovers}/*.so.%{sovers} %{sovers}/libXrd*.so ; do  \
        ln -sf $i . ; \
        ln -sf $i `basename $i .%{sovers}` ; done; \
    ln -sf %{sovers}/cint .)

I can provide more info if needed or perform more tests. This is not urgent.

Tanks

JM

Hi Jean-Michel,

It should be evident from the output that it failed. Could you perhaps try to do

make redhat > spec.log 2>&1

and post it here?

The targets redhat and debian are meant to build distribution-quality packages. That means, that it is assumed that the biggest possible package-set should be built. Remember, building a large package set does not necessarily mean that you will install all of the packages. It makes good sense to get as many packages as possible. Suppose you for exampled disabled the MySQL plug-in and then some user of your PROOF cluster comes along with code that needs MySQL access - then you’d have to rebuild everything from scratch again! If you already made the packages, the plug-in is no further away than a simple yum/apt-get command.

If you’d still like to built a minimal set, then you should read build/package/debian/README.Debian in the source tree. See also README/INSTALL. Essentially, you need to edit build/package/lib/makerpmspec.sh to only include the stuff you need.

The packages are organized according to the source tree directory structure. That means, that stuff in xx/yy go in package libroot-xx-yy or root-plugin-[xx[/i]-yy (with a few exceptions). This is done to give the user the most flexibility possible. Again, remember that the targets is meant to produce distribution-quality packages.

If you’d prefer a single large package, I suggest you write your own SPEC file.

Isn’t it great: Scientific Linux does not contain the GNU Scientific Library :? In my mind, it’s ridiculous.

MathMore is more or less a mandatory part of ROOT these days, so it should be built. I guess you have to take the stuff from the external repository.

You can’t. libungif is used by AfterImage and that’s required.

I think it fails because something else fails.

Perhaps you could make a log of your attempts and post them here?

   make redhat > ../spec.log 2>&1 
   rpmbuild -ta root_v<X>.<Y>.source.tar.gz > ../rpm.log 2>&1 

Also please post the generated SPEC file.

Yours,

Christian

BTW, the best way to distribute RPMs to a cluster is to set up a private repository, using f.ex. createrepo (do a google search).

Yours,

Christian

I just want to chip in that this worked for me on a Fedora 13 x86_64 system, so anyone out there Googling can hopefully find this faster.

Originally I was forcing linuxx8664gcc architecture, but I left it out and root compiled fine.

[quote=“ganis”]Hello JM,

I think the problem is that you force ‘linux’ at configure.
Try with

  ./configure --prefix=/opt

You should get something like

Configuring for linuxx8664gcc
Checking for GNU Make version >= 3.79.1 ... ok
Checking for C compiler ... gcc
Checking for C++ compiler ... g++
Checking for linker (LD) ... g++
Checking for F77 compiler ... gfortran
Checking for libX11 ... /usr/lib64
Checking for X11/Xlib.h ... /usr/include
Checking for X11/Xft/Xft.h ... /usr/include
Checking for X11/extensions/shape.h ... /usr/include
...

If not, try forcing x86_64 with

  ./configure linuxx8664gcc  --prefix=/opt

If still does not work, could you locate libX11.so? Normally it should be under /usr/lib64 …

Not at the moment: there are a few libraries not always installed by default (e.g. X11-devel, Xpm, Xft, …) which are mandatory; ‘configure’ will tell you which ones …

Ok.

Gerri[/quote]

Hi

I’m trying to make a SLC6-i386 rpm of ROOT - 5.26.00e

I already have the root.spec but adding

–disable-gviz
–disable-bonjour \

to …root/build/package/lib/makerpmspec.sh, i’m not sure if it was correct.

Now, when i build the rpm, it stops complaining of Proof

Processing files: root-plugin-proof-xproof-5.26.00e-1.i386
error: File not found: /home/ademar/rpmbuild/BUILDROOT/root-system-5.26.00e-1.i386/usr/lib/root/5.26/libProofx.rootmap
error: File not found: /home/ademar/rpmbuild/BUILDROOT/root-system-5.26.00e-1.i386/usr/lib/root/5.26/libProofx.so
error: File not found: /home/ademar/rpmbuild/BUILDROOT/root-system-5.26.00e-1.i386/usr/lib/root/5.26/libProofx.so.5
error: File not found: /home/ademar/rpmbuild/BUILDROOT/root-system-5.26.00e-1.i386/usr/lib/root/5.26/libProofx.so.5.26

And the only libProof in that directory are:

libProofDraw.rootmap    libProofPlayer.rootmap  libProof.rootmap
libProofDraw.so         libProofPlayer.so       libProof.so
libProofDraw.so.5       libProofPlayer.so.5     libProof.so.5
libProofDraw.so.5.26    libProofPlayer.so.5.26  libProof.so.5.26

Is there anyone how experience the same problem or have any clue?

I attach the spec file generated by make redhat.

Thanks in advance
Ademar
root.spec.txt (98.8 KB)