Building ROOT v5 with RFIO support


I wonder why I can’t build ROOT with rfio-support, for version 5
(rght up to the latest CVS version).
It worked fine up to v4.04.02g…
(Scientific Linux 3.05 with gcc 3.2.3)

There is something new when I do './configure":

Checking for rfio_api.h … /usr/local/include/shift
Checking whether rfio_fchmod declared in rfio_api.h … yes
Checking for stager_api.h … no <<<<<<<<< This was not in v4.xx.xx
Checking for libshift, shiftmd, or shift … /usr/local/lib

The build is configured with rfio support enabled anyway :

Enabled support for asimage, builtin_afterimage, builtin_freetype, cern, exceptions, krb5, mysql, opengl, pgsql, python, rfio, shadowpw, shared, ssl, thread, xml, xrootd.

But eventually breaks down:

g++ -O -pipe -Wall -W -Woverloaded-virtual -fPIC -Iinclude -pthread -I/usr/local/include/shift
-o rfio/src/TCastorFile.o -c rfio/src/TCastorFile.cxx
rfio/src/TCastorFile.cxx:45:57: stage_api.h: No such file or directory
rfio/src/TCastorFile.cxx:47:62: Cns_api.h: No such file or directory
rfio/src/TCastorFile.cxx: In member function void TCastorFile::FindServerAndPath()': rfio/src/TCastorFile.cxx:123: aggregateCns_filestat st’ has incomplete type
and cannot be defined
rfio/src/TCastorFile.cxx:129: STAGE_MAX_HSMLENGTH' undeclared (first use this function) rfio/src/TCastorFile.cxx:129: (Each undeclared identifier is reported only once for each function it appears in.) rfio/src/TCastorFile.cxx:143:Cns_stat’ undeclared (first use this function)
rfio/src/TCastorFile.cxx:150: stage_setoutbuf' undeclared (first use this function) rfio/src/TCastorFile.cxx:154:stage_seterrbuf’ undeclared (first use this
rfio/src/TCastorFile.cxx:159: aggregate stgcat_entry stcp_input' has incomplete type and cannot be defined rfio/src/TCastorFile.cxx:162:sizeof’ applied to incomplete type stgcat_entry ' rfio/src/TCastorFile.cxx:176:stage_in_hsm’ undeclared (first use this
rfio/src/TCastorFile.cxx:195: stage_out_hsm' undeclared (first use this function) rfio/src/TCastorFile.cxx:202: invalid use of undefined typestruct
rfio/src/TCastorFile.cxx:118: forward declaration of struct stgcat_entry' rfio/src/TCastorFile.cxx:214: invalid use of undefined typestruct
rfio/src/TCastorFile.cxx:118: forward declaration of struct stgcat_entry' rfio/src/TCastorFile.cxx:218: invalid use of undefined typestruct
rfio/src/TCastorFile.cxx:118: forward declaration of struct stgcat_entry' rfio/src/TCastorFile.cxx:264: invalid use of undefined typestruct
rfio/src/TCastorFile.cxx:118: forward declaration of struct stgcat_entry' rfio/src/TCastorFile.cxx: In member functionvirtual Bool_t
TCastorFile::WriteBuffer(const char*, int)’:
rfio/src/TCastorFile.cxx:373: stage_hsm_t' undeclared (first use this function) rfio/src/TCastorFile.cxx:373: syntax error before;’ token
rfio/src/TCastorFile.cxx:376: hsmfile' undeclared (first use this function) rfio/src/TCastorFile.cxx:378:stage_updc_filchg’ undeclared (first use this
make: *** [rfio/src/TCastorFile.o] Error 1

I notice that ‘configure’ was looking for ‘stager_api.h’, whereas TCastorFile.cxx needs ‘stage_api.h’ - in any case neither of them were found.

The contents of /usr/local/include/shift are :

[franklan@ccali32 root_v5.04.00.source]$ ll /usr/local/include/shift/
total 81K
-rw-r–r-- 1 phg ccin2p3 1.5K May 30 2002 log.h
-rw-r–r-- 1 phg ccin2p3 5.9K Aug 11 2004 marshall.h
-rw-r–r-- 1 phg ccin2p3 2.4K May 30 2002 net.h
-rw-r–r-- 1 phg ccin2p3 3.5K May 30 2002 osdep.h
-rw-r–r-- 1 phg ccin2p3 558 May 30 2002 patchlevel.h
-rw-r–r-- 1 phg ccin2p3 2.5K May 30 2002 rfcntl.h
-rw-r–r-- 1 phg ccin2p3 9.5K May 30 2002 rfio.h
-rw-r–r-- 1 phg ccin2p3 13K Jun 28 17:28 rfio_api.h
-rw-r–r-- 1 phg ccin2p3 9.5K Sep 21 17:31 rfio_constants.h
-rw-r–r-- 1 phg ccin2p3 1.4K May 30 2002 rfio_errno.h
-rw-r–r-- 1 phg ccin2p3 23K Apr 21 2004 serrno.h
-rw-r–r-- 1 phg ccin2p3 967 May 30 2002 socket_timeout.h
-rw-r–r-- 1 phg ccin2p3 808 May 30 2002 trace.h

Is the installation of rfio/shift incomplete ? outdated ? or is there a problem with TCastorFile ?

Thanks for any help


You must take the current Castor/RFIO tar file from CERN.
See the installation page


Hi Rene
I’ll send an email to User.Support at the Centre de Calcul, asking them to update their installation. There are no ‘tar’ files, only 'rpm’s on the Castor website, so it’s an administrative job, I wouldn’t be able to (and wouldn’t want to) set up my own parallel version of the shift libraries at CCIN2P3!!

Dear Rene

Here is the reply from '
(I shan’t bother translating :wink: )

Nous n’avons pas de Castor au Centre, donc il faut l’enlever cette partie quand vous installer ROOT chez nous. Ce que nous faisons.
Notre RFIO n’est pas compatible avec Castor, nous avons HPSS au Centre.

Now I’m really confused. Can you help please ?

Hi John,

you have a very old shift library laying around in /usr/local which is not supported by the RFIO/Castor plugin. There are two things you can do:

  • install the latest Castor 2 client library if you need to access
    Castor somewhere
  • install ROOT without Castor support: ./configure --disable-rfio

Cheers, Fons.

Hi… I realize this is an old post, but I cannot disable building of the rfio. I have an older version of the Castor library, but when I do ./configure --disable-rfio it still tries to compile TCastorFile.cxx, which fails because it says it can’t find stage_api.h and other files.

I can compile 5.26.00b, but not 5.27.04 on.

Linux version 2.6.18-194.8.1.el5 ( (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)) #1 SMP Thu Jul 1 1


I take it back, compiling of 5.26.00b also fails for me as well…

bin/rmkdepend -R -fio/castor/src/TCastorFile.d -Y -w 1000 – -pipe -m64 -Wall -W -Woverloaded-virtual -fPIC -Iinclude -pthread -I/usr/local/include/shift -D__cplusplus – io/castor/src/TCastorFile.cxx
g++ -O2 -pipe -m64 -Wall -W -Woverloaded-virtual -fPIC -Iinclude -pthread -I/usr/local/include/shift -o io/castor/src/TCastorFile.o -c io/castor/src/TCastorFile.cxx
io/castor/src/TCastorFile.cxx:65:57: error: stage_api.h: No such file or directory

Hi Adam,

With the newer versions of ROOT, you need to do

./configure --disable-rfio --disable-castor

which should work I think.

Hope this helps,