[pypy-dev] Current status of GUI support in PyPy

Yury V. Zaytsev yury at shurup.com
Thu Dec 17 12:33:19 EST 2015


Hi Armin, hi Oscar,

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

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

root at 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 at tunes.org> wrote:
>> On Thu, Dec 17, 2015 at 3:33 PM, Oscar Benjamin
>> <oscar.j.benjamin at 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 at python.org
> https://mail.python.org/mailman/listinfo/pypy-dev
>


More information about the pypy-dev mailing list