opencv 2.4.3 fails on my x86 system. The relevant parts of the build log are attached, but here is the culprit nonetheless: [ 89%] Building CXX object modules/gpu/CMakeFiles/opencv_gpu.dir/src/graphcuts.cpp.o [...] ../../lib/libopencv_objdetect.so.2.4.3: undefined reference to `tbb::internal::allocate_child_proxy::allocate(unsigned int) const' ../../lib/libopencv_core.so.2.4.3: undefined reference to `tbb::task_scheduler_init::initialize(int, unsigned int)' ../../lib/libopencv_calib3d.so.2.4.3: undefined reference to `tbb::internal::allocate_additional_child_of_proxy::allocate(unsigned int) const' ../../lib/libopencv_objdetect.so.2.4.3: undefined reference to `tbb::internal::concurrent_vector_base_v3::internal_push_back(unsigned int, unsigned int&)' ../../lib/libopencv_objdetect.so.2.4.3: undefined reference to `tbb::internal::allocate_continuation_proxy::allocate(unsigned int) const' ../../lib/libopencv_objdetect.so.2.4.3: undefined reference to `tbb::internal::allocate_root_proxy::allocate(unsigned int)' ../../lib/libopencv_objdetect.so.2.4.3: undefined reference to `tbb::internal::NFS_Allocate(unsigned int, unsigned int, void*)' ../../lib/libopencv_objdetect.so.2.4.3: undefined reference to `tbb::internal::allocate_root_with_context_proxy::allocate(unsigned int) const' ../../lib/libopencv_objdetect.so.2.4.3: undefined reference to `tbb::internal::concurrent_vector_base_v3::internal_clear(void (*)(void*, unsigned int))' Reproducible: Always Apart from opencv and aufs3, which is wholly unrelated, world is fully up-to-date.
Created attachment 342446 [details] emerge --info
Created attachment 342448 [details] build log Excerpt: configure phase and last few compile lines before the error.
*** Bug 463388 has been marked as a duplicate of this bug. ***
Workaround: USE='-threads'
Which version of dev-cpp/tbb do you use? Does upgrading opencv or tbb to ~arch help?
I tried both 4.1.20121003 and 4.1.20130116 to no avail.
Both failures are on systems where the kernel is x86_64 (64bit), but the userland is x86 (32bit). This probably means tbb is autodetecting the architecture somewhere (using the kernel as source) and adapting the function exports. http://software.intel.com/en-us/forums/topic/292627 ^ this thread may be relevant, I'll investigate more later.
FWIW, my system is not a chroot.
I was able to build opencv 2.4.3 with -threads. I don’t have (lib)tbb installed though.
I've added tbb-4.1.20130116-r1 (without keywords since I cannot test it). Please check if updating to that version helps (you will need to place =dev-cpp/tbb-4.1.20130116-r1 ** in your package.keywords) and tell us here...
With tbb-4.1.20130116-r1, opencv[threads] merges cleanly. Please note that merely keywording tbb-4.1.20130116-r1 as '~arch' will leave plain old stable 'arch' broken. Maybe -r1 can be backported to stable tbb?
(In reply to comment #11) > With tbb-4.1.20130116-r1, opencv[threads] merges cleanly. > > Please note that merely keywording tbb-4.1.20130116-r1 as '~arch' will leave > plain old stable 'arch' broken. Maybe -r1 can be backported to stable tbb? Makes sense, done.