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 <arigo@tunes.org> wrote:
On Thu, Dec 17, 2015 at 3:33 PM, Oscar Benjamin <oscar.j.benjamin@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