TGFALFile install error

Hi,
I’m installing ROOT 5.34.34 on a vanilla install of SL6. I’ve installed older versions of ROOT with no problem, but this time get an error:

/home/mottram/cvmfs_temp/root-5.34.34/io/gfal/src/TGFALFile.cxx: In member function ‘virtual Int_t TGFALFile::SysOpen(const char*, Int_t, UInt_t)’:
/home/mottram/cvmfs_temp/root-5.34.34/io/gfal/src/TGFALFile.cxx:211: error: ‘::gfal_open64’ has not been declared
/home/mottram/cvmfs_temp/root-5.34.34/io/gfal/src/TGFALFile.cxx: In member function ‘virtual Long64_t TGFALFile::SysSeek(Int_t, Long64_t, Int_t)’:
/home/mottram/cvmfs_temp/root-5.34.34/io/gfal/src/TGFALFile.cxx:253: error: ‘::gfal_lseek64’ has not been declared
/home/mottram/cvmfs_temp/root-5.34.34/io/gfal/src/TGFALFile.cxx: In member function ‘virtual Int_t TGFALFile::SysStat(Int_t, Long_t*, Long64_t*, Long_t*, Long_t*)’:
/home/mottram/cvmfs_temp/root-5.34.34/io/gfal/src/TGFALFile.cxx:271: error: ‘::gfal_stat64’ has not been declared
/home/mottram/cvmfs_temp/root-5.34.34/io/gfal/src/TGFALFile.cxx: In member function ‘virtual void* TGFALSystem::OpenDirectory(const char*)’:
/home/mottram/cvmfs_temp/root-5.34.34/io/gfal/src/TGFALFile.cxx:388: error: ‘::gfal_stat64’ has not been declared
/home/mottram/cvmfs_temp/root-5.34.34/io/gfal/src/TGFALFile.cxx: In member function ‘virtual const char* TGFALSystem::GetDirEntry(void*)’:
/home/mottram/cvmfs_temp/root-5.34.34/io/gfal/src/TGFALFile.cxx:428: error: ‘::gfal_readdir64’ has not been declared
/home/mottram/cvmfs_temp/root-5.34.34/io/gfal/src/TGFALFile.cxx: In member function ‘virtual Int_t TGFALSystem::GetPathInfo(const char*, FileStat_t&)’:
/home/mottram/cvmfs_temp/root-5.34.34/io/gfal/src/TGFALFile.cxx:448: error: ‘::gfal_stat64’ has not been declared
make: *** [io/gfal/src/TGFALFile.o] Error 1

previous versions have had gfal enabled (I see this in the config.log). The only change I’ve made when installing this is to add --with-xrootd-incdir/libdir flags (pointing to xrootd-4.3.0).

I have no clue how to go about debugging this issue, any ideas greatly appreciated!

Cheers,
Matt

Sorry for the delay. It is understood. The problem is gfal vs gfal2 package. A fix will be provided.

This bug (plus some more) should be fixed by: ROOT v5-34-00-patches and v5-34-36 on Ubuntu 16.04
Please apply these fixes to the current “v5-34-00-patches” branch.

The fix has been committed to 5.34 branch.

Dear ROOT developers!

With a fresh checkout of the 5.34 branch I am getting now:
[lxblade04] ~/repository/root $ make
bin/rmkdepend -R -fio/gfal/src/TGFALFile.d -Y -w 1000 – -pipe -m64 -Wall -W -Woverloaded-virtual -fPIC -Iinclude -DR__HAVE_CONFIG -pthread -I/usr/include/gfal2 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -D_FILE_OFFSET_BITS=64 -D__cplusplus – /.automount/home/home__home4/institut_1b/heister/repository/root/io/gfal/src/TGFALFile.cxx
g++ -O2 -pipe -m64 -Wall -W -Woverloaded-virtual -fPIC -Iinclude -DR__HAVE_CONFIG -pthread -I/usr/include/gfal2 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -D_FILE_OFFSET_BITS=64 -o io/gfal/src/TGFALFile.o -c /.automount/home/home__home4/institut_1b/heister/repository/root/io/gfal/src/TGFALFile.cxx
/.automount/home/home__home4/institut_1b/heister/repository/root/io/gfal/src/TGFALFile.cxx: In member function \u2018virtual Int_t TGFALFile::SysOpen(const char*, Int_t, UInt_t)\u2019:
/.automount/home/home__home4/institut_1b/heister/repository/root/io/gfal/src/TGFALFile.cxx:211:16: error: \u2018::gfal_open64\u2019 has not been declared
Int_t ret = ::gfal_open64(pathname, flags, (Int_t) mode);
^
/.automount/home/home__home4/institut_1b/heister/repository/root/io/gfal/src/TGFALFile.cxx: In member function \u2018virtual Long64_t TGFALFile::SysSeek(Int_t, Long64_t, Int_t)\u2019:
/.automount/home/home__home4/institut_1b/heister/repository/root/io/gfal/src/TGFALFile.cxx:253:19: error: \u2018::gfal_lseek64\u2019 has not been declared
Long64_t ret = ::gfal_lseek64(fd, offset, whence);
^
/.automount/home/home__home4/institut_1b/heister/repository/root/io/gfal/src/TGFALFile.cxx: In member function \u2018virtual Int_t TGFALFile::SysStat(Int_t, Long_t*, Long64_t*, Long_t*, Long_t*)\u2019:
/.automount/home/home__home4/institut_1b/heister/repository/root/io/gfal/src/TGFALFile.cxx:271:11: error: \u2018::gfal_stat64\u2019 has not been declared
if (::gfal_stat64(fRealName, &statbuf) >= 0)
^
/.automount/home/home__home4/institut_1b/heister/repository/root/io/gfal/src/TGFALFile.cxx: In member function \u2018virtual void* TGFALSystem::OpenDirectory(const char*)\u2019:
/.automount/home/home__home4/institut_1b/heister/repository/root/io/gfal/src/TGFALFile.cxx:388:8: error: \u2018::gfal_stat64\u2019 has not been declared
if (::gfal_stat64(url.GetFileAndOptions(), &finfo) < 0)
^
/.automount/home/home__home4/institut_1b/heister/repository/root/io/gfal/src/TGFALFile.cxx: In member function \u2018virtual const char* TGFALSystem::GetDirEntry(void*)\u2019:
/.automount/home/home__home4/institut_1b/heister/repository/root/io/gfal/src/TGFALFile.cxx:428:12: error: \u2018::gfal_readdir64\u2019 has not been declared
dp = ::gfal_readdir64((DIR*)dirp);
^
/.automount/home/home__home4/institut_1b/heister/repository/root/io/gfal/src/TGFALFile.cxx: In member function \u2018virtual Int_t TGFALSystem::GetPathInfo(const char*, FileStat_t&)\u2019:
/.automount/home/home__home4/institut_1b/heister/repository/root/io/gfal/src/TGFALFile.cxx:448:16: error: \u2018::gfal_stat64\u2019 has not been declared
if (path && ::gfal_stat64(url.GetFileAndOptions(), &sbuf) >= 0) {
^
make: *** [io/gfal/src/TGFALFile.o] Error 1

Could you please advise what to do and which further info you’d need. I tried to compile on a Scientific Linux Release 6.8 (64 bits) machine.

Thanks and regards, Arno

Hi Arno,

Can you show me the first few lines of the header file /usr/include/gfal2/gfal_api.h. In particular I am interested the header guards.
Cheers,
Pere

Dear Pere!

Thanks for the quick reply!

I have attached the complete file.

Cheers, Arno
gfal_api.h (1.46 KB)

Dear Arno,

I do not understand. The case GFAL2_API_H_ is already foreseen in the file TGFALFile.cxx, two options:

  • You are not using the head of v5-34-00-patches branch, or
  • you have another gfal_api.h file in your system that is picked up and is for GFAL version 1
    Cheers,

Pere

Hi Pere!
Thanks for your help. You were right: option one … one of my git-repo had the wrong branch, i.e. v5-34-00 instead of v5-34-00-patches! Good catch and thanks much again!! Now all works fine …

Cheers, Arno