Boost C++ Libraries: Ticket #3560: Duplicate name of actual target: <pstage/lib>libboost_graph_parallel-mt.so.1.40.0 https://svn.boost.org/trac10/ticket/3560 <p> I try to build boost using the gentoo ebuild for boost-1.40.0 with mpi enabled. It uses the following options </p> <ul><li>Using the following options to build: </li><li> -sICU_PATH=/usr -sEXPAT_INCLUDE=/usr/include -sEXPAT_LIBPATH=/usr/lib64 --user-config="/var/tmp/portage/dev-libs/boost-1.40.0/work/boost_1_40_0/user-config.jam" --boost-build=/usr/share/boost-build-1_40 --prefix="/var/tmp/portage/dev-libs/boost-1.40.0/image<em>usr" --layout=versioned </em></li></ul><p> The user-config.jam: </p> <hr /> <p> variant gentoorelease : release : &lt;optimization&gt;none &lt;debug-symbols&gt;none ; variant gentoodebug : debug : &lt;optimization&gt;none ; </p> <p> using gcc : 4.3 : x86_64-pc-linux-gnu-g++ : &lt;cxxflags&gt;"-O2 -march=x86-64 -mtune=core2 -pipe" &lt;linkflags&gt;"-Wl,-O1" ; </p> <p> using python : 2.6 : /usr : /usr/include/python2.6 : /usr/lib/python2.6 ; </p> <p> using mpi ; </p> <hr /> <p> the build error: </p> <hr /> <p> Building the Boost C++ Libraries. </p> <p> After the build, the headers will be located at </p> <blockquote> <p> /var/tmp/portage/dev-libs/boost-1.40.0/work/boost_1_40_0 </p> </blockquote> <p> The libraries will be located at </p> <blockquote> <p> /var/tmp/portage/dev-libs/boost-1.40.0/work/boost_1_40_0/stage/lib </p> </blockquote> <p> Use 'bjam install --prefix=&lt;path&gt;' if you wish to install headers and libraries to a different location and remove the source tree. </p> <p> Note: Building Boost.Regex with Unicode/ICU support enabled </p> <blockquote> <p> Using ICU in /usr/include </p> </blockquote> <p> /usr/share/boost-build-1_40/build/virtual-target.jam:1056: in virtual-target.register-actual-name from module virtual-target error: Duplicate name of actual target: &lt;pstage/lib&gt;libboost_graph_parallel-mt-1_40.so.1.40.0 error: previous virtual target { common%common.copy-libboost_graph_parallel-mt-1_40.so.1.40.0.SHARED_LIB { gcc%gcc.link.dll-libboost_graph_parallel-mt-1_40.so.1.40.0.SHARED_LIB { gcc%gcc.compile.c++-mpi_process_group.o.OBJ { mpi_process_group.cpp.CPP } } { gcc%gcc.compile.c++-tag_allocator.o.OBJ { tag_allocator.cpp.CPP } } { gcc%gcc.link.dll-libboost_mpi-mt-1_40.so.1.40.0.SHARED_LIB { gcc%gcc.compile.c++-broadcast.o.OBJ { broadcast.cpp.CPP } } { gcc%gcc.compile.c++-communicator.o.OBJ { communicator.cpp.CPP } } { gcc%gcc.compile.c++-computation_tree.o.OBJ { computation_tree.cpp.CPP } } { gcc%gcc.compile.c++-content_oarchive.o.OBJ { content_oarchive.cpp.CPP } } { gcc%gcc.compile.c++-environment.o.OBJ { environment.cpp.CPP } } { gcc%gcc.compile.c++-exception.o.OBJ { exception.cpp.CPP } } { gcc%gcc.compile.c++-graph_communicator.o.OBJ { graph_communicator.cpp.CPP } } { gcc%gcc.compile.c++-group.o.OBJ { group.cpp.CPP } } { gcc%gcc.compile.c++-intercommunicator.o.OBJ { intercommunicator.cpp.CPP } } { gcc%gcc.compile.c++-mpi_datatype_cache.o.OBJ { mpi_datatype_cache.cpp.CPP } } { gcc%gcc.compile.c++-mpi_datatype_oarchive.o.OBJ { mpi_datatype_oarchive.cpp.CPP } } { gcc%gcc.compile.c++-packed_iarchive.o.OBJ { packed_iarchive.cpp.CPP } } { gcc%gcc.compile.c++-packed_oarchive.o.OBJ { packed_oarchive.cpp.CPP } } { gcc%gcc.compile.c++-packed_skeleton_iarchive.o.OBJ { packed_skeleton_iarchive.cpp.CPP } } { gcc%gcc.compile.c++-packed_skeleton_oarchive.o.OBJ { packed_skeleton_oarchive.cpp.CPP } } { gcc%gcc.compile.c++-point_to_point.o.OBJ { point_to_point.cpp.CPP } } { gcc%gcc.compile.c++-request.o.OBJ { request.cpp.CPP } } { gcc%gcc.compile.c++-text_skeleton_oarchive.o.OBJ { text_skeleton_oarchive.cpp.CPP } } { gcc%gcc.compile.c++-timer.o.OBJ { timer.cpp.CPP } } { gcc%gcc.link.dll-libboost_serialization-mt-1_40.so.1.40.0.SHARED_LIB { gcc%gcc.compile.c++-basic_archive.o.OBJ { basic_archive.cpp.CPP } } { gcc%gcc.compile.c++-basic_iarchive.o.OBJ { basic_iarchive.cpp.CPP } } { gcc%gcc.compile.c++-basic_iserializer.o.OBJ { basic_iserializer.cpp.CPP } } { gcc%gcc.compile.c++-basic_oarchive.o.OBJ { basic_oarchive.cpp.CPP } } { gcc%gcc.compile.c++-basic_oserializer.o.OBJ { basic_oserializer.cpp.CPP } } { gcc%gcc.compile.c++-basic_pointer_iserializer.o.OBJ { basic_pointer_iserializer.cpp.CPP } } { gcc%gcc.compile.c++-basic_pointer_oserializer.o.OBJ { basic_pointer_oserializer.cpp.CPP } } { gcc%gcc.compile.c++-basic_serializer_map.o.OBJ { basic_serializer_map.cpp.CPP } } { gcc%gcc.compile.c++-basic_text_iprimitive.o.OBJ { basic_text_iprimitive.cpp.CPP } } { gcc%gcc.compile.c++-basic_text_oprimitive.o.OBJ { basic_text_oprimitive.cpp.CPP } } { gcc%gcc.compile.c++-basic_xml_archive.o.OBJ { basic_xml_archive.cpp.CPP } } { gcc%gcc.compile.c++-binary_iarchive.o.OBJ { binary_iarchive.cpp.CPP } } { gcc%gcc.compile.c++-binary_oarchive.o.OBJ { binary_oarchive.cpp.CPP } } { gcc%gcc.compile.c++-extended_type_info.o.OBJ { extended_type_info.cpp.CPP } } { gcc%gcc.compile.c++-extended_type_info_typeid.o.OBJ { extended_type_info_typeid.cpp.CPP } } { gcc%gcc.compile.c++-extended_type_info_no_rtti.o.OBJ { extended_type_info_no_rtti.cpp.CPP } } { gcc%gcc.compile.c++-polymorphic_iarchive.o.OBJ { polymorphic_iarchive.cpp.CPP } } { gcc%gcc.compile.c++-polymorphic_oarchive.o.OBJ { polymorphic_oarchive.cpp.CPP } } { gcc%gcc.compile.c++-stl_port.o.OBJ { stl_port.cpp.CPP } } { gcc%gcc.compile.c++-text_iarchive.o.OBJ { text_iarchive.cpp.CPP } } { gcc%gcc.compile.c++-text_oarchive.o.OBJ { text_oarchive.cpp.CPP } } { gcc%gcc.compile.c++-void_cast.o.OBJ { void_cast.cpp.CPP } } { gcc%gcc.compile.c++-xml_grammar.o.OBJ { xml_grammar.cpp.CPP } } { gcc%gcc.compile.c++-xml_iarchive.o.OBJ { xml_iarchive.cpp.CPP } } { gcc%gcc.compile.c++-xml_oarchive.o.OBJ { xml_oarchive.cpp.CPP } } } } { gcc%gcc.link.dll-libboost_serialization-mt-1_40.so.1.40.0.SHARED_LIB { gcc%gcc.compile.c++-basic_archive.o.OBJ { basic_archive.cpp.CPP } } { gcc%gcc.compile.c++-basic_iarchive.o.OBJ { basic_iarchive.cpp.CPP } } { gcc%gcc.compile.c++-basic_iserializer.o.OBJ { basic_iserializer.cpp.CPP } } { gcc%gcc.compile.c++-basic_oarchive.o.OBJ { basic_oarchive.cpp.CPP } } { gcc%gcc.compile.c++-basic_oserializer.o.OBJ { basic_oserializer.cpp.CPP } } { gcc%gcc.compile.c++-basic_pointer_iserializer.o.OBJ { basic_pointer_iserializer.cpp.CPP } } { gcc%gcc.compile.c++-basic_pointer_oserializer.o.OBJ { basic_pointer_oserializer.cpp.CPP } } { gcc%gcc.compile.c++-basic_serializer_map.o.OBJ { basic_serializer_map.cpp.CPP } } { gcc%gcc.compile.c++-basic_text_iprimitive.o.OBJ { basic_text_iprimitive.cpp.CPP } } { gcc%gcc.compile.c++-basic_text_oprimitive.o.OBJ { basic_text_oprimitive.cpp.CPP } } { gcc%gcc.compile.c++-basic_xml_archive.o.OBJ { basic_xml_archive.cpp.CPP } } { gcc%gcc.compile.c++-binary_iarchive.o.OBJ { binary_iarchive.cpp.CPP } } { gcc%gcc.compile.c++-binary_oarchive.o.OBJ { binary_oarchive.cpp.CPP } } { gcc%gcc.compile.c++-extended_type_info.o.OBJ { extended_type_info.cpp.CPP } } { gcc%gcc.compile.c++-extended_type_info_typeid.o.OBJ { extended_type_info_typeid.cpp.CPP } } { gcc%gcc.compile.c++-extended_type_info_no_rtti.o.OBJ { extended_type_info_no_rtti.cpp.CPP } } { gcc%gcc.compile.c++-polymorphic_iarchive.o.OBJ { polymorphic_iarchive.cpp.CPP } } { gcc%gcc.compile.c++-polymorphic_oarchive.o.OBJ { polymorphic_oarchive.cpp.CPP } } { gcc%gcc.compile.c++-stl_port.o.OBJ { stl_port.cpp.CPP } } { gcc%gcc.compile.c++-text_iarchive.o.OBJ { text_iarchive.cpp.CPP } } { gcc%gcc.compile.c++-text_oarchive.o.OBJ { text_oarchive.cpp.CPP } } { gcc%gcc.compile.c++-void_cast.o.OBJ { void_cast.cpp.CPP } } { gcc%gcc.compile.c++-xml_grammar.o.OBJ { xml_grammar.cpp.CPP } } { gcc%gcc.compile.c++-xml_iarchive.o.OBJ { xml_iarchive.cpp.CPP } } { gcc%gcc.compile.c++-xml_oarchive.o.OBJ { xml_oarchive.cpp.CPP } } } } } error: created from ./stage-proper error: another virtual target { common%common.copy-libboost_graph_parallel-mt-1_40.so.1.40.0.SHARED_LIB { gcc%gcc.link.dll-libboost_graph_parallel-mt-1_40.so.1.40.0.SHARED_LIB { gcc%gcc.compile.c++-mpi_process_group.o.OBJ { mpi_process_group.cpp.CPP } } { gcc%gcc.compile.c++-tag_allocator.o.OBJ { tag_allocator.cpp.CPP } } { gcc%gcc.link.dll-libboost_mpi-mt-1_40.so.1.40.0.SHARED_LIB { gcc%gcc.compile.c++-broadcast.o.OBJ { broadcast.cpp.CPP } } { gcc%gcc.compile.c++-communicator.o.OBJ { communicator.cpp.CPP } } { gcc%gcc.compile.c++-computation_tree.o.OBJ { computation_tree.cpp.CPP } } { gcc%gcc.compile.c++-content_oarchive.o.OBJ { content_oarchive.cpp.CPP } } { gcc%gcc.compile.c++-environment.o.OBJ { environment.cpp.CPP } } { gcc%gcc.compile.c++-exception.o.OBJ { exception.cpp.CPP } } { gcc%gcc.compile.c++-graph_communicator.o.OBJ { graph_communicator.cpp.CPP } } { gcc%gcc.compile.c++-group.o.OBJ { group.cpp.CPP } } { gcc%gcc.compile.c++-intercommunicator.o.OBJ { intercommunicator.cpp.CPP } } { gcc%gcc.compile.c++-mpi_datatype_cache.o.OBJ { mpi_datatype_cache.cpp.CPP } } { gcc%gcc.compile.c++-mpi_datatype_oarchive.o.OBJ { mpi_datatype_oarchive.cpp.CPP } } { gcc%gcc.compile.c++-packed_iarchive.o.OBJ { packed_iarchive.cpp.CPP } } { gcc%gcc.compile.c++-packed_oarchive.o.OBJ { packed_oarchive.cpp.CPP } } { gcc%gcc.compile.c++-packed_skeleton_iarchive.o.OBJ { packed_skeleton_iarchive.cpp.CPP } } { gcc%gcc.compile.c++-packed_skeleton_oarchive.o.OBJ { packed_skeleton_oarchive.cpp.CPP } } { gcc%gcc.compile.c++-point_to_point.o.OBJ { point_to_point.cpp.CPP } } { gcc%gcc.compile.c++-request.o.OBJ { request.cpp.CPP } } { gcc%gcc.compile.c++-text_skeleton_oarchive.o.OBJ { text_skeleton_oarchive.cpp.CPP } } { gcc%gcc.compile.c++-timer.o.OBJ { timer.cpp.CPP } } { gcc%gcc.link.dll-libboost_serialization-mt-1_40.so.1.40.0.SHARED_LIB { gcc%gcc.compile.c++-basic_archive.o.OBJ { basic_archive.cpp.CPP } } { gcc%gcc.compile.c++-basic_iarchive.o.OBJ { basic_iarchive.cpp.CPP } } { gcc%gcc.compile.c++-basic_iserializer.o.OBJ { basic_iserializer.cpp.CPP } } { gcc%gcc.compile.c++-basic_oarchive.o.OBJ { basic_oarchive.cpp.CPP } } { gcc%gcc.compile.c++-basic_oserializer.o.OBJ { basic_oserializer.cpp.CPP } } { gcc%gcc.compile.c++-basic_pointer_iserializer.o.OBJ { basic_pointer_iserializer.cpp.CPP } } { gcc%gcc.compile.c++-basic_pointer_oserializer.o.OBJ { basic_pointer_oserializer.cpp.CPP } } { gcc%gcc.compile.c++-basic_serializer_map.o.OBJ { basic_serializer_map.cpp.CPP } } { gcc%gcc.compile.c++-basic_text_iprimitive.o.OBJ { basic_text_iprimitive.cpp.CPP } } { gcc%gcc.compile.c++-basic_text_oprimitive.o.OBJ { basic_text_oprimitive.cpp.CPP } } { gcc%gcc.compile.c++-basic_xml_archive.o.OBJ { basic_xml_archive.cpp.CPP } } { gcc%gcc.compile.c++-binary_iarchive.o.OBJ { binary_iarchive.cpp.CPP } } { gcc%gcc.compile.c++-binary_oarchive.o.OBJ { binary_oarchive.cpp.CPP } } { gcc%gcc.compile.c++-extended_type_info.o.OBJ { extended_type_info.cpp.CPP } } { gcc%gcc.compile.c++-extended_type_info_typeid.o.OBJ { extended_type_info_typeid.cpp.CPP } } { gcc%gcc.compile.c++-extended_type_info_no_rtti.o.OBJ { extended_type_info_no_rtti.cpp.CPP } } { gcc%gcc.compile.c++-polymorphic_iarchive.o.OBJ { polymorphic_iarchive.cpp.CPP } } { gcc%gcc.compile.c++-polymorphic_oarchive.o.OBJ { polymorphic_oarchive.cpp.CPP } } { gcc%gcc.compile.c++-stl_port.o.OBJ { stl_port.cpp.CPP } } { gcc%gcc.compile.c++-text_iarchive.o.OBJ { text_iarchive.cpp.CPP } } { gcc%gcc.compile.c++-text_oarchive.o.OBJ { text_oarchive.cpp.CPP } } { gcc%gcc.compile.c++-void_cast.o.OBJ { void_cast.cpp.CPP } } { gcc%gcc.compile.c++-xml_grammar.o.OBJ { xml_grammar.cpp.CPP } } { gcc%gcc.compile.c++-xml_iarchive.o.OBJ { xml_iarchive.cpp.CPP } } { gcc%gcc.compile.c++-xml_oarchive.o.OBJ { xml_oarchive.cpp.CPP } } } } { gcc%gcc.link.dll-libboost_serialization-mt-1_40.so.1.40.0.SHARED_LIB { gcc%gcc.compile.c++-basic_archive.o.OBJ { basic_archive.cpp.CPP } } { gcc%gcc.compile.c++-basic_iarchive.o.OBJ { basic_iarchive.cpp.CPP } } { gcc%gcc.compile.c++-basic_iserializer.o.OBJ { basic_iserializer.cpp.CPP } } { gcc%gcc.compile.c++-basic_oarchive.o.OBJ { basic_oarchive.cpp.CPP } } { gcc%gcc.compile.c++-basic_oserializer.o.OBJ { basic_oserializer.cpp.CPP } } { gcc%gcc.compile.c++-basic_pointer_iserializer.o.OBJ { basic_pointer_iserializer.cpp.CPP } } { gcc%gcc.compile.c++-basic_pointer_oserializer.o.OBJ { basic_pointer_oserializer.cpp.CPP } } { gcc%gcc.compile.c++-basic_serializer_map.o.OBJ { basic_serializer_map.cpp.CPP } } { gcc%gcc.compile.c++-basic_text_iprimitive.o.OBJ { basic_text_iprimitive.cpp.CPP } } { gcc%gcc.compile.c++-basic_text_oprimitive.o.OBJ { basic_text_oprimitive.cpp.CPP } } { gcc%gcc.compile.c++-basic_xml_archive.o.OBJ { basic_xml_archive.cpp.CPP } } { gcc%gcc.compile.c++-binary_iarchive.o.OBJ { binary_iarchive.cpp.CPP } } { gcc%gcc.compile.c++-binary_oarchive.o.OBJ { binary_oarchive.cpp.CPP } } { gcc%gcc.compile.c++-extended_type_info.o.OBJ { extended_type_info.cpp.CPP } } { gcc%gcc.compile.c++-extended_type_info_typeid.o.OBJ { extended_type_info_typeid.cpp.CPP } } { gcc%gcc.compile.c++-extended_type_info_no_rtti.o.OBJ { extended_type_info_no_rtti.cpp.CPP } } { gcc%gcc.compile.c++-polymorphic_iarchive.o.OBJ { polymorphic_iarchive.cpp.CPP } } { gcc%gcc.compile.c++-polymorphic_oarchive.o.OBJ { polymorphic_oarchive.cpp.CPP } } { gcc%gcc.compile.c++-stl_port.o.OBJ { stl_port.cpp.CPP } } { gcc%gcc.compile.c++-text_iarchive.o.OBJ { text_iarchive.cpp.CPP } } { gcc%gcc.compile.c++-text_oarchive.o.OBJ { text_oarchive.cpp.CPP } } { gcc%gcc.compile.c++-void_cast.o.OBJ { void_cast.cpp.CPP } } { gcc%gcc.compile.c++-xml_grammar.o.OBJ { xml_grammar.cpp.CPP } } { gcc%gcc.compile.c++-xml_iarchive.o.OBJ { xml_iarchive.cpp.CPP } } { gcc%gcc.compile.c++-xml_oarchive.o.OBJ { xml_oarchive.cpp.CPP } } } } } error: created from ./stage-proper error: added properties: none error: removed properties: &lt;threading&gt;single /usr/share/boost-build-1_40/build/virtual-target.jam:480: in actualize-no-scanner from module object(file-target)@6083 /usr/share/boost-build-1_40/build/virtual-target.jam:130: in object(file-target)@6083.actualize from module object(file-target)@6083 /usr/share/boost-build-1_40/build-system.jam:713: in load from module build-system /usr/share/boost-build-1_40/kernel/modules.jam:283: in import from module modules /usr/share/boost-build-1_40/kernel/bootstrap.jam:138: in boost-build from module /var/tmp/portage/dev-libs/boost-1.40.0/work/boost_1_40_0/boost-build.jam:16: in module scope from module </p> <hr /> <p> Note that passing threading=multi instead of threading=single,multi makes the error go away. </p> <p> Also note that it doesn't fail if mpi is not enabled. </p> <p> The corresponding gentoo bug is: <a class="ext-link" href="https://bugs.gentoo.org/show_bug.cgi?id=283106"><span class="icon">​</span>https://bugs.gentoo.org/show_bug.cgi?id=283106</a> </p> en-us Boost C++ Libraries /htdocs/site/boost.png https://svn.boost.org/trac10/ticket/3560 Trac 1.4.3 Steven Watanabe Mon, 26 Oct 2009 20:48:29 GMT <link>https://svn.boost.org/trac10/ticket/3560#comment:1 </link> <guid isPermaLink="false">https://svn.boost.org/trac10/ticket/3560#comment:1</guid> <description> <p> This appears to be a result of using &lt;threading&gt;multi in the usage requirements. This is a problem, because &lt;threading&gt;multi is not a free feature. The graph_parallel Jamfile needs to add [ mpi.extra-requirements ] to the requirements of boost_graph_parallel in addition to pbgl. </p> </description> <category>Ticket</category> </item> <item> <dc:creator>Vladimir Prus</dc:creator> <pubDate>Mon, 09 Nov 2009 20:51:14 GMT</pubDate> <title>status changed; resolution set https://svn.boost.org/trac10/ticket/3560#comment:2 https://svn.boost.org/trac10/ticket/3560#comment:2 <ul> <li><strong>status</strong> <span class="trac-field-old">new</span> → <span class="trac-field-new">closed</span> </li> <li><strong>resolution</strong> → <span class="trac-field-new">fixed</span> </li> </ul> <p> (In <a class="changeset" href="https://svn.boost.org/trac10/changeset/57526" title="Simplify Jamfile. Fixes #3560">[57526]</a>) Simplify Jamfile. Fixes <a class="closed ticket" href="https://svn.boost.org/trac10/ticket/3560" title="#3560: Bugs: Duplicate name of actual target: ... (closed: fixed)">#3560</a> </p> Ticket