Date: | Sun, 24 Mar 2013 18:33:36 -0500 |
---|---|
From: | Erik Paulson <epaulson@xxxxxxxxxxxx> |
Subject: | Re: [HTCondor-devel] library flag generation in the cmake files |
Let's try this again, without hitting send while trying to flip through tabs. I'm trying to build HTCondor on a Linux machine without the pcre-devel RPM installed. On Linux, this is a problem because HTCondor assumes the system pcre is to be used, not the external.
I'm building HTCondor with this: ./configure_uw -DWITH_GLOBUS:BOOL=FALSE -DHAVE_BOINC:BOOL=FALSE -DWITH_VOMS:BOOL=FALSE -DWANT_GLEXEC:BOOL=FALSE -DWITH_POSTGRESQL:BOOL=FALSE -DCLIPPED:BOOL=ON
To build PCRE, I just changed the 'NOT LINUX' git in CMakeLists.txt: diff --git a/externals/bundles/pcre/7.6/CMakeLists.txt b/externals/bundles/pcre/7.6/CMakeLists.txt
index 741956d..6e7dcf7 100644 --- a/externals/bundles/pcre/7.6/CMakeLists.txt +++ b/externals/bundles/pcre/7.6/CMakeLists.txt @@ -16,7 +16,7 @@ # ###############################################################
-if ( NOT PROPER AND NOT LINUX ) +if ( NOT PROPER ) condor_pre_external( PCRE pcre-7.6 "lib;include" "include/pcre.h") @@ -96,7 +96,7 @@ else( NOT PROPER AND NOT LINUX )
find_multiple( "pcre" PCRE_FOUND ) endif() -endif( NOT PROPER AND NOT LINUX ) +endif( NOT PROPER ) What next tripped me up was this
make[2]: Entering directory `/home/epaulson/development/htcondor' Linking CXX shared library ../../bld_external/classads-7.9.6/install/lib/libclassad.so cd /home/epaulson/development/htcondor/src/classad && /home/epaulson/development/tools/bin/cmake -E cmake_link_script CMakeFiles/classad.dir/link.txt --verbose=1
/usr/bin/c++ -fPIC -g -shared -Wl,-soname,libclassad.so.5 -o ../../bld_external/classads-7.9.6/install/lib/libclassad.so.7.9.6 CMakeFiles/classad.dir/attrrefs.cpp.o CMakeFiles/classad.dir/classad.cpp.o CMakeFiles/classad.dir/classadCache.cpp.o CMakeFiles/classad.dir/collection.cpp.o CMakeFiles/classad.dir/collectionBase.cpp.o CMakeFiles/classad.dir/debug.cpp.o CMakeFiles/classad.dir/exprList.cpp.o CMakeFiles/classad.dir/exprTree.cpp.o CMakeFiles/classad.dir/fnCall.cpp.o CMakeFiles/classad.dir/indexfile.cpp.o CMakeFiles/classad.dir/lexer.cpp.o CMakeFiles/classad.dir/lexerSource.cpp.o CMakeFiles/classad.dir/literals.cpp.o CMakeFiles/classad.dir/matchClassad.cpp.o CMakeFiles/classad.dir/operators.cpp.o CMakeFiles/classad.dir/query.cpp.o CMakeFiles/classad.dir/sink.cpp.o CMakeFiles/classad.dir/source.cpp.o CMakeFiles/classad.dir/transaction.cpp.o CMakeFiles/classad.dir/util.cpp.o CMakeFiles/classad.dir/value.cpp.o CMakeFiles/classad.dir/view.cpp.o CMakeFiles/classad.dir/xmlLexer.cpp.o CMakeFiles/classad.dir/xmlSink.cpp.o CMakeFiles/classad.dir/xmlSource.cpp.o CMakeFiles/classad.dir/cclassad.cpp.o CMakeFiles/classad.dir/common.cpp.o -Wl,--start-group ../../bld_external/pcre-7.6/install/lib/libpcre.a -ldl -Wl,--end-group -Wl,--enable-new-dtags -Wl,-rpath,"\$ORIGIN/../lib:/lib64:/usr/lib64:\$ORIGIN/../lib/condor"
/usr/bin/ld: ../../bld_external/pcre-7.6/install/lib/libpcre.a(pcre_compile.o): relocation R_X86_64_32S against `a local symbol' can not be used when making a shared object; recompile with -fPIC ../../bld_external/pcre-7.6/install/lib/libpcre.a: could not read symbols: Bad value
collect2: ld returned 1 exit status make[2]: *** [bld_external/classads-7.9.6/install/lib/libclassad.so.7.9.6] Error 1 make[2]: Leaving directory `/home/epaulson/development/htcondor'
make[1]: *** [src/classad/CMakeFiles/classad.dir/all] Error 2 make[1]: Leaving directory `/home/epaulson/development/htcondor' make: *** [all] Error 2 [epaulson@submit-1 htcondor]$ So this is my question - how did src/classad/CMakeFiles/classad.dir/link.txt decide to link with libpcre.a and not libpcre.so? I just edited link.txt to use the .so and got through classads - but that's clearly the wrong thing, and sure enough, the blahp fails to build - I'll bet that if I track down the full error message from configure here, it's a linking problem: ./configure: line 19740: GLITE_CHECK_LIBDIR: command not found ./configure: line 19741: GLITE_CHECK_INITDIR: command not found checking for CLASSAD installation... prefix: /home/epaulson/development/htcondor/bld_external/classads-7.9.6/install
checking if a small classads program compiles... no configure: WARNING: *** Cannot compile a small classads program: check whether the
*** Condor ClassADs library is installed configure: error: "CLASSADS not found" make[2]: *** [externals/bundles/blahp/1.16.5.1/blahp-prefix/src/blahp-stamp/blahp-configure] Error 1
make[2]: Leaving directory `/home/epaulson/development/htcondor' make[1]: *** [externals/bundles/blahp/1.16.5.1/CMakeFiles/blahp.dir/all] Error 2
make[1]: Leaving directory `/home/epaulson/development/htcondor' make: *** [all] Error 2 (though there's a scary line earlier about "project/classads.m4:9: warning: underquoted definition of AC_CLASSADS" that might also be my more immediate problem)
regardless, I probably shouldn't be editing link.txt at the earlier step - but I've been hunting, and I can't find what rule decided to use the .a instead of the .so
Thanks! -Erik, still rather CMake-challenged. ps the externals stuff is so different, compared to how the rest of the world does it, that it really should be better documented in README.building
|
[← Prev in Thread] | Current Thread | [Next in Thread→] |
---|---|---|
|
Previous by Date: | [HTCondor-devel] library flag generation in the cmake files, Erik Paulson |
---|---|
Next by Date: | Re: [HTCondor-devel] library flag generation in the cmake files, Erik Paulson |
Previous by Thread: | [HTCondor-devel] library flag generation in the cmake files, Erik Paulson |
Next by Thread: | Re: [HTCondor-devel] library flag generation in the cmake files, Erik Paulson |
Indexes: | [Date] [Thread] |