Almost invariably, updating dev-libs/boost breaks dev-libs/leatherman, linker failures that one sees when next building dev-ruby/facter. @preserved-rebuild finds that facter needs to be rebuilt, but not leatherman, I think probably because leatherman is statically linked Reproducible: Always Steps to Reproduce: 1. Update dev-libs/boost 2. Run emerge @preserved-rebuild Actual Results: # emerge -uDNav --with-bdeps y --backtrack 100 @world Calculating dependencies... done! [ebuild U ] dev-util/boost-build-1.65.0::gentoo [1.63.0::gentoo] USE="python -examples {-test}" PYTHON_TARGETS="python2_7" 80,662 KiB [ebuild r U ] dev-libs/boost-1.65.0:0/1.65.0::gentoo [1.63.0:0/1.63.0::gentoo] USE="icu nls python threads tools -context -debug -doc -mpi -static-libs" PYTHON_TARGETS="python2_7 python3_4 -python3_5 -python3_6" 0 KiB [ebuild U ~] app-admin/puppet-5.3.4::gentoo [5.3.3-r1::gentoo] USE="augeas ldap sqlite vim-syntax -diff -doc -emacs -rrdtool (-selinux) -shadow {-test}" RUBY_TARGETS="ruby23 -ruby22 -ruby24" 2,822 KiB ... # emerge -j1 @preserved-rebuild Calculating dependencies... done! >>> Verifying ebuild manifests >>> Emerging (1 of 1) dev-ruby/facter-3.9.2::gentoo ... /usr/lib64/leatherman_curl.a(client.cc.o): In function `boost::re_detail_106300::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::unwind_extra_block(bool)': (.text._ZN5boost16re_detail_10630012perl_matcherIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISC_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE18unwind_extra_blockEb[_ZN5boost16re_detail_10630012perl_matcherIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISC_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE18unwind_extra_blockEb]+0x3b): undefined reference to `boost::re_detail_106300::put_mem_block(void*)' /usr/lib64/leatherman_curl.a(client.cc.o): In function `__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > boost::re_detail_106300::re_is_set_member<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, char, boost::regex_traits<char, boost::cpp_regex_traits<char> >, unsigned int>(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::re_detail_106300::re_set_long<unsigned int> const*, boost::re_detail_106300::regex_data<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, bool)': (.text._ZN5boost16re_detail_10630016re_is_set_memberIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEjEET_SH_SH_PKNS0_11re_set_longIT2_EERKNS0_10regex_dataIT0_T1_EEb[_ZN5boost16re_detail_10630016re_is_set_memberIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEjEET_SH_SH_PKNS0_11re_set_longIT2_EERKNS0_10regex_dataIT0_T1_EEb]+0x19d): undefined reference to `boost::re_detail_106300::cpp_regex_traits_implementation<char>::transform_primary[abi:cxx11](char const*, char const*) const' (.text._ZN5boost16re_detail_10630016re_is_set_memberIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEjEET_SH_SH_PKNS0_11re_set_longIT2_EERKNS0_10regex_dataIT0_T1_EEb[_ZN5boost16re_detail_10630016re_is_set_memberIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEjEET_SH_SH_PKNS0_11re_set_longIT2_EERKNS0_10regex_dataIT0_T1_EEb]+0x2e0): undefined reference to `boost::re_detail_106300::cpp_regex_traits_implementation<char>::transform[abi:cxx11](char const*, char const*) const' /usr/lib64/leatherman_curl.a(client.cc.o): In function `boost::re_detail_106300::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::find_imp()': (.text._ZN5boost16re_detail_10630012perl_matcherIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISC_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE8find_impEv[_ZN5boost16re_detail_10630012perl_matcherIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISC_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE8find_impEv]+0x19): undefined reference to `boost::re_detail_106300::get_mem_block()' (.text._ZN5boost16re_detail_10630012perl_matcherIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISC_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE8find_impEv[_ZN5boost16re_detail_10630012perl_matcherIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISC_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE8find_impEv]+0x13f): undefined reference to `boost::re_detail_106300::verify_options(unsigned int, boost::regex_constants::_match_flags)' (.text._ZN5boost16re_detail_10630012perl_matcherIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISC_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE8find_impEv[_ZN5boost16re_detail_10630012perl_matcherIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISC_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE8find_impEv]+0x186): undefined reference to `boost::re_detail_106300::put_mem_block(void*)' (.text._ZN5boost16re_detail_10630012perl_matcherIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISC_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE8find_impEv[_ZN5boost16re_detail_10630012perl_matcherIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISC_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE8find_impEv]+0x2ed): undefined reference to `boost::re_detail_106300::put_mem_block(void*)' /usr/lib64/leatherman_curl.a(client.cc.o): In function `void boost::re_detail_106300::raise_error<boost::regex_traits_wrapper<boost::regex_traits<char, boost::cpp_regex_traits<char> > > >(boost::regex_traits_wrapper<boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::error_type)': (.text._ZN5boost16re_detail_10630011raise_errorINS_20regex_traits_wrapperINS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEEEEEvRKT_NS_15regex_constants10error_typeE[_ZN5boost16re_detail_10630011raise_errorINS_20regex_traits_wrapperINS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEEEEEvRKT_NS_15regex_constants10error_typeE]+0xbd): undefined reference to `boost::re_detail_106300::raise_runtime_error(std::runtime_error const&)' (.text._ZN5boost16re_detail_10630011raise_errorINS_20regex_traits_wrapperINS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEEEEEvRKT_NS_15regex_constants10error_typeE[_ZN5boost16re_detail_10630011raise_errorINS_20regex_traits_wrapperINS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEEEEEvRKT_NS_15regex_constants10error_typeE]+0xd8): undefined reference to `boost::re_detail_106300::get_default_error_string(boost::regex_constants::error_type)' (.text._ZN5boost16re_detail_10630011raise_errorINS_20regex_traits_wrapperINS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEEEEEvRKT_NS_15regex_constants10error_typeE[_ZN5boost16re_detail_10630011raise_errorINS_20regex_traits_wrapperINS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEEEEEvRKT_NS_15regex_constants10error_typeE]+0x118): undefined reference to `boost::re_detail_106300::get_default_error_string(boost::regex_constants::error_type)' /usr/lib64/leatherman_curl.a(client.cc.o): In function `boost::re_detail_106300::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::extend_stack()': (.text._ZN5boost16re_detail_10630012perl_matcherIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISC_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE12extend_stackEv[_ZN5boost16re_detail_10630012perl_matcherIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISC_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE12extend_stackEv]+0x2b): undefined reference to `boost::re_detail_106300::get_mem_block()' collect2: error: ld returned 1 exit status make[2]: *** [lib/tests/CMakeFiles/libfacter_test.dir/build.make:1669: bin/libfacter_test] Error 1 make[2]: Leaving directory '/var/tmp/portage/dev-ruby/facter-3.9.2/work/facter-3.9.2_build' make[1]: *** [CMakeFiles/Makefile2:252: lib/tests/CMakeFiles/libfacter_test.dir/all] Error 2 make[1]: Leaving directory '/var/tmp/portage/dev-ruby/facter-3.9.2/work/facter-3.9.2_build' make: *** [Makefile:144: all] Error 2 * ERROR: dev-ruby/facter-3.9.2::gentoo failed (compile phase): * emake failed * * If you need support, post the output of `emerge --info '=dev-ruby/facter-3.9.2::gentoo'`, * the complete build log and the output of `emerge -pqv '=dev-ruby/facter-3.9.2::gentoo'`. * The complete build log is located at '/var/tmp/portage/dev-ruby/facter-3.9.2/temp/build.log'. * The ebuild environment file is located at '/var/tmp/portage/dev-ruby/facter-3.9.2/temp/environment'. * Working directory: '/var/tmp/portage/dev-ruby/facter-3.9.2/work/facter-3.9.2_build' * S: '/var/tmp/portage/dev-ruby/facter-3.9.2/work/all/facter-3.9.2' !!! When you file a bug report, please include the following information: GENTOO_VM= CLASSPATH="" JAVA_HOME="/usr" JAVACFLAGS="" COMPILER="" and of course, the output of emerge --info =facter-3.9.2 >>> Failed to emerge dev-ruby/facter-3.9.2, Log file: >>> '/var/tmp/portage/dev-ruby/facter-3.9.2/temp/build.log' # to fix : emerge -1 leatherman facter Calculating dependencies... done! >>> Verifying ebuild manifests >>> Emerging (1 of 2) dev-libs/leatherman-1.3.0::gentoo >>> Installing (1 of 2) dev-libs/leatherman-1.3.0::gentoo >>> Emerging (2 of 2) dev-ruby/facter-3.9.2::gentoo >>> Installing (2 of 2) dev-ruby/facter-3.9.2::gentoo >>> Jobs: 2 of 2 complete Expected Results: 1) Updating boost should force a rebuild of dev-libs/leatherman and dev-ruby/facter or 2) @preserved-rebuild should update both dev-libs/leatherman and dev-ruby/facter after boost updates my package.keywords contains: app-admin/puppet ~amd64 =dev-ruby/facter-3.6.3-r1 ~amd64 =dev-ruby/hocon-1.2.5 ~amd64
This appears to be fixed in dev-libs/leatherman-1.3.0-r1, at least with the default keywords, as it installs shared libraries that are correctly found by @preserved-rebuild after future boost updates.
*** This bug has been marked as a duplicate of bug 637644 ***