Hi Armin, hi Oscar,

I think that the mystery lies in the packaging differences between Ubuntu 12.04 and Ubuntu 14.04 releases:

root@1204:/# readelf -d /usr/lib/libtk8.5.so.0  | grep tk
 0x000000000000000e (SONAME)             Library soname: [libtk8.5.so.0]

root@1404:/# readelf -d /usr/lib/x86_64-linux-gnu/libtk8.5.so | grep tk
 0x000000000000000e (SONAME)             Library soname: [libtk8.5.so]

On Ubuntu 12.04 they split libtk8.5.so.0 and libtk8.5.so, and the latter is only shipped in the tk8.5-dev package, whereas on Ubuntu 14.04 they ship libtk8.5.so.0 and libtk8.5.so together in libtk-8.5 package.

So, to run a binary compiled on Ubuntu 14.04 on Ubuntu 12.04, you do, indeed, need to install tk8.5-dev to get the libtk8.5.so symlink, that is, unfortunately, backwards compatibility hasn't been preserved in this case, which you have just witnessed... However, a binary compiled on Ubuntu 12.04 should still "just work" on Ubuntu 14.04 (at least in as far as TK is concerned).

The reasons why they changed the SONAME are not clear to me, but it might be that they decided to ditch the major number, because TK encodes it in the library name anyways, and left the symlink for forwards compatibility.

--
Sincerely yours,
Yury V. Zaytsev

On Thu, 17 Dec 2015, Oscar Benjamin wrote:

On 17 December 2015 at 15:00, Armin Rigo <ar...@tunes.org> wrote:
On Thu, Dec 17, 2015 at 3:33 PM, Oscar Benjamin
<oscar.j.benja...@gmail.com> wrote:
Maybe it's just missing the symlink from libtcl8.5.so ->
libtcl8.5.so.0. I'm not sure why it would be setup like that.

Yes.  I mostly gave up understanding the differences in binary
distributions in Linux.  It just turns out that on the particular
distribution where this pypy was built, it's called "libtcl8.5.so".
Maybe it is indeed just a symlink to "libtcl8.5.so.0", and so if we
put "libtcl8.5.so.0" in the "_tklib_cffi.so" then everybody would be
happy.  However I have no clue how to do that in the .so without tons
of non-portable tricks.  gcc is invoked with "-ltcl", and figures out
at compilation time that it means "link with libtcl8.5.so".

I just tested and re-downloading it works out of the box without any
need to recompile. Perhaps an easier solution is just to mention that
tk8.5-dev may be needed as a dependency for those binaries.

--
Oscar
_______________________________________________
pypy-dev mailing list
pypy-dev@python.org
https://mail.python.org/mailman/listinfo/pypy-dev

_______________________________________________
pypy-dev mailing list
pypy-dev@python.org
https://mail.python.org/mailman/listinfo/pypy-dev

Reply via email to