python34: check LD_LIBRARY_PATH
Backports support for LD_LIBRARY_PATH from 3.6
This commit is contained in:
parent
693de5b8c6
commit
03898f2f23
@ -66,6 +66,7 @@ in stdenv.mkDerivation {
|
|||||||
|
|
||||||
patches = [
|
patches = [
|
||||||
./no-ldconfig.patch
|
./no-ldconfig.patch
|
||||||
|
./ld_library_path.patch
|
||||||
];
|
];
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
|
@ -0,0 +1,51 @@
|
|||||||
|
From 85991e0d7f0e631240f3f6233bd65d1128a66dec Mon Sep 17 00:00:00 2001
|
||||||
|
From: Frederik Rietdijk <fridh@fridh.nl>
|
||||||
|
Date: Thu, 14 Sep 2017 10:00:31 +0200
|
||||||
|
Subject: [PATCH] ctypes.util: support LD_LIBRARY_PATH
|
||||||
|
|
||||||
|
Backports support for LD_LIBRARY_PATH from 3.6
|
||||||
|
---
|
||||||
|
Lib/ctypes/util.py | 26 +++++++++++++++++++++++++-
|
||||||
|
1 file changed, 25 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/Lib/ctypes/util.py b/Lib/ctypes/util.py
|
||||||
|
index 780cd5d21b..d7ac15070f 100644
|
||||||
|
--- a/Lib/ctypes/util.py
|
||||||
|
+++ b/Lib/ctypes/util.py
|
||||||
|
@@ -181,8 +181,32 @@ elif os.name == "posix":
|
||||||
|
def _findSoname_ldconfig(name):
|
||||||
|
return None
|
||||||
|
|
||||||
|
+ def _findLib_ld(name):
|
||||||
|
+ # See issue #9998 for why this is needed
|
||||||
|
+ expr = r'[^\(\)\s]*lib%s\.[^\(\)\s]*' % re.escape(name)
|
||||||
|
+ cmd = ['ld', '-t']
|
||||||
|
+ libpath = os.environ.get('LD_LIBRARY_PATH')
|
||||||
|
+ if libpath:
|
||||||
|
+ for d in libpath.split(':'):
|
||||||
|
+ cmd.extend(['-L', d])
|
||||||
|
+ cmd.extend(['-o', os.devnull, '-l%s' % name])
|
||||||
|
+ result = None
|
||||||
|
+ try:
|
||||||
|
+ p = subprocess.Popen(cmd, stdout=subprocess.PIPE,
|
||||||
|
+ stderr=subprocess.PIPE,
|
||||||
|
+ universal_newlines=True)
|
||||||
|
+ out, _ = p.communicate()
|
||||||
|
+ res = re.search(expr, os.fsdecode(out))
|
||||||
|
+ if res:
|
||||||
|
+ result = res.group(0)
|
||||||
|
+ except Exception as e:
|
||||||
|
+ pass # result will be None
|
||||||
|
+ return result
|
||||||
|
+
|
||||||
|
def find_library(name):
|
||||||
|
- return _findSoname_ldconfig(name) or _get_soname(_findLib_gcc(name))
|
||||||
|
+ # See issue #9998
|
||||||
|
+ return _findSoname_ldconfig(name) or \
|
||||||
|
+ _get_soname(_findLib_gcc(name) or _findLib_ld(name))
|
||||||
|
|
||||||
|
################################################################
|
||||||
|
# test code
|
||||||
|
--
|
||||||
|
2.14.1
|
||||||
|
|
Loading…
Reference in New Issue
Block a user