Summary: | app-emulation/emul-linux-x86-*: SYMLINK_LIB=no LIBDIR_x86=lib results in broken pkgconfig files | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | Alexander Tsoy <alexander> |
Component: | Eclasses | Assignee: | Multilib team <multilib+disabled> |
Status: | RESOLVED OBSOLETE | ||
Severity: | normal | CC: | floppym |
Priority: | Normal | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Bug Depends on: | |||
Bug Blocks: | 506276 | ||
Attachments: |
wine-x86-config.log
emul-linux-x86.eclass.patch |
I have this hack in /etc/portage/bashrc. ^_^ post_src_install() { if [[ ${CATEGORY}/${PN} == app-emulation/emul-linux-x86-* ]]; then grep -RlZ --include="*.la" --include="*.pc" lib32 "${D}" | xargs -0 sed -i -e "s:lib32:lib:g" fi } Created attachment 375898 [details, diff]
emul-linux-x86.eclass.patch
Seems this does not worth the effort. There are a lot of other things that should be fixed to make emul-linux-x86-* packages usable. :( Some examples: - RPATHs and RUNPATHS points to */lib32/*. This leads to runtime failures. For example I was able to run skype only after fixing RPATH in libpulse.so. $ LANG=C readelf -d /usr/lib/libpulse.so.0 | grep PATH 0x0000000f (RPATH) Library rpath: [/usr/lib32/pulseaudio] 0x0000001d (RUNPATH) Library runpath: [/usr/lib32/pulseaudio] - eclass actually does not fix ldscripts. :) While the following condition is true when executed from interactive shell, it is false when executed from ebuild: if ldscripts=( $(grep -ls '^GROUP.*/lib32/' *.so) ) ; then As a result, sed command does not get executed. The following patch fixes the issue: @@ -67,7 +67,8 @@ # Fix linker script paths. local ldscripts - if ldscripts=( $(grep -ls '^GROUP.*/lib32/' *.so) ) ; then + ldscripts=( $(grep -ls '^GROUP.*/lib32/' *.so) ) + if (( "${#ldscripts[@]}" )) ; then sed -i \ -e "s:/lib32/:/${x86_libdir}/:" \ "${ldscripts[@]}" || die Comment on attachment 375898 [details, diff]
emul-linux-x86.eclass.patch
one line fix:
find pkgconfig/ -type f -exec \
sed -i -r -e s:/lib32($|[[:space:]]|/):/${x86_libdir}\1:g" {} +
(In reply to Alexander Tsoy from comment #3) yes, the SYMLINK_LIB migration logic was a "best effort". adding .pc and ldscript munging seems pretty easy, so let's do that. i wouldn't worry about the rpath stuff as emul-* packages are getting killed in favor of ABI_X86. The emul-linux-x86 packages have been removed. |
Created attachment 375896 [details] wine-x86-config.log emul-linux-x86.eclass is already doing some dangerous things like renaming lib32 dirs and fixing ldscripts. May be it could also fix pkgconfig files? :) Currently wine fails to configure for x86 on my system.