On Fri, 15 May 2009, Johan Hake wrote:

> On Thursday 14 May 2009 21:03:47 Shawn Walker wrote:
>> ok, almost there.
>>
>> I included the boost library directory into my LD_LIBRARY_PATH.  I also
>> made those symbolic links.  pkgconfig was able to find it just fine and
>> create the boost.pc file.
>
> pkg-config does not find anything. It just reads and parse pkg-config files,
> for example boost.pc. However the pkg-config file generators that comes with
> dolfin tries to find the dependencies for the difference packages that dolfin
> depends on. If found a pkg-config files for the  package is created.
>
> The generators resides in
>
>  scons/simula-scons/simula_scons/pkgconfiggenerators
>
> and creates pkg-config files locally in
>
>  scons/pkgconfig
>
> when scons is called. These files are then installed in
>
>  $PREFIX/lib/pkgconfig
>
> This directory needs to be in your PKG_CONFIG_PATH, so you also need to set
> this in your .bashrc or something.

I already have this in my PKG_CONFIG_PATH.

>> Everything compiled (all demos too).  But, when
>> I try to do `scons install' I get:
>>
>> Found optional package: umfpack
>> Found optional package: gts
>> Found optional package: cholmod
>> Disabling compilation of Python wrappers
>> scons: done reading SConscript files.
>> scons: Building targets ...
>> scons: *** [install]
>> /home/walker/build/include/boost-1_38/boost/algorithm: Is a directory
>> scons: building terminated because of errors.
>> install failed: Is a directory
>>
>> Now what?
>
> Beats me :(
>
> Did you just type scons install? Where are you in the directory hierarchy when
> you compile dolfin? Whats in scons/option.cache and scons/simula_scons.log?

I typed:  'scons install prefix=$INSTALL_PATH'
where:  $INSTALL_PATH = ~/build

I compiled it under the '~/FENICS/dolfin' directory.  isn't this where it 
should be compiled?

Here are the contents of those files:

wal...@box227 ~/FENICS/dolfin/scons
$ more options.cache
prefix = '/home/walker/build'
enableDemos = True
enableMpi = False
enableScotch = False
enableTrilinos = False
enableMtl4 = False
enableParmetis = False
enablePython = False
withPetscDir = '/home/walker/src/petsc-2.3.3-p13'
withSlepcDir = '/home/walker/src/slepc-2.3.3'
withUmfpackDir = '/usr/include/suitesparse'
withBoostDir = '/home/walker/build/include/boost-1_38'

wal...@box227 ~/FENICS/dolfin/scons
$ more simula_scons.log
=================== dolfin log ===================
2009-05-14 15:00:23.369578
Using simula_scons from: 
/home/walker/FENICS/dolfin/scons/simula-scons/simula_scons/__init__.pyc
resolveCompiler: No pkg-config generator for package 'ufc-1'. Assuming Ok.
resolveCompiler: No pkg-config generator for package 'gts'. Assuming Ok.

- Shawn

>> On Thu, 14 May 2009, Johan Hake wrote:
>>> On Thursday 14 May 2009 15:37:14 Shawn Walker wrote:
>>>> On Thu, 14 May 2009, Johan Hake wrote:
>>>>> On Wednesday 13 May 2009 23:48:33 Shawn Walker wrote:
>>>>>> On Wed, 13 May 2009, Johan Hake wrote:
>>>>>>> On Wednesday 13 May 2009 21:34:57 Shawn Walker wrote:
>>>>>>>> ok, here it is.  Maybe it is a problem with the name.
>>>>>>>>
>>>>>>>> wal...@box227 ~
>>>>>>>> $ find -name 'libboost_program_options*'
>>>>>>>> ./build/lib/libboost_program_options-gcc41-mt.so
>>>>>>>> ./build/lib/libboost_program_options-gcc41-mt-1_38.so.1.38.0
>>>>>>>> ./build/lib/libboost_program_options-gcc41-mt-1_38.so
>>>>>>>> ./build/lib/libboost_program_options-gcc41-mt-1_38.a
>>>>>>>> ./build/lib/libboost_program_options-gcc41-mt.a
>>>>>>>> ./src/boost_1_38_0/bin.v2/libs/program_options/build/gcc-4.1.2/relea
>>>>>>>> se /t hre
>>>>>>>> ading-multi/libboost_program_options-gcc41-mt-1_38.so.1.38.0
>>>>>>>> ./src/boost_1_38_0/bin.v2/libs/program_options/build/gcc-4.1.2/relea
>>>>>>>> se /l ink
>>>>>>>> -static/threading-multi/libboost_program_options-gcc41-mt-1_38.a
>>>>>>>
>>>>>>> Have you installed the library? Typically make install or something.
>>>>>>>
>>>>>>> It looks like the library only lives in the build directory. None of
>>>>>>> the above mentioned directories corresponds to any of the ones given
>>>>>>> from
>>>>>>>
>>>>>>>  pkg-config --libs dolfin
>>>>>>>
>>>>>>> Following the output from pkg-config --libs dolfin I would expect it
>>>>>>> to be in
>>>>>>>
>>>>>>>  ./src/boost_1_38_0/libs
>>>>>>>
>>>>>>> However I cannot figure out why you mannage to compile and install
>>>>>>> dolfin in the first place...
>>>>>>
>>>>>> Are you saying I don't know what I am doing?  :)  Well, you would be
>>>>>> right!  Only recently have I started compiling things; most of what I
>>>>>> did in the past (and still do) is in MATLAB.
>>>>>
>>>>> He, he, you never know! Even if you would have compiled your own stuff
>>>>> for a while we all do simple mistakes all the time, that goes for all
>>>>> of us!
>>>>>
>>>>>> Yes, I installed the boost stuff with `make install'.  But boost put
>>>>>> it into those other dirs.  It also has a weird filename:
>>>>>> libboost_program_options-gcc41-mt-1_38 (not the one dolfin looks for I
>>>>>> think).  Isn't that the problem?  If it is, why didn't pkgconfig
>>>>>> auto-config the boost.pc file to look for this file?
>>>>>
>>>>> Ok, I downloaded the latests boost and looked into the documentation
>>>>> and boost has its owns naming convention for the installed libraries.
>>>>>
>>>>> First of all whats in your,
>>>>>
>>>>>  /home/walker/build/include/boost-1_38/lib
>>>>>
>>>>> directory.
>>>>
>>>> wal...@box227 ~/build/include/boost-1_38/lib
>>>> $ ll
>>>> total 1.3M
>>>> -rw-------+ 1 walker walker 795K May 13 18:44
>>>> libboost_program_options-gcc41-mt-1_38.a
>>>> lrwxrwxrwx  1 walker walker   48 May 13 18:44
>>>> libboost_program_options-gcc41-mt-1_38.so ->
>>>> libboost_program_options-gcc41-mt-1_38.so.1.38.0*
>>>> -rwx------+ 1 walker walker 290K May 13 18:44
>>>> libboost_program_options-gcc41-mt-1_38.so.1.38.0*
>>>> lrwxrwxrwx  1 walker walker   40 May 13 18:44
>>>> libboost_program_options-gcc41-mt.a ->
>>>> libboost_program_options-gcc41-mt-1_38.a
>>>> lrwxrwxrwx  1 walker walker   48 May 13 18:44
>>>> libboost_program_options-gcc41-mt.so ->
>>>> libboost_program_options-gcc41-mt-1_38.so.1.38.0*
>>>
>>> Ok, this tells us that the libraries are where they should be.
>>>
>>>>> Second what does
>>>>>
>>>>>  pkg-config --libs boost
>>>>>
>>>>> give you? Hopefully it will include:
>>>>>
>>>>>  -L/home/walker/build/include/boost-1_38/lib
>>>>>
>>>>> meaning that the dolfin configuration system has picked up boost.
>>>>
>>>> It gives me:
>>>>
>>>> wal...@box227 ~
>>>> $ pkg-config --libs boost
>>>> -L/home/walker/build/include/boost-1_38/lib -lboost_program_options
>>>
>>> Seems to be right.
>>>
>>>>> Third why has dolfin manage to do that? Have you set any environmental
>>>>> variables like BOOST_DIR, pointing to that directory, or called scons
>>>>> with withBoostDir=/home/walker/build/include/boost-1_38?
>>>>
>>>> Yes, I set BOOST_DIR to:
>>>>
>>>> BOOST_DIR=/home/walker/build/include/boost-1_38
>>>>
>>>> BTW: my current LD_LIBRARY_PATH is:
>>>>
>>>> LD_LIBRARY_PATH=/home/walker/build/lib/vtk-5.3:/home/walker/build/lib:
>>>
>>> To be able to run any dolfin applications you need to include the boost
>>> path too. I would recomend that you make yourself a local directory where
>>> you install your compiled libraries.
>>>
>>>>> Fourth, (and here comes the suggestion to fix this ;) ), go
>>>>> into /home/walker/build/include/boost-1_38/lib, or another directory
>>>>> that is included in your LD_LIBRARY_PATH, and which you can pass to
>>>>> dolfin via the withBoostDir= option. I have installed all my locally
>>>>> compiled libraries under
>>>>>
>>>>>  ~/local
>>>>>
>>>>> including all the FEhiCS packages. Then you create a link to the newly
>>>>> compiled boost libraries in this directory. Make sure you change name
>>>>> of the libraries when you link. For example:
>>>>>
>>>>>  ln -fs ~/build/lib/libboost_program_options-gcc41-mt.so \
>>>>>          libboost_program_options.so
>>>>>  ln -fs ~/build/lib/libboost_program_options-gcc41-mt.a \
>>>>>          libboost_program_options.a
>>>>
>>>> ok, I had thought about doing something like this, but it seemed kind of
>>>> hacky...  Shouldn't pkg-config figure this out when it creates the
>>>> boost.pc file?
>>>
>>> Well, by naming the libraries like boost do boot gives the user the
>>> responsability to link to them in what ever way he likes to. By making
>>> symbolic links to these files is one way. Another way is to hard code the
>>> library file name into a boost pkg-config file which can be used by scons
>>> and dolfin.
>>>
>>>>> And voila! It should just work (cross fingers ;) )
>>>>
>>>> I will try it.
>>>
>>> I see that it didn't work out. What does scons/scons.log tell you?
>>>
>>> My thought was to keep the boost.pc file which then would have pointed to
>>> the right library. But you told me that you erased the boost.pc file and
>>> simula-scons did not pick it up again? Right?
>>>
>>> I also see that we do not link any thing in our test script (boost.py),
>>> whould we do that too, as Shawns trouble comes in the linking?
>>>
>>> Johan
>>>
>>>> - Shawn
>>>>
>>>>> You might include the above lines in your .bashrc file, and you should
>>>>> probably try to avoid link to a build directory as these tends to have
>>>>> a limited life.
>>>>>
>>>>> Johan
>>>>>
>>>>>> I also changed something in between.  Here is a re-run of pkg-config:
>>>>>>
>>>>>> wal...@box227 ~
>>>>>> $ pkg-config --libs dolfin
>>>>>> -pthread -Wl,--export-dynamic
>>>>>> -Wl,-rpath,/home/walker/src/slepc-2.3.3/lib/linux-gnu-cxx-debug
>>>>>> -Wl,-rpath,/home/walker/src/petsc-2.3.3-p13/lib/linux-gnu-cxx-debug
>>>>>> -L/home/walker/build/include/boost-1_38/lib -L/usr/lib -L/lib
>>>>>> -L/home/walker/build/lib
>>>>>> -L/home/walker/src/slepc-2.3.3/lib/linux-gnu-cxx-debug
>>>>>> -L/usr/lib/atlas
>>>>>> -L/home/walker/src/petsc-2.3.3-p13/lib/linux-gnu-cxx-debug -L/usr
>>>>>> -ldolfin -lslepc -lumfpack -lgts -llapack -lblas -lcholmod -lamd
>>>>>> -lcolamd -lboost_program_options -lxml2 -lz -lm -lpetscts -lpetscsnes
>>>>>> -lpetscksp -lpetscdm -lpetscmat -lpetscvec -lpetsc -lgthread-2.0
>>>>>> -lgmodule-2.0 -ldl -lglib-2.0
>>>>>>
>>>>>> Though, I don't think this makes a difference.
>>>>>>
>>>>>> - Shawn
>>>>>>
>>>>>>>> On Wed, 13 May 2009, Johan Hake wrote:
>>>>>>>>> On Wednesday 13 May 2009 20:24:10 Shawn Walker wrote:
>>>>>>>>>> I am still getting this error.  I'm pretty sure boost is being
>>>>>>>>>> included. Does anyone have any suggestions?
>>>>>>>>>
>>>>>>>>> I see from the output from your pkg-config command that you have a
>>>>>>>>> boost installation in
>>>>>>>>>
>>>>>>>>>  /home/walker/src/boost_1_38_0
>>>>>>>>>
>>>>>>>>> Do you have several boost installations? The undefined symols you
>>>>>>>>> refere to here are all defined in libboost_program_options, so it
>>>>>>>>> should work. What does
>>>>>>>>>
>>>>>>>>>  locate libboost_program_options
>>>>>>>>>
>>>>>>>>> give you?
>>>>>>>>>
>>>>>>>>> Johan
>>>>>>>>>
>>>>>>>>>> /usr/bin/ld: skipping incompatible /usr/lib/libc.so when searching
>>>>>>>>>> for -lc /usr/bin/ld: skipping incompatible /usr/lib/libc.a when
>>>>>>>>>> searching for -lc dolfin/libdolfin.so: undefined reference to
>>>>>>>>>> `boost::program_options::options_description::m_default_line_lengt
>>>>>>>>>> h' dolfin/libdolfin.so: undefined reference to
>>>
>>> `boost::program_options::detail::cmdline::set_additional_parser(boost:
>>>>>>>>>> :f unc tion1<std::pair<std::basic_string<char,
>>>>>>>>>> : std::char_traits<char>,
>>>>>>>>>>
>>>>>>>>>> std::allocator<char> >, std::basic_string<char,
>>>>>>>>>> std::char_traits<char>, std::allocator<char> > >,
>>>>>>>>>> std::basic_string<char,
>>>>>>>>>> std::char_traits<char>, std::allocator<char> > const&>)'
>>>>>>>>>> collect2: ld returned 1 exit status
>>>>>>>>>> scons: *** [demo/quadrature/cpp/demo] Error 1
>>>>>>>>>> scons: building terminated because of errors.
>>>>>>>>>> demo/quadrature/cpp/demo failed: Error 1
>>>>>>>>>>
>>>>>>>>>> - Shawn
>>>>>>>>>> _______________________________________________
>>>>>>>>>> DOLFIN-dev mailing list
>>>>>>>>>> [email protected]
>>>>>>>>>> http://www.fenics.org/mailman/listinfo/dolfin-dev
>
>
>
_______________________________________________
DOLFIN-dev mailing list
[email protected]
http://www.fenics.org/mailman/listinfo/dolfin-dev

Reply via email to