Re: Installation layout of the PyPy 3.8 Fedora package

Matti Picus <[email protected]> Sat, 4 Dec 2021 20:18:03 +0200
Newsgroups gmane.comp.python.pypy
Message-ID <[email protected]>
On 2/12/21 8:45 pm, Miro Hrončok wrote:

> Hello PyPy folks,
>
> I co-maintain the PyPy and CPython interpreter packages in Fedora


Thanks for supporting PyPy


> We basically took the advice from 
> https://doc.pypy.org/en/latest/build.html
>

That documentation may now need some updating.

> Several different versions of pypy (e.g. 3.6 and 3.7) could be 
> installed alongside each other, as long as only one of them "owned" 
> /usr/bin/pypy3.
>
>
> This e.g. means that the standard library is installed in:
>
>  /usr/lib64/pypy3.8/lib/pypy3.8/
>
> Or the header files are in:
>
>  /usr/lib64/pypy3.8/include/pypy3.8/
>
> Double namespacing like this seems a bit overengineered, and since the 
> idea was to resemble CPython, I was aiming at this setup:
> ...


It seems reasonable that PyPy should follow CPython's lead in layout.

> Which would be the exact copy of our CPython setup | sed s/python/pypy/
>
Indeed, that is the goal.


> However, I found 4 problems:
>
> 1) The PyPy install scheme only has "lib", not "lib64"
>
> I think we could sort this by a tiny patch that we used to carry in 
> CPython 3.8 before configurable platlibdir was introduced in 3.9.
>
If it is part of CPython 3.9, it should be part of PyPy 3.9 as well. Can 
you check that the latest nightly at 
https://buildbot.pypy.org/nightly/py3.9/ indeed no longer needs that change?

>
> 2) The /usr/include/PyPy.h file is *not* namespaced with PyPy Python 
> version
>
> I don't know if we even need to ship this file. It seems deprecated. 
> Maybe it can be in /usr/include/pypy3.8/PyPy.h?
>
I was confused by this as well. As Armin pointed out, it was part of the 
older cffi embedding code, and I think it can be dropped. See 
https://foss.heptapod.net/pypy/pypy/-/issues/3608
>
> 3) /usr/bin/pypy3.8 is a symbolic link to /usr/bin/pypy3
>
> I would expect it to be the other way around


This makes sense. For testing, we need pypy3, but can create it as a 
symlink already as part of the build.

>
> 4) The /usr/bin/libpypy3-c.so file is *not* namespaced and seems 
> misplaced
>
> This is the one thing I cannot wrap my head around. I do not wish to 
> install this file "globally" to /usr/bin


This also makes sense and some ideas were floated in other responses to 
this thread. It would be best if someone with a plan could open an issue 
for discussion, and even better a PR.

>
> So, I am asking on this list: How should we package PyPy 3.8 for 
> Fedora? Do we need to install it to /usr/lib64/pypy3.8/ prefix even 
> thou most (but not all) of the directories within would contain a 
> "pypy3.8" subdirectory? Or is there a better option I do not yet see?
>
While it is too late for pypy3.8, now is the time to tweak pypy3.9. I am 
not sure what support you expect from PyPy to recreate the same layout 
as the one used in CPython. Are there patches we can upstream?


There are other repackagers: debian, BSD, and conda-forge, so any 
changes would need to be done with an eye toward not breaking their 
workflow as well.


Matti

_______________________________________________
pypy-dev mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-dev