Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 599684 - dev-util/cmake: find_library() lib32 logic doesn't work when Gentoo looks like Debian
Summary: dev-util/cmake: find_library() lib32 logic doesn't work when Gentoo looks lik...
Status: RESOLVED NEEDINFO
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal
Assignee: Gentoo KDE team
URL:
Whiteboard:
Keywords: PullRequest
Depends on:
Blocks: 596020
  Show dependency tree
 
Reported: 2016-11-13 21:47 UTC by Sebastian Pipping
Modified: 2025-01-28 08:06 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
compressed build log (sys-devel:llvm-3.9.0-r1:20161113-141526.log.xz,44.54 KB, application/x-xz)
2016-11-13 21:47 UTC, Sebastian Pipping
Details
x86_32.x86/CMakeFiles/CMakeError.log.xz (CMakeError.log.xz,3.30 KB, application/x-xz)
2016-11-14 21:08 UTC, Sebastian Pipping
Details
x86_32.x86/CMakeFiles/CMakeOutput.log.xz (CMakeOutput.log.xz,6.66 KB, application/x-xz)
2016-11-14 21:08 UTC, Sebastian Pipping
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Sebastian Pipping gentoo-dev 2016-11-13 21:47:59 UTC
Created attachment 453256 [details]
compressed build log

Hi!


My interpretation of the build log is that 64bit /usr/lib/libffi.so is used when linking a 32bit library:

# file -L /usr/lib/libffi.so
/usr/lib/libffi.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, stripped

Please see the log for details.

Best



Sebastian
Comment 1 Michał Górny archtester Gentoo Infrastructure gentoo-dev Security 2016-11-13 21:54:45 UTC
What is your CMake version?
Comment 2 Sebastian Pipping gentoo-dev 2016-11-13 22:06:00 UTC
(In reply to Michał Górny from comment #1)
> What is your CMake version?

3.6.3
Comment 3 Michał Górny archtester Gentoo Infrastructure gentoo-dev Security 2016-11-13 22:20:45 UTC
That's weird. It seems that this CMake version has the lib32 patch. Are you sure you're not using a custom ebuild or sth?
Comment 4 Sebastian Pipping gentoo-dev 2016-11-13 22:58:36 UTC
(In reply to Michał Górny from comment #3)
> That's weird. It seems that this CMake version has the lib32 patch. Are you
> sure you're not using a custom ebuild or sth?

Yes:


>>> Emerging (66 of 92) sys-devel/llvm-3.9.0-r1::gentoo
>>> Failed to emerge sys-devel/llvm-3.9.0-r1, Log file:
>>>  '/var/log/portage/logdir/sys-devel:llvm-3.9.0-r1:20161113-141526.log'
>>> Jobs: 65 of 92 complete, 1 failed               Load avg: 7.16, 9.06, 9.95
*** Resuming merge...
Comment 5 Michał Górny archtester Gentoo Infrastructure gentoo-dev Security 2016-11-14 08:07:22 UTC
(In reply to Sebastian Pipping from comment #4)
> (In reply to Michał Górny from comment #3)
> > That's weird. It seems that this CMake version has the lib32 patch. Are you
> > sure you're not using a custom ebuild or sth?
> 
> Yes:
> 
> 
> >>> Emerging (66 of 92) sys-devel/llvm-3.9.0-r1::gentoo
> >>> Failed to emerge sys-devel/llvm-3.9.0-r1, Log file:
> >>>  '/var/log/portage/logdir/sys-devel:llvm-3.9.0-r1:20161113-141526.log'
> >>> Jobs: 65 of 92 complete, 1 failed               Load avg: 7.16, 9.06, 9.95
> *** Resuming merge...

I was actually asking about CMake. But I guess we'll need to dig into that deeper.

Could you start a new build, let it go past src_configure() and paste the 32-bit CMakeFiles/CMake{Output,Error}.*?
Comment 6 Sebastian Pipping gentoo-dev 2016-11-14 21:08:09 UTC
Created attachment 453332 [details]
x86_32.x86/CMakeFiles/CMakeError.log.xz
Comment 7 Sebastian Pipping gentoo-dev 2016-11-14 21:08:35 UTC
Created attachment 453334 [details]
x86_32.x86/CMakeFiles/CMakeOutput.log.xz
Comment 8 Michał Górny archtester Gentoo Infrastructure gentoo-dev Security 2016-11-14 21:46:43 UTC
I'm sorry but I really see nothing obviously wrong here. It's clearly CMake's find_library() finding the wrong library.

Looking at the patch... do you happen to have /etc/debian_version in your system?
Comment 9 Sebastian Pipping gentoo-dev 2016-11-14 21:49:10 UTC
(In reply to Michał Górny from comment #8)
> Looking at the patch... do you happen to have /etc/debian_version in your
> system?

Actually yes.  It's needed for www-client/chromium-bin-debian.
Comment 10 Michał Górny archtester Gentoo Infrastructure gentoo-dev Security 2016-11-14 21:57:38 UTC
(In reply to Sebastian Pipping from comment #9)
> (In reply to Michał Górny from comment #8)
> > Looking at the patch... do you happen to have /etc/debian_version in your
> > system?
> 
> Actually yes.  It's needed for www-client/chromium-bin-debian.

Errr... then I'm afraid I can't help you. This file makes CMake believe it's running on Debian and lib32 isn't used on Debian.

Reassigning to CMake maintainers, in case they want to improve the find_library() logic. This probably also breaks Gentoo Prefix on Debian. Can't promise you they'll do anything about it though.

Your other option is to switch to the lib/lib64 layout (also called SYMLINK_LIB=no).
Comment 11 Michał Górny archtester Gentoo Infrastructure gentoo-dev Security 2016-11-14 22:00:18 UTC
(In reply to Michał Górny from comment #10)
> Your other option is to switch to the lib/lib64 layout (also called
> SYMLINK_LIB=no).

Hmm, I actually may be wrong here. I suspect CMake may ignore lib64 as well when it's running Debian. Feel like multiarch? ;-)
Comment 12 Sebastian Pipping gentoo-dev 2016-11-14 23:10:11 UTC
I found a way to patch use of /etc/debian_version out of www-client/chromium-bin-debian::betagarden now.
Comment 13 Michael Palimaka (kensington) gentoo-dev 2017-06-24 14:56:28 UTC
From Modules/Platform/Linux.cmake:
# Debian has lib32 and lib64 paths only for compatibility so they should not be
# searched.
if(NOT CMAKE_CROSSCOMPILING AND EXISTS "/etc/debian_version")
  set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB32_PATHS FALSE)
  set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS FALSE)
endif()

It would be possible to fix this by patching in a conditional on CMAKE_GENTOO_BUILD, or reverting the property in our build rules file.

However, there's a few other place this check is used so I wonder if it will be worth the effort to maintain the patches or if it's better to just declare this configuration unsupported.
Comment 14 Michael Palimaka (kensington) gentoo-dev 2019-04-25 10:20:57 UTC
I haven't heard anything else here for a long time, so feel free to reopen if some action does need to be taken.
Comment 15 Larry the Git Cow gentoo-dev 2024-12-14 17:34:00 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2b03957f90dc4c5ae3df044aaacbe95143b4591d

commit 2b03957f90dc4c5ae3df044aaacbe95143b4591d
Author:     Sam James <sam@gentoo.org>
AuthorDate: 2024-12-14 17:32:36 +0000
Commit:     Sam James <sam@gentoo.org>
CommitDate: 2024-12-14 17:33:41 +0000

    dev-build/cmake: add warning on bad /etc/*-release files
    
    Prompted by (yet another) post on this, see https://forums.gentoo.org/viewtopic-t-1170229.html.
    
    Bug: https://bugs.gentoo.org/599684
    Bug: https://bugs.gentoo.org/753581
    Signed-off-by: Sam James <sam@gentoo.org>

 dev-build/cmake/cmake-3.31.2.ebuild | 11 +++++++++++
 dev-build/cmake/cmake-9999.ebuild   | 11 +++++++++++
 2 files changed, 22 insertions(+)
Comment 16 Larry the Git Cow gentoo-dev 2024-12-18 22:38:31 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b1361b7f66765faa4162b2083a34ac80dc1381de

commit b1361b7f66765faa4162b2083a34ac80dc1381de
Author:     Allen-Kristjan Päll <akpall@fst.ee>
AuthorDate: 2024-12-18 20:03:15 +0000
Commit:     Sam James <sam@gentoo.org>
CommitDate: 2024-12-18 22:38:03 +0000

    dev-build/cmake: update 3.31.2
    
    Improved errant files check and moved it to pkg_pretend
    
    Bug: https://bugs.gentoo.org/599684
    Bug: https://bugs.gentoo.org/753581
    
    Signed-off-by: Allen-Kristjan Päll <akpall@fst.ee>
    Signed-off-by: Sam James <sam@gentoo.org>

 dev-build/cmake/cmake-3.31.2.ebuild | 38 ++++++++++++++++++++++++++-----------
 1 file changed, 27 insertions(+), 11 deletions(-)