zaufi / paludis-hooks

This repository has moved to other hosting
https://gitlab.exherbo.org/living-in-exherbo/paludis-hooks
Other
11 stars 4 forks source link

paludis.scm will not build with clang #16

Open hlandgar opened 8 years ago

hlandgar commented 8 years ago

GCC-5.3 has a bug which breaks cave fix-linkage. Building with clang works around the bug. paludis::gentoo build with clang but paludis.scm in this overlay does not.

zaufi commented 8 years ago

Hi, I've recently discovered this bug. I'll take a look what is the difference between ebuilds… Could you please paste an error here?

hlandgar commented 8 years ago

This the the fix-linkage bug:

$ sudo cave fix-linkage Searching: 11 directories, 220545 filesterminate called after throwing an instance of 'std::ios_base::failure' what(): basic_ios::clear

Turned out to be an issue with gcc-5.3

hlandgar commented 8 years ago

clang fails on plaudis.scm on undefined references to a few different wrapper iterators.

zaufi commented 8 years ago

clang fails on plaudis.scm on undefined references to a few different wrapper iterators.

and is it successfully compiled paludis-9999 from portage?

and about an error, I've asked about compile error :)

hlandgar commented 8 years ago

Clang also fails on paludis-9999 but is successful in building 2.4.0_p20160112.

This could be the issue:

/var/tmp/paludis/sys-apps-paludis-scm/work/paludis-scm/ruby/dep_spec.cc:169:5: warning: 'WrappedSpec' defined as a class template here but previously declared as a struct template [-Wmismatched-tags] class WrappedSpec : ^ /var/tmp/paludis/sys-apps-paludis-scm/work/paludis-scm/ruby/dep_spec.cc:137:25: note: did you mean class here? template struct WrappedSpec; ^~ It fails during linking with lots of errors like:

/var/tmp/paludis/sys-apps-paludis-scm/work/paludis-scm/src/clients/cave/cmd_execute_resolution.cc:(.text+0x3c11): undefined reference to `paludis::WrappedForwardIterator<paludis::SequenceConstIteratorTag<std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::cxx11::basic_string<char, std::char_traits, std::allocator > const>::operator==(paludis::WrappedForwardIterator<paludis::SequenceConstIteratorTag<std::cxx11::basic_string<char, std::char_traits, std::allocator > >, std::cxx11::basic_string<char, std::char_traits, std::allocator > const> const&) const'

zaufi commented 8 years ago

The warning is not important (though could be easy fixed by patch). Linking errors actually caused by improper use of Dual ABI: it looks like some parts of your system has compiled with different C++11 ABI (controlled by _GLIBCXX_USE_CXX11_ABI macro as explained in GCC wiki). So, actually it is not a fault by ebuild, but your compiler flags… To solve the issue please rebuild your system w/ the same value of _GLIBCXX_USE_CXX11_ABI.

zaufi commented 8 years ago

FYI, to resolve cave fix-linkage bug, here is a patch I use to apply by auto-patch hook.