Summary: | dev-qt/qtsql-4.8.6-r1[oci8] configure fails with ABI_X86="32": cannot find -lclntsh | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | George Tarasov <george.v.tarasov> |
Component: | [OLD] Library | Assignee: | Qt Bug Alias <qt> |
Status: | VERIFIED FIXED | ||
Severity: | normal | CC: | egorov_egor, thomas.bettler |
Priority: | Normal | ||
Version: | unspecified | ||
Hardware: | AMD64 | ||
OS: | Linux | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Bug Depends on: | |||
Bug Blocks: | 530238 | ||
Attachments: |
build.log
Makefile from working directory of dev-qt/qtsql |
Description
George Tarasov
2015-03-31 00:06:34 UTC
emerge --info please (In reply to Davide Pesavento from comment #1) > emerge --info please I'm stupid. I meant attach the full build.log Created attachment 400338 [details]
build.log
I think i found the right way to correctly reproduce error. Sorry for above long explanations. My initial conditions: 1. Sync portage emerge --sync or emerge-webrsync -k In my case this is Portage 2.2.14 (python 2.7.9-final-0, default/linux/amd64/13.0, gcc-4.8.3, glibc-2.20-r2, 3.14.36-gentoo x86_64) ================================================================= System uname: Linux-3.14.36-gentoo-x86_64-Intel-R-_Core-TM-_i5-3230M_CPU_@_2.60GHz-with-gentoo-2.2 KiB Mem: 5672912 total, 4290148 free KiB Swap: 6291452 total, 6291452 free Timestamp of tree: Mon, 30 Mar 2015 00:45:01 +0000 2. Fully update system. I use the following emerge --update --newuse --deep --complete-graph --with-bdeps=y --pretend @world 3. Install dev-db/oracle-instantclient-basic with abi_x86_32 use-flag. Do the following: 1. USE="abi_x86_32 oci" ebuild /usr/portage/dev-qt/qtsql/qtsql-4.8.6-r1.ebuild configure See an error: OCI auto-detection... () x86_64-pc-linux-gnu-g++ -c -pipe -march=corei7 -O2 -pipe -O2 -Wall -W -I../../../../qt-everywhere-opensource-src-4.8.6/mkspecs/linux-g++ -I../../../../qt-everywhere-opensource-src-4.8.6/config.tests/unix/oci -I/usr/lib64/oracle/11.2.0.4/client/rdbms/public -I../../../../qt-everywhere-opensource-src-4.8.6/config.tests/unix/oci -I. -o oci.o ../../../../qt-everywhere-opensource-src-4.8.6/config.tests/unix/oci/oci.cpp x86_64-pc-linux-gnu-g++ -Wl,-O1 -Wl,--as-needed -Wl,-O1 -o oci oci.o -L/usr/lib64/oracle/11.2.0.4/client/lib32 -lclntsh /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/../../../../x86_64-pc-linux-gnu/bin/ld: skipping incompatible /usr/lib64/oracle/11.2.0.4/client/lib32/libclntsh.so when searching for -lclntsh /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -lclntsh collect2: error: ld returned 1 exit status Makefile:98: recipe for target 'oci' failed gmake: *** [oci] Error 1 OCI disabled. Oracle (OCI) support cannot be enabled due to functionality tests! Turn on verbose messaging (-v) to /var/tmp/portage/dev-qt/qtsql-4.8.6-r1/work/qt-everywhere-opensource-src-4.8.6/configure to see the final report. If you believe this message is in error you may use the continue switch (-continue) to /var/tmp/portage/dev-qt/qtsql-4.8.6-r1/work/qt-everywhere-opensource-src-4.8.6/configure to continue. * ERROR: dev-qt/qtsql-4.8.6-r1::gentoo failed (configure phase): * configure failed * * Call stack: * ebuild.sh, line 93: Called src_configure * environment, line 3178: Called multilib-minimal_src_configure * environment, line 2042: Called multilib_foreach_abi 'multilib-minimal_abi_src_configure' * environment, line 2249: Called multibuild_foreach_variant '_multilib_multibuild_wrapper' 'multilib-minimal_abi_src_configure' * environment, line 1973: Called _multibuild_run '_multilib_multibuild_wrapper' 'multilib-minimal_abi_src_configure' * environment, line 1971: Called _multilib_multibuild_wrapper 'multilib-minimal_abi_src_configure' * environment, line 386: Called multilib-minimal_abi_src_configure * environment, line 2036: Called multilib_src_configure * environment, line 2469: Called qt4_multilib_src_configure * environment, line 2955: Called die * The specific snippet of code: * "${S}"/configure "${conf[@]}" || die "configure failed"; * * If you need support, post the output of `emerge --info '=dev-qt/qtsql-4.8.6-r1::gentoo'`, * the complete build log and the output of `emerge -pqv '=dev-qt/qtsql-4.8.6-r1::gentoo'`. * The complete build log is located at '/var/tmp/portage/dev-qt/qtsql-4.8.6-r1/temp/build.log'. * The ebuild environment file is located at '/var/tmp/portage/dev-qt/qtsql-4.8.6-r1/temp/environment'. * Working directory: '/var/tmp/portage/dev-qt/qtsql-4.8.6-r1/work/qt-everywhere-opensource-src-4.8.6-abi_x86_32.x86' * S: '/var/tmp/portage/dev-qt/qtsql-4.8.6-r1/work/qt-everywhere-opensource-src-4.8.6' 2. Go to the working directory cd /var/tmp/portage/dev-qt/qtsql-4.8.6-r1/work/qt-everywhere-opensource-src-4.8.6-abi_x86_32.x86 3. Go to the configure tests subdirectory cd ./config.tests/unix/oci/ 4. Check oci.o file # LANG= objdump -f oci.o oci.o: file format elf64-x86-64 architecture: i386:x86-64, flags 0x00000011: HAS_RELOC, HAS_SYMS start address 0x0000000000000000 5. See 64-bit object code, that can't be linked with 32-bit oci library. ----------- More over! We can enter into other test's directory (for example sse2) cd ../sse2 and also see 64-bit code during configure stage for 32-bit mode # LANG= objdump -f sse2.o sse2.o: file format elf64-x86-64 architecture: i386:x86-64, flags 0x00000011: HAS_RELOC, HAS_SYMS start address 0x0000000000000000 But this test doesn't requery external libs, so its testing will be Ok and QT-lib continues to build. ----------- More over 2! I check these steps with another qt library (qtgui). Configuring is finished and OK!!!, but the same results inside working directory. 64-bit code in testing subdirectories during configure 32-bit mode. But i think this is trivial tests that doesn't require external libs, so nobody catch this. Build.log is attached. Thanks! Yep, that's what I suspected. C(XX)FLAGS are not being passed to configure checks... I think the reason in wrong specification that used to generate Makefile for tests. I attach one. You may see this line in oci/Makefile # Command: /var/tmp/portage/dev-qt/qtgui-4.8.6-r2/work/qt-everywhere-opensource-src-4.8.6-abi_x86_32.x86/bin/qmake -spec ../../../../qt-everywhere-opensource-src-4.8.6/mkspecs/linux-g++ It uses spec linux-g++ that does not contain flags for 32-bit compilation. But it SHOULD (or MUST?! :) ) use linux-g++-32. Created attachment 400342 [details]
Makefile from working directory of dev-qt/qtsql
Ups... In my Comment #6 i submitted line from qtgui, not qtsql. Sorry. That's right line # Command: /var/tmp/portage/dev-qt/qtsql-4.8.6-r1/work/qt-everywhere-opensource-src-4.8.6-abi_x86_32.x86/bin/qmake -spec ../../../../qt-everywhere-opensource-src-4.8.6/mkspecs/linux-g++ (In reply to Davide Pesavento from comment #5) > Yep, that's what I suspected. C(XX)FLAGS are not being passed to configure > checks... Actually, no. The issue is caused by the sedding of the various config.tests that we do in qt4-build-multilib_src_prepare() I'm working on a fix https://gitweb.gentoo.org/proj/qt.git/commit/?id=5e16bcd72951e73dbb89fdaa9b0dee793acdc4e8 The above commit should fix this issue. Please test. Since it's a pretty important behavior change and touches a delicate part of the eclass, any kind of testing (even if you're not affected by this particular bug) is _highly_ appreciated. (In reply to Davide Pesavento from comment #11) > Since it's a pretty important behavior change and touches a delicate part of > the eclass, any kind of testing (even if you're not affected by this > particular bug) is _highly_ appreciated. I installed Qt4 from scratch (on a Qt5-only system) as well as konqueror-4.14.3. No problems here. In cvs. 09 May 2015; Davide Pesavento <pesa@gentoo.org> qt4-build-multilib.eclass: Update from qt overlay: overhaul toolchain and *FLAGS handling for proper multilib support during the configure phase. Fixes bug #545106. Tested on pure system (in VirtualBox) without any installed packages (except some base ones). There were no Qt and X. All builds with 32- and 64-bit ABIs were fine. Timestamp of repository gentoo: Mon, 11 May 2015 00:45:01 +0000 (In reply to George Tarasov from comment #14) > Tested on pure system (in VirtualBox) without any installed packages (except > some base ones). There were no Qt and X. All builds with 32- and 64-bit ABIs > were fine. > > Timestamp of repository gentoo: Mon, 11 May 2015 00:45:01 +0000 Thanks! This was with USE=oci8 enabled for qtsql, right? (In reply to Davide Pesavento from comment #15) > > Thanks! This was with USE=oci8 enabled for qtsql, right? Yes, sure! Great, thanks for testing. |