Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 297694 - >=sys-fs/encfs-1.5 fails to properly detect dev-libs/boost
Summary: >=sys-fs/encfs-1.5 fails to properly detect dev-libs/boost
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: High normal (vote)
Assignee: Dirkjan Ochtman (RETIRED)
URL:
Whiteboard:
Keywords:
: 307731 (view as bug list)
Depends on:
Blocks: 320039
  Show dependency tree
 
Reported: 2009-12-20 20:45 UTC by Marek Sapota
Modified: 2010-06-29 15:48 UTC (History)
7 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
emerge --info (info,8.50 KB, text/plain)
2009-12-20 21:10 UTC, Marek Sapota
Details
eselect boost list (eselect,82 bytes, text/plain)
2009-12-20 21:10 UTC, Marek Sapota
Details
help the build system to select the correct boost version (encfs-boost-detection.patch,819 bytes, patch)
2009-12-20 21:42 UTC, Sebastian Luther (few)
Details | Diff
encfs-1.5 ebuild patch (encfs-boost-detection-r1.patch,1.04 KB, patch)
2010-06-09 06:40 UTC, Rob MacKinnon
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Marek Sapota 2009-12-20 20:45:55 UTC
./.libs/libencfs.so: undefined reference to `boost::archive::archive_exception::archive_exception(boost::archive::archive_exception::exception_code, char const*, char const*)'                                                                                                                                           
./.libs/libencfs.so: undefined reference to `typeinfo for boost::serialization::typeid_system::extended_type_info_typeid_0'                                  
./.libs/libencfs.so: undefined reference to `boost::archive::detail::archive_serializer_map<boost::archive::xml_iarchive>::find(boost::serialization::extended_type_info const&)'                                                                                                                                         
./.libs/libencfs.so: undefined reference to `boost::serialization::typeid_system::extended_type_info_typeid_0::type_unregister()'                            
./.libs/libencfs.so: undefined reference to `boost::serialization::typeid_system::extended_type_info_typeid_0::type_register(std::type_info const&)'         
./.libs/libencfs.so: undefined reference to `boost::archive::detail::shared_ptr_helper::shared_ptr_helper()'                                                 
./.libs/libencfs.so: undefined reference to `boost::archive::detail::shared_ptr_helper::~shared_ptr_helper()'                                                
./.libs/libencfs.so: undefined reference to `boost::serialization::typeid_system::extended_type_info_typeid_0::~extended_type_info_typeid_0()'               
./.libs/libencfs.so: undefined reference to `boost::serialization::extended_type_info::key_register() const'                                                 
./.libs/libencfs.so: undefined reference to `boost::archive::detail::archive_serializer_map<boost::archive::xml_oarchive>::insert(boost::archive::detail::basic_serializer const*)'                                                                                                                                       
./.libs/libencfs.so: undefined reference to `boost::serialization::extended_type_info::key_unregister() const'                                               
./.libs/libencfs.so: undefined reference to `boost::serialization::typeid_system::extended_type_info_typeid_0::is_less_than(boost::serialization::extended_type_info const&) const'                                                                                                                                       
./.libs/libencfs.so: undefined reference to `boost::serialization::typeid_system::extended_type_info_typeid_0::is_equal(boost::serialization::extended_type_info const&) const'                                                                                                                                           
./.libs/libencfs.so: undefined reference to `boost::serialization::typeid_system::extended_type_info_typeid_0::extended_type_info_typeid_0(char const*)'     
./.libs/libencfs.so: undefined reference to `boost::archive::detail::archive_serializer_map<boost::archive::xml_oarchive>::erase(boost::archive::detail::basic_serializer const*)'                                                                                                                                        
collect2: ld returned 1 exit status                                                                                                                          
make[2]: *** [encfsctl] Error 1                                                                                                                              
make[2]: *** Waiting for unfinished jobs....                                                                                                                 
./.libs/libencfs.so: undefined reference to `boost::archive::archive_exception::archive_exception(boost::archive::archive_exception::exception_code, char const*, char const*)'                                                                                                                                           
./.libs/libencfs.so: undefined reference to `typeinfo for boost::serialization::typeid_system::extended_type_info_typeid_0'                                  
./.libs/libencfs.so: undefined reference to `boost::archive::detail::archive_serializer_map<boost::archive::xml_iarchive>::find(boost::serialization::extended_type_info const&)'                                                                                                                                         
./.libs/libencfs.so: undefined reference to `boost::serialization::typeid_system::extended_type_info_typeid_0::type_unregister()'                            
./.libs/libencfs.so: undefined reference to `boost::serialization::typeid_system::extended_type_info_typeid_0::type_register(std::type_info const&)'         
./.libs/libencfs.so: undefined reference to `boost::archive::detail::shared_ptr_helper::shared_ptr_helper()'                                                 
./.libs/libencfs.so: undefined reference to `boost::archive::detail::shared_ptr_helper::~shared_ptr_helper()'                                                
./.libs/libencfs.so: undefined reference to `boost::serialization::typeid_system::extended_type_info_typeid_0::~extended_type_info_typeid_0()'               
./.libs/libencfs.so: undefined reference to `boost::serialization::extended_type_info::key_register() const'                                                 
./.libs/libencfs.so: undefined reference to `boost::archive::detail::archive_serializer_map<boost::archive::xml_oarchive>::insert(boost::archive::detail::basic_serializer const*)'                                                                                                                                       
./.libs/libencfs.so: undefined reference to `boost::serialization::extended_type_info::key_unregister() const'                                               
./.libs/libencfs.so: undefined reference to `boost::serialization::typeid_system::extended_type_info_typeid_0::is_less_than(boost::serialization::extended_type_info const&) const'                                                                                                                                       
./.libs/libencfs.so: undefined reference to `boost::serialization::typeid_system::extended_type_info_typeid_0::is_equal(boost::serialization::extended_type_info const&) const'                                                                                                                                           
./.libs/libencfs.so: undefined reference to `boost::serialization::typeid_system::extended_type_info_typeid_0::extended_type_info_typeid_0(char const*)'     
./.libs/libencfs.so: undefined reference to `boost::archive::detail::archive_serializer_map<boost::archive::xml_oarchive>::erase(boost::archive::detail::basic_serializer const*)'                                                                                                                                        
collect2: ld returned 1 exit status                                                                                                                          
make[2]: *** [encfs] Error 1                                                                                                                                 
./.libs/libencfs.so: undefined reference to `boost::archive::archive_exception::archive_exception(boost::archive::archive_exception::exception_code, char const*, char const*)'                                                                                                                                           
./.libs/libencfs.so: undefined reference to `typeinfo for boost::serialization::typeid_system::extended_type_info_typeid_0'                                  
./.libs/libencfs.so: undefined reference to `boost::archive::detail::archive_serializer_map<boost::archive::xml_iarchive>::find(boost::serialization::extended_type_info const&)'                                                                                                                                         
./.libs/libencfs.so: undefined reference to `boost::serialization::typeid_system::extended_type_info_typeid_0::type_unregister()'                            
./.libs/libencfs.so: undefined reference to `boost::serialization::typeid_system::extended_type_info_typeid_0::type_register(std::type_info const&)'         
./.libs/libencfs.so: undefined reference to `boost::archive::detail::shared_ptr_helper::shared_ptr_helper()'                                                 
./.libs/libencfs.so: undefined reference to `boost::archive::detail::shared_ptr_helper::~shared_ptr_helper()'                                                
./.libs/libencfs.so: undefined reference to `boost::serialization::typeid_system::extended_type_info_typeid_0::~extended_type_info_typeid_0()'               
./.libs/libencfs.so: undefined reference to `boost::serialization::extended_type_info::key_register() const'                                                 
./.libs/libencfs.so: undefined reference to `boost::archive::detail::archive_serializer_map<boost::archive::xml_oarchive>::insert(boost::archive::detail::basic_serializer const*)'                                                                                                                                       
./.libs/libencfs.so: undefined reference to `boost::serialization::extended_type_info::key_unregister() const'                                               
./.libs/libencfs.so: undefined reference to `boost::serialization::typeid_system::extended_type_info_typeid_0::is_less_than(boost::serialization::extended_type_info const&) const'                                                                                                                                       
./.libs/libencfs.so: undefined reference to `boost::serialization::typeid_system::extended_type_info_typeid_0::is_equal(boost::serialization::extended_type_info const&) const'                                                                                                                                           
./.libs/libencfs.so: undefined reference to `boost::serialization::typeid_system::extended_type_info_typeid_0::extended_type_info_typeid_0(char const*)'     
./.libs/libencfs.so: undefined reference to `boost::archive::detail::archive_serializer_map<boost::archive::xml_oarchive>::erase(boost::archive::detail::basic_serializer const*)'                                                                                                                                        
collect2: ld returned 1 exit status                                                                                                                          
make[2]: *** [test] Error 1                                                                                                                                  
make[2]: Leaving directory `/var/tmp/portage/sys-fs/encfs-1.5/work/encfs-1.5/encfs'                                                                          
make[1]: *** [all-recursive] Error 1                                                                                                                         
make[1]: Leaving directory `/var/tmp/portage/sys-fs/encfs-1.5/work/encfs-1.5'                                                                                
make: *** [all] Error 2

Reproducible: Always
Comment 1 Sebastian Luther (few) 2009-12-20 20:54:40 UTC
The complete build.log, "emerge --info sys-fs/encfs dev-libs/boost" and "eselect boost list" please.
Comment 2 Marek Sapota 2009-12-20 21:10:07 UTC
Created attachment 213610 [details]
emerge --info
Comment 3 Marek Sapota 2009-12-20 21:10:36 UTC
Created attachment 213611 [details]
eselect boost list
Comment 4 Sebastian Luther (few) 2009-12-20 21:42:18 UTC
Created attachment 213614 [details, diff]
help the build system to select the correct boost version
Comment 5 Sebastian Luther (few) 2009-12-20 21:45:00 UTC
Thanks for the report. This is encfs's build system gone crazy (mixing boost headers and libraries). Either patch the ebuild in a local overlay with the attached patch or remove the older boost version (be aware of the usual consequences).
Comment 6 Marek Sapota 2009-12-20 21:58:50 UTC
Merged without problems after removing old boost version, thanks=)
Comment 7 Sebastian Luther (few) 2010-03-04 08:33:32 UTC
*** Bug 307731 has been marked as a duplicate of this bug. ***
Comment 8 Felix Finch 2010-05-02 20:34:24 UTC
For what it's worth, I got encfs to build and work (so far!) by making a patched 1.5-r1 ebuild as suggested in comment 5.  I have four different boosts present and did not remove any of the old ones:

# eselect boost list
Available boost versions:
  [1]   boost-1.37/default
  [2]   boost-1.39/default
  [3]   boost-1.41/default
  [4]   boost-1.42/default *

Thanks!
Comment 9 Martin Väth 2010-05-03 07:43:00 UTC
As I understand, the patch will cause to build against the newest available
boost. This will cause problems in view of bug 307829, i.e.
building against boost-1.42 must be avoided...
Comment 10 Rob MacKinnon 2010-06-09 06:40:13 UTC
Created attachment 234659 [details, diff]
encfs-1.5 ebuild patch

The attached patch adds to the previous patch, corrects the version requirements, and blocks the pull in of package boost-1.42. After application to encfs-1.5.ebuild, new ebuild finds and selects boost-1.39, completing compilation, and avoiding the described build errors.
Comment 11 Vlastimil Babka (Caster) (RETIRED) gentoo-dev 2010-06-11 11:35:08 UTC
(In reply to comment #10)
> The attached patch adds to the previous patch, corrects the version
> requirements, and blocks the pull in of package boost-1.42. After application
> to encfs-1.5.ebuild, new ebuild finds and selects boost-1.39, completing
> compilation, and avoiding the described build errors.

The detection and compilation seems fixed, however is still wrong. In my case, boost-1.41 was selected and I saw in the build log that the include paths contained 1.41 include dir. But, the libraries it actually links to were from 1.42! Found out when bug 307829 manifested itself...

$ ldd /usr/lib64/libencfs.so.4.1.0
        libboost_serialization-mt-1_42.so.1.42.0 => /usr/lib/libboost_serialization-mt-1_42.so.1.42.0 (0x00007fccc1775000)
        libboost_system-mt-1_42.so.1.42.0 => /usr/lib/libboost_system-mt-1_42.so.1.42.0 (0x00007fccc1571000)

So it seems that the --with-boost-libdir argument to configure is ignored :(

I tried removing boost-1.42, then it failed completely. Realized I have to eselect another version, done that, and it compiled against 1.41.
Comment 12 Dirkjan Ochtman (RETIRED) gentoo-dev 2010-06-14 16:47:28 UTC
I've been unable to get this to compile. Right now it seems to be erroring out in libintl.h:

/usr/include/libintl.h:40: error: expected unqualified-id before 'const'
/usr/include/libintl.h:40: error: expected `)' before 'const'
/usr/include/libintl.h:40: error: expected initializer before 'const'
Comment 13 teidakankan 2010-06-17 18:59:29 UTC
FYI: (I think they ment "June" instead of "July"

http://encfs.googlecode.com/files/encfs-1.5.1.tgz

1.5.1 (July 16, 2010) Change Log

    * allow symlink times to be modified.
    * try to maintain modtime during rename. Patch by p.kosseff.
    * fix compiler errors from gcc 4.x.
    * many build improvements for Mac OSX.
    * add commands to help script filesystem creation.
    * add multi-argument support to encfsctl encode/decode commands.  Patch by Nikratio.
    * support for boost > 1.41 (tested with boost 1.42 & boost 1.43).
Comment 14 Samuli Suominen (RETIRED) gentoo-dev 2010-06-27 20:58:34 UTC
encfs-1.6 in portage, builds fine here with forced asneeded, gcc-4.5.0, and boost-1.42.0-r1.
Comment 15 Adrian Bassett 2010-06-28 12:37:57 UTC
(In reply to comment #14)
> encfs-1.6 in portage, builds fine here with forced asneeded, gcc-4.5.0, and
> boost-1.42.0-r1.

Fails for me with boost 1.42.  I also tried 1.41 but only with 1.39 did encfs compile.  This is with forced asneeded as well but gcc-4.4.4.
Comment 16 Vlastimil Babka (Caster) (RETIRED) gentoo-dev 2010-06-29 08:29:53 UTC
Yup, it seems (on a first sight) that if there are multiple boost versions (in my case 1.39, 1.41, 1.42), it will use the headers selected by eselect boost (e.g. 1.42) but try to link to 1.39 (lowest available ?) and fail. I will try the patches here.
Comment 17 Vlastimil Babka (Caster) (RETIRED) gentoo-dev 2010-06-29 08:46:25 UTC
It seems the patches from this bug to override boost detection work fine now, so I commited the fix (without version restriction as it should work now). Thanks!
Comment 18 Dirkjan Ochtman (RETIRED) gentoo-dev 2010-06-29 08:59:20 UTC
Cool, thanks!
Comment 19 Adrian Bassett 2010-06-29 15:48:20 UTC
(In reply to comment #15)
> (In reply to comment #14)
> > encfs-1.6 in portage, builds fine here with forced asneeded, gcc-4.5.0, and
> > boost-1.42.0-r1.
> 
> Fails for me with boost 1.42.  I also tried 1.41 but only with 1.39 did encfs
> compile.  This is with forced asneeded as well but gcc-4.4.4.

Cnofirming now compiles OK agains boost 1.42 with 1.37, 1.39, and 1.41 also installed.  Thanks.