[Python-modules-commits] r27045 - in packages/pyzmq/trunk/debian (4 files)

jtaylor-guest at users.alioth.debian.org jtaylor-guest at users.alioth.debian.org
Sat Jan 4 16:27:04 UTC 2014


    Date: Saturday, January 4, 2014 @ 16:27:03
  Author: jtaylor-guest
Revision: 27045

build shared cffi pypy libraries and patch module loading to find it

Added:
  packages/pyzmq/trunk/debian/patches/cffi-fix.patch
Modified:
  packages/pyzmq/trunk/debian/control
  packages/pyzmq/trunk/debian/patches/series
  packages/pyzmq/trunk/debian/rules

Modified: packages/pyzmq/trunk/debian/control
===================================================================
--- packages/pyzmq/trunk/debian/control	2014-01-04 16:26:59 UTC (rev 27044)
+++ packages/pyzmq/trunk/debian/control	2014-01-04 16:27:03 UTC (rev 27045)
@@ -111,7 +111,7 @@
 
 Package: pypy-zmq
 Architecture: any
-Depends: libzmq3-dev, pypy (>= 2.0.0), ${misc:Depends}, ${shlibs:Depends}
+Depends: gcc, libzmq3-dev, pypy (>= 2.0.0), ${misc:Depends}, ${shlibs:Depends}
 Description: PyPy bindings for 0MQ library
  Python bindings for 0MQ. 0MQ is a small, fast, and free
  software library that gives you message-passing concurrency

Added: packages/pyzmq/trunk/debian/patches/cffi-fix.patch
===================================================================
--- packages/pyzmq/trunk/debian/patches/cffi-fix.patch	                        (rev 0)
+++ packages/pyzmq/trunk/debian/patches/cffi-fix.patch	2014-01-04 16:27:03 UTC (rev 27045)
@@ -0,0 +1,49 @@
+Description: check package root for cffi binaries
+ cffi checks __pycache__ for binaries which is cleaned by pypy installation so
+ packages can't ship in there.
+ Instead ship in package root and patch module finding to look in there.
+Bug: https://bitbucket.org/cffi/cffi/issue/109/enable-sane-packaging-for-cffi
+
+--- a/zmq/cffi_core/__init__.py
++++ b/zmq/cffi_core/__init__.py
+@@ -9,6 +9,40 @@
+ #  the file COPYING.BSD, distributed as part of this software.
+ #-----------------------------------------------------------------------------
+ 
++import imp
++import os.path
++import sys
++
++import cffi.vengine_cpy
++import cffi.vengine_gen
++ma_triplet = None
++
++def vengine_gen_find_module(self, module_name, path, so_suffixes):
++    global ma_triplet
++    if ma_triplet is None:
++        try:
++            import subprocess as sp
++            p = sp.Popen(["gcc", "-print-multiarch"], stdout=sp.PIPE)
++            ma_triplet = str(p.communicate()[0].decode().strip())
++        except:
++            import warnings
++            warnings.warn('failed to detect multiarch paths, please install gcc')
++
++    for so_suffix in so_suffixes + ['.%s-%s.so' % (imp.get_tag(), ma_triplet)]:
++        basename = module_name + so_suffix
++        if path is None:
++            path = sys.path
++            # import from non root package would try __pycache__ which is
++            # cleaned by pypy installation
++            path.insert(0, "/usr/lib/pypy/dist-packages/zmq/cffi_core")
++        for dirname in path:
++            filename = os.path.join(dirname, basename)
++            if os.path.isfile(filename):
++                return filename
++
++
++cffi.vengine_gen.VGenericEngine.find_module = vengine_gen_find_module
++
+ from zmq.cffi_core import (constants, error, message, context, socket,
+                            _poll, devices, stopwatch)
+ 

Modified: packages/pyzmq/trunk/debian/patches/series
===================================================================
--- packages/pyzmq/trunk/debian/patches/series	2014-01-04 16:26:59 UTC (rev 27044)
+++ packages/pyzmq/trunk/debian/patches/series	2014-01-04 16:27:03 UTC (rev 27045)
@@ -1,3 +1,4 @@
 workaround-gevent.patch
 noncopysend-test.patch
 clean-all.patch
+cffi-fix.patch

Modified: packages/pyzmq/trunk/debian/rules
===================================================================
--- packages/pyzmq/trunk/debian/rules	2014-01-04 16:26:59 UTC (rev 27044)
+++ packages/pyzmq/trunk/debian/rules	2014-01-04 16:27:03 UTC (rev 27045)
@@ -25,5 +25,9 @@
 	rm -rf debian/python3-zmq/usr/lib/python*/dist-packages/zmq/cffi_core/
 	rm -rf debian/python3-dbg-zmq/usr/lib/python*/dist-packages/zmq/cffi_core/
 	# cython core is only used for cpython
-	rm -rf debian/pypy-zmq/usr/lib/python*/dist-packages/zmq/core/
+	rm -rf debian/pypy-zmq/usr/lib/pypy/dist-packages/zmq/core/
 
+	# build shared libraries for pypy and install them
+	pypy -c 'import zmq'
+	mv -v zmq/cffi_core/__pycache__/*.c zmq/cffi_core/__pycache__/*so \
+	  $(CURDIR)/debian/pypy-zmq/usr/lib/pypy/dist-packages/zmq/cffi_core/




More information about the Python-modules-commits mailing list