diff options
author | Prashanth Pai <ppai@redhat.com> | 2015-07-13 12:03:25 +0530 |
---|---|---|
committer | Prashanth Pai <ppai@redhat.com> | 2015-07-13 18:34:44 +0530 |
commit | c9fedc64081e1504a1bbf88be5a5dcfb9fff3652 (patch) | |
tree | 2d056d15e8ae761311f5baefca7350452aa5ee22 | |
parent | 1ec40d0753e7d5185a7fc810df33370330fc6f90 (diff) |
Backport ctypes.c_ssize_t support to py26
ctypes.c_ssize_t was introduced in Python 2.7
This made libgfapi-python bindings unusable in RHEL 6 which
only contains Python 2.6
Change-Id: I401697004d7eecb110b8c92a3ddd27397e3d8785
Signed-off-by: Prashanth Pai <ppai@redhat.com>
-rwxr-xr-x | gluster/api.py | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/gluster/api.py b/gluster/api.py index 62135c5..d2a0840 100755 --- a/gluster/api.py +++ b/gluster/api.py @@ -11,6 +11,7 @@ import ctypes from ctypes.util import find_library +from ctypes import sizeof # LD_LIBRARY_PATH is not looked up by ctypes.util.find_library() @@ -41,6 +42,18 @@ except OSError: raise ImportError("ctypes.CDLL() cannot load {0}. You might want to set " "LD_LIBRARY_PATH env variable".format(so_file_name)) +# c_ssize_t was only added in py27. Manually backporting it here for py26 +try: + import ctypes.c_ssize_t +except ImportError: + if sizeof(ctypes.c_uint) == sizeof(ctypes.c_void_p): + setattr(ctypes, 'c_ssize_t', ctypes.c_int) + elif sizeof(ctypes.c_ulong) == sizeof(ctypes.c_void_p): + setattr(ctypes, 'c_ssize_t', ctypes.c_long) + elif sizeof(ctypes.c_ulonglong) == sizeof(ctypes.c_void_p): + setattr(ctypes, 'c_ssize_t', ctypes.c_longlong) + + # Wow, the Linux kernel folks really play nasty games with this structure. If # you look at the man page for stat(2) and then at this definition you'll note # two discrepancies. First, we seem to have st_nlink and st_mode reversed. In |