DOLFIN and FFC instructs Instant to find DOLFIN and UFC cmake package
respectively. This boils down to the call
instant/codegeneration.py:write_cmakefile(..., 'DOLFIN', ...) or
instant/codegeneration.py:write_cmakefile(..., 'UFC', ...)

Make sure both DOLFINConfig.cmake and UFCConfig.cmake contain the
correct linking information.

Jan


On Sun, 25 Oct 2015 11:31:01 +0100
Juan Luis Cano <[email protected]> wrote:

> Hello all,
> 
> While making changes to my conda recipes for FEniCS I found that
> instant is not finding the correct libraries to link against, or
> choosing the wrong ones, despite the ones used for compiling
> DOLFIN[1].
> 
> In short, as I commented in the corresponding GitHub issue, DOLFIN is 
> linked against the correct libraries, which are the ones available 
> inside the conda environment:
> 
> > |$ ldd 
> > ~/.miniconda3/envs/fenics_test/lib/python2.7/site-packages/dolfin/cpp/_common.so
> >  
> > | grep boost ldd: warning: you do not have execution permission for 
> > `/home/juanlu/.miniconda3/envs/fenics_test/lib/python2.7/site-packages/dolfin/cpp/_common.so'
> >  
> > libboost_filesystem.so.1.57.0 => 
> > /home/juanlu/.miniconda3/envs/fenics_test/lib/python2.7/site-packages/dolfin/cpp/../../../../libboost_filesystem.so.1.57.0
> >  
> > (0x00007f3998095000) libboost_program_options.so.1.57.0 => 
> > /home/juanlu/.miniconda3/envs/fenics_test/lib/python2.7/site-packages/dolfin/cpp/../../../../libboost_program_options.so.1.57.0
> >  
> > (0x00007f3997e30000) libboost_system.so.1.57.0 => 
> > /home/juanlu/.miniconda3/envs/fenics_test/lib/python2.7/site-packages/dolfin/cpp/../../../../libboost_system.so.1.57.0
> >  
> > (0x00007f3997c2c000) libboost_thread.so.1.57.0 => 
> > /home/juanlu/.miniconda3/envs/fenics_test/lib/python2.7/site-packages/dolfin/cpp/../../../../libboost_thread.so.1.57.0
> >  
> > (0x00007f3997a08000) libboost_iostreams.so.1.57.0 => 
> > /home/juanlu/.miniconda3/envs/fenics_test/lib/python2.7/site-packages/dolfin/cpp/../../../../libboost_iostreams.so.1.57.0
> >  
> > (0x00007f39977df000) libboost_timer.so.1.57.0 => 
> > /home/juanlu/.miniconda3/envs/fenics_test/lib/python2.7/site-packages/dolfin/cpp/../../../../libboost_timer.so.1.57.0
> >  
> > (0x00007f39975db000) libboost_chrono.so.1.57.0 => 
> > /home/juanlu/.miniconda3/envs/fenics_test/lib/python2.7/site-packages/dolfin/cpp/../../../.././libboost_chrono.so.1.57.0
> >  
> > (0x00007f39922bc000) |
> 
> But whenever instant jit-compiles a module, it's either not able to
> find them:
> 
> > |$ |||ldd 
> > ~/.instant/cache/dolfin_compile_code_XXX/_dolfin_compile_code_XXX.so
> > | grep boost| libboost_filesystem.so.1.57.0 => not found 
> > libboost_program_options.so.1.57.0 => not found 
> > libboost_system.so.1.57.0 => not found libboost_thread.so.1.57.0 => 
> > not found libboost_iostreams.so.1.57.0 => not found 
> > libboost_timer.so.1.57.0 => not found libboost_chrono.so.1.57.0 =>
> > not found |
> 
> Or, if they are system-wide available, it uses those:
> 
> > |$ ldd 
> > ~/.instant/cache/dolfin_compile_code_XXX/_dolfin_compile_code_XXX.so
> > | grep boost libboost_filesystem.so.1.58.0 => 
> > /usr/lib/libboost_filesystem.so.1.58.0 (0x00007f2dc0b44000) 
> > libboost_program_options.so.1.58.0 => 
> > /usr/lib/libboost_program_options.so.1.58.0 (0x00007f2dc08c6000) 
> > libboost_system.so.1.58.0 => /usr/lib/libboost_system.so.1.58.0 
> > (0x00007f2dc06c2000) libboost_thread.so.1.58.0 => 
> > /usr/lib/libboost_thread.so.1.58.0 (0x00007f2dc049a000) 
> > libboost_iostreams.so.1.58.0
> > => /usr/lib/libboost_iostreams.so.1.58.0 (0x00007f2dc0282000)
> > libboost_timer.so.1.58.0 => /usr/lib/libboost_timer.so.1.58.0
> > (0x00007f2dc007d000) libboost_chrono.so.1.58.0
> > => /usr/lib/libboost_chrono.so.1.58.0 (0x00007f2dbce55000)|
> 
> (notice the version mismatch)
> 
> The funny thing is that when those libraries are not found I am able
> to properly run demo_poisson.py for instance, but when it picks those
> from the system it leads to GLIBCXX mismatch errors[2].
> 
> I tried to patch instant to see if hardwiring 
> ~/.miniconda3/envs/fenics_test/lib/ to library_dirs (see original at 
> [3]) would make the trick, but it didn't.
> 
> I am a bit lost now since, at the time of building instant, there's
> no information on which libraries I'm using to link DOLFIN, and I
> don't see a way of forcing a search directory for the libraries. I
> would need some help for debugging this, or some hint of what am I
> doing wrong.
> 
> Thanks in advance, best,
> 
> Juan Luis Cano
> 
> [1]: 
> https://github.com/Juanlu001/fenics-recipes/issues/35#issuecomment-150803221
> [2]: 
> https://github.com/Juanlu001/fenics-recipes/issues/24#issuecomment-148916949
> [3]: 
> https://github.com/FEniCS/instant/blob/b47459e76393a90ab4167054bfb4ce3cc2d8dd88/instant/build.py#L229

_______________________________________________
fenics-support mailing list
[email protected]
http://fenicsproject.org/mailman/listinfo/fenics-support

Reply via email to