[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