Summary: | Opera 7.2x ebuilds still depend on lesstif | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | Sven <sven.koehler> |
Component: | Current packages | Assignee: | Heinrich Wendel (RETIRED) <lanius> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | bartron, lisa |
Priority: | High | ||
Version: | unspecified | ||
Hardware: | x86 | ||
OS: | Linux | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- |
Description
Sven
2003-10-15 08:45:27 UTC
I'd consider this a bug in opera... In opera-7.21, `operamotifwrapper' still appears to be linked with a lesstif libXm.so.2 (which is *not* provided by any distribution I've checked -- although two comments in another bug claim it also to be working with openmotif-2.1...except for the size mismatch warning for one of the exported symbols at startup). The alternative, `operamotifwrapper-3', links to libXm.so.3 (openmotif-2.2), but is refered to as `operamotifwrapper.3' in the install script... even if the file is called openmotifwrapper.3 - Opera will not use it automatically and the install.sh doesn't check for libXm.so.3, it just copies the file. We have to copy the libXm.so.3 version of the wrapper over the libXm.so.2 version. No...it's the other way around. `install.sh' should check for `operamotifwrapper-3' and install it under that name. From looking at `libnpp.so' in a debugger, it tries to load the wrapper under these names in that order: operamotifwrapper operamotifwrapper-1 operamotifwrapper-2 operamotifwrapper-3 operamotifwrapper-4 and uses the first that loads successfully. It is reported to work when using the RH9 rpm (on RH9) with only libXm.so.2, libXm.so.3, or both installed. Only difference is in RH9 is, `operamotifwrapper' is installed as `operamotifwrapper-2'. i fixed the dep in the ebuild, if openmotif-2.2* is installed, it will install operamotifwrapper-3 @bartron: I renamed operamotifwrapper to operamotifwrapper-2 and it didn't help. Opera loads operamotifwrapper-2 and that fails. I can see the error on the console. @lanius: The new 7.21 ebuild still doesn't install operamotifwrapper-3 like it should (i saw the cp-command etc in the ebuild). Opera still fails loading libXm.so.2 emerge -s motif emerge -s lesstif lesstif is not install x11-libs/openmotif-2.2.2-r1 is installed. BTW: i read the ebuild-script and i know that it should detect that openmotif-2.2* is installed - but it doesn't work, i don't know why. a little syntax error, finally fixed :) [small addition to comment #3] Hm...seems I can't reproduce said RedHat behavior either, my mistake...should have checked it myself. What libnpp does is, it fork()'s, then the new process tries to exec() operamotifwrapper with the names mentioned above until execve() does not return. Of course, when it comes to loading shared libraries *inside* the child, it's already too late to do that... and I have *NO* idea how the observed behavior is supposed to work on RedHat. Although I kind of like this kind of flexibility. Just some thought...if `operamotifwrapper' is installed as `operamotifwrapper-2', `operamotifwrapper' could be a small script that that checks which `libXm' is available at the time it is invoked: ----begin operamotifwrapper---- #!/bin/bash if [ -f "/usr/lib/libXm.so.2" -o -f "/usr/X11R6/lib/libXm.so.2" ]; then exec $plugdir/operamotifwrapper-2 "$@" else exec $plugdir/operamotifwrapper-3 "$@" fi ----end operamotifwrapper---- Suggested patch to `opera-7.21.ebuild' # install correct motifwrapper - if has_version '=x11-libs/openmotif-2.2*'; then - rm ${D}/opt/opera/lib/opera/plugins/operamotifwrapper - cp ${S}/plugins/operamotifwrapper-3 ${D}/opt/opera/lib/opera/plugins - fi + mv "${D}/opt/opera/lib/opera/plugins/operamotifwrapper" \ + "${D}/opt/opera/lib/opera/plugins/operamotifwrapper-2" + cp "${S}/plugins/operamotifwrapper-3" \ + "${D}/opt/opera/lib/opera/plugins" + cat <<EOT >"${D}/opt/opera/lib/opera/plugins/operamotifwrapper" +#!/bin/bash +if [ -f "/usr/lib/libXm.so.2" -o -f "/usr/X11R6/lib/libXm.so.2" ]; then + exec \${0%/*}/operamotifwrapper-2 "\$@" +else + exec \${0%/*}/operamotifwrapper-3 "\$@" +fi +EOT + chmod +x "${D}/opt/opera/lib/opera/plugins/operamotifwrapper" + |