libClarens.so.5.34 cannot be built in v5-34-00-patches@44990

This is CentOS 6.3 x86_64 (64-bit) with gcc 4.4.6 here …
While trying to compile the current ROOT “v5-34-00-patches@44990”, I get … [code]bin/rmkdepend -R -fproof/clarens/src/TClarens.d -Y -w 1000 – -pipe -m64 -Wshadow -Wall -W -Woverloaded-virtual -fPIC -Iinclude -pthread -I/usr/include/libxml2 -D__cplusplus – /…/proof/clarens/src/TClarens.cxx
g++ -O2 -pipe -m64 -Wshadow -Wall -W -Woverloaded-virtual -fPIC -Iinclude -pthread -I/usr/include/libxml2 -o proof/clarens/src/TClarens.o -c /…/proof/clarens/src/TClarens.cxx
bin/rmkdepend -R -fproof/clarens/src/TClProxy.d -Y -w 1000 – -pipe -m64 -Wshadow -Wall -W -Woverloaded-virtual -fPIC -Iinclude -pthread -I/usr/include/libxml2 -D__cplusplus – /…/proof/clarens/src/TClProxy.cxx
g++ -O2 -pipe -m64 -Wshadow -Wall -W -Woverloaded-virtual -fPIC -Iinclude -pthread -I/usr/include/libxml2 -o proof/clarens/src/TClProxy.o -c /…/proof/clarens/src/TClProxy.cxx
bin/rmkdepend -R -fproof/clarens/src/TClSession.d -Y -w 1000 – -pipe -m64 -Wshadow -Wall -W -Woverloaded-virtual -fPIC -Iinclude -pthread -I/usr/include/libxml2 -D__cplusplus – /…/proof/clarens/src/TClSession.cxx
g++ -O2 -pipe -m64 -Wshadow -Wall -W -Woverloaded-virtual -fPIC -Iinclude -pthread -I/usr/include/libxml2 -o proof/clarens/src/TClSession.o -c /…/proof/clarens/src/TClSession.cxx
bin/rmkdepend -R -fproof/clarens/src/TEcho.d -Y -w 1000 – -pipe -m64 -Wshadow -Wall -W -Woverloaded-virtual -fPIC -Iinclude -pthread -I/usr/include/libxml2 -D__cplusplus – /…/proof/clarens/src/TEcho.cxx
g++ -O2 -pipe -m64 -Wshadow -Wall -W -Woverloaded-virtual -fPIC -Iinclude -pthread -I/usr/include/libxml2 -o proof/clarens/src/TEcho.o -c /…/proof/clarens/src/TEcho.cxx
bin/rmkdepend -R -fproof/clarens/src/TGM.d -Y -w 1000 – -pipe -m64 -Wshadow -Wall -W -Woverloaded-virtual -fPIC -Iinclude -pthread -I/usr/include/libxml2 -D__cplusplus – /…/proof/clarens/src/TGM.cxx
g++ -O2 -pipe -m64 -Wshadow -Wall -W -Woverloaded-virtual -fPIC -Iinclude -pthread -I/usr/include/libxml2 -o proof/clarens/src/TGM.o -c /…/proof/clarens/src/TGM.cxx
/…/proof/clarens/src/TGM.cxx: In member function ‘Bool_t TGM::CreateSession(const Char_t*, TString&, TList*&, TUrl&)’:
/…/proof/clarens/src/TGM.cxx:125: warning: declaration of ‘n’ shadows a previous local
/…/proof/clarens/src/TGM.cxx:115: warning: shadowed declaration is here
bin/rmkdepend -R -fproof/clarens/src/TLM.d -Y -w 1000 – -pipe -m64 -Wshadow -Wall -W -Woverloaded-virtual -fPIC -Iinclude -pthread -I/usr/include/libxml2 -D__cplusplus – /…/proof/clarens/src/TLM.cxx
g++ -O2 -pipe -m64 -Wshadow -Wall -W -Woverloaded-virtual -fPIC -Iinclude -pthread -I/usr/include/libxml2 -o proof/clarens/src/TLM.o -c /…/proof/clarens/src/TLM.cxx
bin/rmkdepend -R -fproof/clarens/src/TSAM.d -Y -w 1000 – -pipe -m64 -Wshadow -Wall -W -Woverloaded-virtual -fPIC -Iinclude -pthread -I/usr/include/libxml2 -D__cplusplus – /…/proof/clarens/src/TSAM.cxx
g++ -O2 -pipe -m64 -Wshadow -Wall -W -Woverloaded-virtual -fPIC -Iinclude -pthread -I/usr/include/libxml2 -o proof/clarens/src/TSAM.o -c /…/proof/clarens/src/TSAM.cxx
/…/proof/clarens/src/TSAM.cxx: In member function ‘Bool_t TSAM::GetDSetFiles(const Char_t*, const Char_t*, TList*&)’:
/…/proof/clarens/src/TSAM.cxx:208: warning: declaration of ‘n’ shadows a previous local
/…/proof/clarens/src/TSAM.cxx:198: warning: shadowed declaration is here
bin/rmkdepend -R -fproof/clarens/src/TXmlRpc.d -Y -w 1000 – -pipe -m64 -Wshadow -Wall -W -Woverloaded-virtual -fPIC -Iinclude -pthread -I/usr/include/libxml2 -D__cplusplus – /…/proof/clarens/src/TXmlRpc.cxx
g++ -O2 -pipe -m64 -Wshadow -Wall -W -Woverloaded-virtual -fPIC -Iinclude -pthread -I/usr/include/libxml2 -o proof/clarens/src/TXmlRpc.o -c /…/proof/clarens/src/TXmlRpc.cxx
Generating dictionary proof/clarens/src/G__Clarens.cxx…
core/utils/src/rootcint_tmp -cint -f proof/clarens/src/G__Clarens.cxx -c /…/proof/clarens/inc/TClarens.h /…/proof/clarens/inc/TClProxy.h /…/proof/clarens/inc/TClSession.h /…/proof/clarens/inc/TEcho.h /o
pt/ROOT/CentOS62_x86_64_gcc446/build/v5-34-00-patches/proof/clarens/inc/TGM.h /…/proof/clarens/inc/TLM.h /…/proof/clarens/inc/TSAM.h /…/proof/clarens/inc/TXmlRpc.h /…/proof/clarens/inc/LinkDef.h
bin/rmkdepend -R -fproof/clarens/src/G__Clarens.d -Y -w 1000 – -pipe -m64 -Wshadow -Wall -W -Woverloaded-virtual -fPIC -Iinclude -pthread -I/usr/include/libxml2 -D__cplusplus -Icint/cint/lib/prec_stl -Icint/cint/stl -I/…/cint/cint/inc – proof/clarens/src/G__Clarens.cxx
g++ -pipe -m64 -Wshadow -Wall -W -Woverloaded-virtual -fPIC -Iinclude -pthread -I/usr/include/libxml2 -I. -I/…/cint/cint/inc -o proof/clarens/src/G__Clarens.o -c proof/clarens/src/G__Clarens.cxx
g++ -shared -Wl,-soname,libClarens.so.5.34 -m64 -O2 -Wl,–no-undefined -Wl,–as-needed -o lib/libClarens.so.5.34 proof/clarens/src/TClarens.o proof/clarens/src/TClProxy.o proof/clarens/src/TClSession.o proof/clarens/src/TEcho.o proof/clarens/src/TGM.o proof/clarens/src/TLM.o proof/clarens/src/TSAM.o proof/clarens/src/TXmlRpc.o proof/clarens/src/G__Clarens.o -lxmlrpc_client -Llib -lMathCore -lcrypto -Llib -lCore -lCint -ldl
proof/clarens/src/TClSession.o: In function B64Decode(_xmlrpc_env*, unsigned char*, int*)': TClSession.cxx:(.text+0x1a8): undefined reference toxmlrpc_base64_decode’
TClSession.cxx:(.text+0x1bf): undefined reference to xmlrpc_mem_block_size' TClSession.cxx:(.text+0x1df): undefined reference toxmlrpc_mem_block_contents’
TClSession.cxx:(.text+0x1fe): undefined reference to xmlrpc_mem_block_free' TClSession.cxx:(.text+0x2ed): undefined reference toxmlrpc_mem_block_free’
proof/clarens/src/TClSession.o: In function B64Encode(_xmlrpc_env*, unsigned char*, int)': TClSession.cxx:(.text+0x35f): undefined reference toxmlrpc_base64_encode’
TClSession.cxx:(.text+0x376): undefined reference to xmlrpc_mem_block_size' TClSession.cxx:(.text+0x394): undefined reference toxmlrpc_mem_block_contents’
TClSession.cxx:(.text+0x3b0): undefined reference to xmlrpc_mem_block_free' TClSession.cxx:(.text+0x495): undefined reference toxmlrpc_mem_block_free’
proof/clarens/src/TClSession.o: In function TClSession::Create(char const*)': TClSession.cxx:(.text+0x1011): undefined reference toxmlrpc_env_init’
TClSession.cxx:(.text+0x11aa): undefined reference to xmlrpc_parse_value' TClSession.cxx:(.text+0x1345): undefined reference toxmlrpc_DECREF’
proof/clarens/src/TEcho.o: In function TEcho::Hostname(TString&, TString&)': TEcho.cxx:(.text+0x9f): undefined reference toxmlrpc_env_clean’
TEcho.cxx:(.text+0xa8): undefined reference to xmlrpc_env_init' TEcho.cxx:(.text+0x10f): undefined reference toxmlrpc_parse_value’
TEcho.cxx:(.text+0x16d): undefined reference to `xmlrpc_DECREF’

(… tons of such messages …)

proof/clarens/src/TXmlRpc.o: In function (anonymous namespace)::get_string(_xmlrpc_env*, _xmlrpc_value*)': TXmlRpc.cxx:(.text+0x90): undefined reference toxmlrpc_parse_value’
proof/clarens/src/TXmlRpc.o: In function (anonymous namespace)::print_values(int, _xmlrpc_env*, _xmlrpc_value*)': TXmlRpc.cxx:(.text+0x116): undefined reference toxmlrpc_value_type’
TXmlRpc.cxx:(.text+0x1f9): undefined reference to xmlrpc_array_size' TXmlRpc.cxx:(.text+0x247): undefined reference toxmlrpc_array_get_item’
TXmlRpc.cxx:(.text+0x2ad): undefined reference to xmlrpc_parse_value' TXmlRpc.cxx:(.text+0x2fe): undefined reference toxmlrpc_parse_value’
TXmlRpc.cxx:(.text+0x366): undefined reference to xmlrpc_parse_value' TXmlRpc.cxx:(.text+0x3b6): undefined reference toxmlrpc_parse_value’
TXmlRpc.cxx:(.text+0x405): undefined reference to xmlrpc_parse_value' TXmlRpc.cxx:(.text+0x47f): undefined reference toxmlrpc_struct_size’
TXmlRpc.cxx:(.text+0x53e): undefined reference to xmlrpc_struct_get_key_and_value' proof/clarens/src/TXmlRpc.o: In functionTXmlRpc::PrintValue(_xmlrpc_value*)’:
TXmlRpc.cxx:(.text+0x602): undefined reference to xmlrpc_env_init' proof/clarens/src/TXmlRpc.o: In functionTXmlRpc::TXmlRpc(TClSession*)’:
TXmlRpc.cxx:(.text+0x8ae): undefined reference to xmlrpc_env_init' proof/clarens/src/TXmlRpc.o: In functionTXmlRpc::PrintValue(_xmlrpc_value*)’:
TXmlRpc.cxx:(.text+0x625): undefined reference to xmlrpc_env_clean' proof/clarens/src/G__Clarens.o: In functionTXmlRpc::GetEnv()’:
G__Clarens.cxx:(.text._ZN7TXmlRpc6GetEnvEv[TXmlRpc::GetEnv()]+0x18): undefined reference to xmlrpc_env_clean' G__Clarens.cxx:(.text._ZN7TXmlRpc6GetEnvEv[TXmlRpc::GetEnv()]+0x28): undefined reference toxmlrpc_env_init’
collect2: ld returned 1 exit status
make: *** [lib/libClarens.so] Error 1[/code] BTW. Don’t miss this report: [url]Qtcint.so.5.31 cannot be built in trunk@41669

Hi,

Can you tweak the link line:g++ -shared -Wl,-soname,libClarens.so.5.34 -m64 -O2 -Wl,--no-undefined -Wl,--as-needed -o lib/libClarens.so.5.34 proof/clarens/src/TClarens.o proof/clarens/src/TClProxy.o proof/clarens/src/TClSession.o proof/clarens/src/TEcho.o proof/clarens/src/TGM.o proof/clarens/src/TLM.o proof/clarens/src/TSAM.o proof/clarens/src/TXmlRpc.o proof/clarens/src/G__Clarens.o -lxmlrpc_client -Llib -lMathCore -lcrypto -Llib -lCore -lCint -ldl until it works … I see no obvious problem (-lxmlrpc_client is present and after the .o files).

Thanks,
Philippe.

O.K. … I tried to “copy” the list of libraries from Ubuntu/i686 to CentOS/x86_64 … two of them, “-lxmlrpc_xmlparse” and “-lxmlrpc_xmltok”, do not exist on CentOS/x86_64 … but then the following two link command lines work (the difference is “-L/usr/lib64” as I am not sure if it should be there or not): g++ -shared -Wl,-soname,libClarens.so.5.34 -m64 -O2 -Wl,--no-undefined -Wl,--as-needed -o lib/libClarens.so.5.34 proof/clarens/src/TClarens.o proof/clarens/src/TClProxy.o proof/clarens/src/TClSession.o proof/clarens/src/TEcho.o proof/clarens/src/TGM.o proof/clarens/src/TLM.o proof/clarens/src/TSAM.o proof/clarens/src/TXmlRpc.o proof/clarens/src/G__Clarens.o -L/usr/lib64 -lcurl -lxmlrpc_client -lxmlrpc -lxmlrpc_util -Llib -lMathCore -lcrypto -Llib -lCore -lCint -ldl g++ -shared -Wl,-soname,libClarens.so.5.34 -m64 -O2 -Wl,--no-undefined -Wl,--as-needed -o lib/libClarens.so.5.34 proof/clarens/src/TClarens.o proof/clarens/src/TClProxy.o proof/clarens/src/TClSession.o proof/clarens/src/TEcho.o proof/clarens/src/TGM.o proof/clarens/src/TLM.o proof/clarens/src/TSAM.o proof/clarens/src/TXmlRpc.o proof/clarens/src/G__Clarens.o -lcurl -lxmlrpc_client -lxmlrpc -lxmlrpc_util -Llib -lMathCore -lcrypto -Llib -lCore -lCint -ldl Also, the “-lcurl” seems to be redundant (i.e. not needed), though it’s present above.
Moreover, I made sure that the following two libraries are really needed: “-lxmlrpc” “-lxmlrpc_util” (plus the “-lxmlrpc_client”, of course).
Note, CentOS 6.3 should actually be almost equal to SL 6.3, SLC 6.3 and RHEL 6.3.
For completeness, here’s the Ubuntu/i686 linker command line: g++ -shared -Wl,-soname,libClarens.so.5.34 -m32 -O2 -Wl,--no-undefined -Wl,--as-needed -o lib/libClarens.so.5.34 proof/clarens/src/TClarens.o proof/clarens/src/TClProxy.o proof/clarens/src/TClSession.o proof/clarens/src/TEcho.o proof/clarens/src/TGM.o proof/clarens/src/TLM.o proof/clarens/src/TSAM.o proof/clarens/src/TXmlRpc.o proof/clarens/src/G__Clarens.o -L/usr/lib -lcurl -lxmlrpc_client -lxmlrpc -lxmlrpc_util -lxmlrpc_xmlparse -lxmlrpc_xmltok -Llib -lMathCore -lcrypto -Llib -lCore -lCint -ldl

Hi,

Humm … The list of library is obtains via an explicit call to:xmlrpc-c-config client --ldaddwhich is seemingly under-reporting the needed list … Can you check if we are using the ‘wrong’ arguments?

Thanks,
Philippe.

[…]$ xmlrpc-c-config client --ldadd
-lxmlrpc_client
[…]$ type xmlrpc-c-config
xmlrpc-c-config is hashed (/usr/bin/xmlrpc-c-config)
[…]$ rpm -qf /usr/bin/xmlrpc-c-config
xmlrpc-c-devel-1.16.24-1209.1840.el6.x86_64
[…]$ pkg-config --libs-only-l xmlrpc_client
-lxmlrpc_client
[…]$ type pkg-config
pkg-config is /usr/bin/pkg-config
[…]$ rpm -qf /usr/bin/pkg-config
pkgconfig-0.23-9.1.el6.x86_64
[…]$ cat /usr/lib64/pkgconfig/xmlrpc_client.pc
bindir=/usr/bin
prefix=/usr
libdir=/usr/lib64
includedir=/usr/include

Name: xmlrpc_client
Description: XMLRPC client library
Version: 1.16.24

Requires.private: xmlrpc libcurl xmlrpc_util
Libs: -L${libdir} -lxmlrpc_client
Cflags: -I${includedir}

Yeah … well :slight_smile: It is not returning the same thing as on SLC6 and is seemingly not what we expect (i.e the complete list of library needed …) and/or there is an installation problem for xmlrpc …

Philippe.

I checked a “fully updated” SLC 6.3 / i686 machine and I get exactly the same output as shown in my previous post (which comes from a CentOS 6.3 / x86_64).
Could you, please, run all commands (that I show in my previous post) on your SLC6 (I assume it’s “fully updated”, too)?

Well, a possible “solution” …

  1. check what “xmlrpc-c-config --version” returns …
  2. if it’s something like “1.06.27” (Ubuntu 10.04) … it’s an “old style” xmlrpc-c-config script (contains “hardcoded” libraries’ lists) … use “xmlrpc-c-config client --ldadd”
  3. if it’s something like “1.16.24” (CentOS 6.3) … it’s a “new style” xmlrpc-c-config script (based on “pkg-config”) … use “xmlrpc-c-config client --libs --static”

[Ubuntu 10.04.4 LTS / i686]$ xmlrpc-c-config --version 1.06.27 [Ubuntu 10.04.4 LTS / i686]$ xmlrpc-c-config client --ldadd -L/usr/lib -lcurl -lxmlrpc_client -lxmlrpc -lxmlrpc_util -lxmlrpc_xmlparse -lxmlrpc_xmltok

[CentOS 6.3 / x86_64]$ xmlrpc-c-config --version 1.16.24 [CentOS 6.3 / x86_64]$ xmlrpc-c-config client --libs --static -lxmlrpc_client -lxmlrpc -lcurl -lidn -lldap -lrt -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lssl3 -lsmime3 -lnss3 -lnssutil3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl -lssh2 -lxml2 -lz -lm -lxmlrpc_util

Hi Pepe,

We currently do not have easy access to this versions and so would essentially guess an implementation. Could you propose a patch to ./configure implementing you recommendation?

Thanks,
Philippe.

SLC 6.3 became the default SLC6 production version on Monday 09.07.2012. Why “no access”?
And if you say that your SLC6 machine behaves fine -> what package provides “xmlrpc-c-config”?
Maybe there exist two (or more) packages which provide the same functionality … but one of them is “broken”.

To Clarens and/or xmlrpc … (I.e the person usually supporting those components is currently unavailable).

Cheers,
Philippe.

Sorry, I do not use/need Clarens/xmlrpc/PEAC … ROOT simply tries to build this library and dies.
If it cannot be easily fixed, I will simply explicitly say … ./configure --disable-clarens
Or, a much better on-time-only brutal fix … sudo yum remove xmlrpc-c-devel

Hi,

Well probably as well, Support for Clarens is going to be deprecated …

Philippe.

Well, you need to find someone who really uses it and can test it on a SL©-6 / CentOS-6 / RHEL-6, …
Also the SLC-5.8 seems to use the same version of the “xmlrpc-c” (1.16.24) as the newer systems, so most probably the problem is also present there.

This is just an update … for anybody who would like to work on this problem …
In one of my previous posts in this thread, I proposed to execute “xmlrpc-c-config --version” and then act according to the returned version string.
This logic may fail, I believe.
I have just found that newer Ubuntu systems provide xmlrpc-c “1.16.32” / “1.16.33” (so it’s a “newer” version than on CentOS-6 which provides “1.16.24”) but the xmlrpc-c-config script is still the “old style” one and it contains “hardcoded” libraries’ lists.
So, a possible “solution” …

  1. execute “xmlrpc-c-config client --static > /dev/null 2>&1” and check the exit status “$?” …
  2. if it’s “1” … it’s an xmlrpc-c-config script which contains “hardcoded” libraries’ lists (it doesn’t understand “–static”) … use “xmlrpc-c-config client --ldadd”
  3. if it’s “0”, … it’s an xmlrpc-c-config script which is based on “pkg-config” (it understands “–static”) … use “xmlrpc-c-config client --libs --static”

This problem is solved as of v5-34-01 both Clarens and PEAC modules have been removed as they were obsolete.

Cheers, Fons.