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
