summaryrefslogtreecommitdiffstats
path: root/api/examples/gfapi.py
diff options
context:
space:
mode:
authorNiels de Vos <ndevos@redhat.com>2013-09-30 09:05:14 +0200
committerVijay Bellur <vbellur@redhat.com>2013-12-24 04:12:23 -0800
commitb2ee85b3e452678c330c25bf32c522090bb320fc (patch)
treeedcccb745bc4b10127eb29e1e9395a2c3cfac651 /api/examples/gfapi.py
parent828a6eea202e9195f323a7c4b4656c73ecb34256 (diff)
gfapi.py: support dynamic loading of versioned librariesv3.4.2qa5
Currently gfapi.py only loads libraries by filename ending in ".so". On an installed system without development packages, the <lib>.so filenames are not available. ctypes.util.find_library() can be used to detect the files dynamically. In addition to this, also fixing some minor indention errors and package the library into the Python site-packages path. Python applications and libraries can now access libgfapi through 'from glusterfs import gfapi'. Change and review in the master branch: > Change-Id: I71e38dabd3ade5dcf24813bf2fc25cda91b571c6 > Signed-off-by: Niels de Vos <ndevos@redhat.com> > Reviewed-on: http://review.gluster.org/5835 > Reviewed-by: Kaleb KEITHLEY <kkeithle@redhat.com> BUG: 1005146 Change-Id: Id7665fe5140111be7bf2038454fb775c70b15993 Signed-off-by: Niels de Vos <ndevos@redhat.com> Reviewed-on: http://review.gluster.org/6581 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Diffstat (limited to 'api/examples/gfapi.py')
-rwxr-xr-xapi/examples/gfapi.py8
1 files changed, 5 insertions, 3 deletions
diff --git a/api/examples/gfapi.py b/api/examples/gfapi.py
index 7d7a5bab12d..f89996d9a10 100755
--- a/api/examples/gfapi.py
+++ b/api/examples/gfapi.py
@@ -1,6 +1,7 @@
#!/usr/bin/python
from ctypes import *
+from ctypes.util import find_library
import os
import sys
import time
@@ -8,9 +9,9 @@ import types
# Looks like ctypes is having trouble with dependencies, so just force them to
# load with RTLD_GLOBAL until I figure that out.
-glfs = CDLL("libglusterfs.so",RTLD_GLOBAL)
-xdr = CDLL("libgfxdr.so",RTLD_GLOBAL)
-api = CDLL("libgfapi.so",RTLD_GLOBAL)
+glfs = CDLL(find_library("glusterfs"),RTLD_GLOBAL)
+xdr = CDLL(find_library("gfxdr"),RTLD_GLOBAL)
+api = CDLL(find_library("gfapi"),RTLD_GLOBAL)
# 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
@@ -98,6 +99,7 @@ class File(object):
def write (self, data, flags=0):
return api.glfs_write(self.fd,data,len(data),flags)
+
class Dir(object):
def __init__ (self, fd):