From Fedora Project Wiki
mNo edit summary
 
Line 8: Line 8:
*** TODO: add patch to our rpms
*** TODO: add patch to our rpms
*** TODO: send patch upstream
*** TODO: send patch upstream
** rpm: I used rawhide (=f18)'s rpm.rpm, recompiling with pypy as per my python3 patch in https://bugzilla.redhat.com/show_bug.cgi?id=531543
** ''rpm'': I used rawhide (=f18)'s rpm.rpm, recompiling with pypy as per my python3 patch in https://bugzilla.redhat.com/show_bug.cgi?id=531543
*** needed <code>PyInt_AsUnsignedLongLongMask</code>; merged upstream as https://bugs.pypy.org/issue1211, and in my pypy rpms from 1.9-3 onwards
*** needed <code>PyInt_AsUnsignedLongLongMask</code>; merged upstream as https://bugs.pypy.org/issue1211, and in my pypy rpms from 1.9-3 onwards
** yum-metadata-parser (compiled OK)
** ''yum-metadata-parser'' (compiled OK)
** pycurl (compiled OK)
** ''pycurl'' (compiled OK)
* I hacked out a call to <code>os.statvfs</code> from yum/yumRepo.py:_getFile (line 795)
* I hacked out a call to <code>os.statvfs</code> from yum/yumRepo.py:_getFile (line 795)
** TODO: implement it for PyPy
** TODO: implement it for PyPy

Latest revision as of 16:20, 13 July 2012

I've been experimenting with running yum under PyPy.

This is with pypy-1.9 rpms on an x86_64 Fedora 17 guest

What I had to do

  • build extension modules:
    • bug in distutils/sysconfig_pypy.py with more than one option in CFLAGS (need to split on spaces)
      • TODO: add patch to our rpms
      • TODO: send patch upstream
    • rpm: I used rawhide (=f18)'s rpm.rpm, recompiling with pypy as per my python3 patch in https://bugzilla.redhat.com/show_bug.cgi?id=531543
    • yum-metadata-parser (compiled OK)
    • pycurl (compiled OK)
  • I hacked out a call to os.statvfs from yum/yumRepo.py:_getFile (line 795)
    • TODO: implement it for PyPy

Running it

 sudo pypy /usr/bin/yum YUM-ARGUMENTS

with suitable PYTHONPATH= and LD_LIBRARY_PATH= hacks to deal with my hacked up installation of extension modules

What I've tested so far:

  • yum history (looks sane)
  • yum --assume-no update PACKAGE (looks sane)
  • yum --assume-no remove glibc (looks sane; same output as with CPython, apart from this:
  --- yum-remove-glibc-cpython.out        2012-07-11 11:09:24.641179900 -0400
  +++ yum-remove-glibc-pypy.out   2012-07-11 11:08:37.211797078 -0400
  @@ -1,4 +1,5 @@
  -Loaded plugins: auto-update-debuginfo, langpacks, presto, refresh-packagekit
  +Plugin "refresh-packagekit" can't be imported
  +Loaded plugins: auto-update-debuginfo, langpacks, presto
   Setting up Remove Process
   Resolving Dependencies
   --> Running transaction check

Other Notes