during emerge of lximage-0.14.1-r1 on a system that is built with ABI_X86="64" (so no multilib), the lximage depends on libxcb.so being present in /usr/lib/. However, on a pure 64 bit system, libxcb is only present in /usr/lib64, so the lximage ebuild fails with ninja: error: '/usr/lib/libxcb.so', needed by 'src/lximage-qt', missing and no known rule to make it Reproducible: Always Steps to Reproduce: 1. set ABI_X86="64" in make.conf 2. remove all mention of abi_x86_32 in package.use (in particular of x11-libs/libxcb) 3. rebuild libxcb and verify that this places libxcb.so in /usr/lib64/ and not in /usr/lib 4. build lximage-0.14.1-r1. Actual Results: * Working in BUILD_DIR: "/var/tmp/portage/portage/media-gfx/lximage-qt-0.14.1-r1/work/lximage-qt-0.14.1_build" ninja -v -j1 -l1 ninja: error: '/usr/lib/libxcb.so', needed by 'src/lximage-qt', missing and no known rule to make it Expected Results: ninja should look for libxcb in /usr/lib64 for the library file the makefile that is created during configuration 'work/lximage-qt-0.14.1_build/build.ninja' contains a reference to /usr/lib/libxcb.so (see the forum post https://forums.gentoo.org/viewtopic-p-8405100.html#8405100 for the location of this reference). In case of a pure 64-bit build, this reference should be adapted to /usr/lib64/libxcb As a workaround, libxcb and its dependencies must be compiled with the abi_x86_32 use flag.
Does the '/usr/lib/' persist after having built things with 32-bit support? From a quick look, I do get '/usr/lib64/' here, even after having built 'x11-libs/libxcb' with 'ABI_X86="64"' (was only a quick test though, and I did not build all the dependencies with it). Also, what are the contents of '/usr/lib64/pkgconfig/xcb.pc'? (Not sure this will be interesting really, but I am a bit curious.)
As already mentioned: the problem is that lximage-qt requires /lib/libxcb. with ABI_x86="64", that file does not exist. As a workaround, I put in package.use 'x11-libs/libxcb abi_x86_32' (leaving ABI_x86 in make.conf unchanged and re-emerged libxcb => I now have libxcb both in /usr/lib and /usr/lib64. If I understand your question correctly, now that there is a file /usr/lib/libxcb you wanted me to emerge again, but with the 'x11-libs/libxcb abi_x86_32' statement in package.use removed again. As expected, the result of this is a file in /usr/lib64 and one in /usr/lib. I suspect you may have misinterpreted the actual problem, which is a problem with the emerge of lximage-qt. with make.conf containing ABI_x86="64", an emerge shoudl look for all needed libraries in /usr/lib64. However, the link command for lximage-qt contains build src/lximage-qt: CXX_EXECUTABLE_LINKER__lximage-qt src/CMakeFiles/lximage-qt.dir/lximage-qt_autogen/mocs_compilation.cpp.o src/CMakeFiles/lximage-qt.dir/lximage-qt.cpp.o src/CMakeFiles/lximage-qt.dir/mainwindow.cpp.o src/CMakeFiles/lximage-qt.dir/preferencesdialog.cpp.o src/CMakeFiles/lximage-qt.dir/application.cpp.o src/CMakeFiles/lximage-qt.dir/imageview.cpp.o src/CMakeFiles/lximage-qt.dir/modelfilter.cpp.o src/CMakeFiles/lximage-qt.dir/loadimagejob.cpp.o src/CMakeFiles/lximage-qt.dir/saveimagejob.cpp.o src/CMakeFiles/lximage-qt.dir/screenshotdialog.cpp.o src/CMakeFiles/lximage-qt.dir/screenshotselectarea.cpp.o src/CMakeFiles/lximage-qt.dir/screenshotselectareagraphicsview.cpp.o src/CMakeFiles/lximage-qt.dir/settings.cpp.o src/CMakeFiles/lximage-qt.dir/graphicsscene.cpp.o src/CMakeFiles/lximage-qt.dir/mrumenu.cpp.o src/CMakeFiles/lximage-qt.dir/upload/imageshackprovider.cpp.o src/CMakeFiles/lximage-qt.dir/upload/imageshackupload.cpp.o src/CMakeFiles/lximage-qt.dir/upload/imgbbprovider.cpp.o src/CMakeFiles/lximage-qt.dir/upload/imgbbupload.cpp.o src/CMakeFiles/lximage-qt.dir/upload/imgurprovider.cpp.o src/CMakeFiles/lximage-qt.dir/upload/imgurupload.cpp.o src/CMakeFiles/lximage-qt.dir/upload/provider.cpp.o src/CMakeFiles/lximage-qt.dir/upload/upload.cpp.o src/CMakeFiles/lximage-qt.dir/upload/uploaddialog.cpp.o src/CMakeFiles/lximage-qt.dir/applicationadaptor.cpp.o src/CMakeFiles/lximage-qt.dir/lximage-qt_autogen/EWIEGA46WW/qrc_resource.cpp.o | /usr/lib64/libfm-qt.so.6.1.0 /usr/lib64/libQt5Network.so.5.13.2 /usr/lib64/libQt5DBus.so.5.13.2 /usr/lib64/libQt5PrintSupport.so.5.13.2 /usr/lib64/libQt5X11Extras.so.5.13.2 /usr/lib64/libQt5Svg.so.5.13.2 /usr/lib64/libexif.so /usr/lib64/libSM.so /usr/lib64/libICE.so /usr/lib64/libX11.so /usr/lib64/libXext.so /usr/lib64/libglib-2.0.so /usr/lib64/libgio-2.0.so /usr/lib64/libgobject-2.0.so /usr/lib64/libgthread-2.0.so /usr/lib64/libmenu-cache.so /usr/lib64/libglib-2.0.so /usr/lib64/libgio-2.0.so /usr/lib64/libgobject-2.0.so /usr/lib64/libgthread-2.0.so /usr/lib64/libmenu-cache.so /usr/lib/libxcb.so /usr/lib64/libexif.so /usr/lib64/libQt5Widgets.so.5.13.2 /usr/lib64/libQt5Gui.so.5.13.2 /usr/lib64/libQt5Core.so.5.13.2 || src/lximage-qt_autogen As you can see, all libraries in that link command refer to /usr/lib64, except the one refering to /usr/lib/libxcb. So something in the ebuild should check for ABI_X86 and if it contains "64", the correct /usr/lib64/libcxb should be linked in.
cat /usr/lib64/pkgconfig/xcb.pc prefix=/usr exec_prefix=${prefix} libdir=/usr/lib64 includedir=${prefix}/include xcbproto_version=1.13 Name: XCB Description: X-protocol C Binding Version: 1.13.1 Requires.private: pthread-stubs xau >= 0.99.2 xdmcp Libs: -L${libdir} -lxcb Libs.private: Cflags: -I${includedir}
Thanks! What I meant to ask, is if the 'build.ninja' file still contains the reference to '/usr/lib/'. I don't know if it should work differently for me, even if I'm not running with a pure 64-bit system. I'd kind of expect to see '/usr/lib/' as well.
Closing since there hasn't been any updates for a time, and 'media-gfx/lximage-qt-0.14.1-r1' is gone. Feel free to re-open if this is still being a thing. Thanks for the report!