20381830 ctypes module unable to obtain default library path
authorJohn Beck <John.Beck@Oracle.COM>
Wed, 21 Jan 2015 17:55:00 -0800
changeset 3671 91f76aae1155
parent 3669 91c379bcac7e
child 3673 48820ccccb98
20381830 ctypes module unable to obtain default library path
components/python/python26/patches/Python26-14-ctypes-util-find-library.patch
components/python/python27/patches/22-default-lib-path.patch
components/python/python34/patches/21-default-lib-path.patch
doc/makefile-variables.txt
tools/.gnupg/pubring.gpg
--- a/components/python/python26/patches/Python26-14-ctypes-util-find-library.patch	Thu Jan 22 11:26:32 2015 -0800
+++ b/components/python/python26/patches/Python26-14-ctypes-util-find-library.patch	Wed Jan 21 17:55:00 2015 -0800
@@ -1,28 +1,19 @@
-diff --git Python-2.6.4/Lib/ctypes/util.py Python-2.6.4/Lib/ctypes/util.py
---- Python-2.6.4/Lib/ctypes/util.py
-+++ Python-2.6.4/Lib/ctypes/util.py
[email protected]@ -164,6 +164,35 @@
+This patch was developed in-house, but not contributed upstream because
+Python 2.6 has been abandoned by the community.
+
+--- Python-2.6.8/Lib/ctypes/util.py.~1~	2012-04-10 08:32:04.000000000 -0700
++++ Python-2.6.8/Lib/ctypes/util.py	2015-01-20 15:17:51.156728249 -0800
[email protected]@ -164,6 +164,24 @@
              res.sort(cmp= lambda x,y: cmp(_num_version(x), _num_version(y)))
              return res[-1]
  
 +    elif sys.platform == "sunos5":
 +
-+        def _findLib_crle(name, is64):
-+            if not os.path.exists('/usr/bin/crle'):
-+                return None
-+
++        def _findLib_path(name, is64):
 +            if is64:
-+                cmd = 'env LC_ALL=C /usr/bin/crle -64 2>/dev/null'
++                paths = "/lib/64:/usr/lib/64"
 +            else:
-+                cmd = 'env LC_ALL=C /usr/bin/crle 2>/dev/null'
-+
-+            for line in os.popen(cmd).readlines():
-+                line = line.strip()
-+                if (line.startswith('Default Library Path (ELF):')):
-+                    paths = line.split()[4]
-+
-+            if not paths:
-+                return None
++                paths = "/lib:/usr/lib"
 +
 +            for dir in paths.split(":"):
 +                libfile = os.path.join(dir, "lib%s.so" % name)
@@ -32,7 +23,7 @@
 +            return None
 +        
 +        def find_library(name, is64 = False):
-+            return _get_soname(_findLib_crle(name, is64) or _findLib_gcc(name))
++            return _get_soname(_findLib_path(name, is64) or _findLib_gcc(name))
 +
      else:
  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/python27/patches/22-default-lib-path.patch	Wed Jan 21 17:55:00 2015 -0800
@@ -0,0 +1,40 @@
+This patch was developed in-house.  It has been submitted upstream:
+http://bugs.python.org/issue23287
+
+--- Python-2.7.9/Lib/ctypes/util.py.~1~	2014-12-10 07:59:34.000000000 -0800
++++ Python-2.7.9/Lib/ctypes/util.py	2015-01-20 15:22:03.139588641 -0800
[email protected]@ -182,22 +182,11 @@
+ 
+     elif sys.platform == "sunos5":
+ 
+-        def _findLib_crle(name, is64):
+-            if not os.path.exists('/usr/bin/crle'):
+-                return None
+-
++        def _findLib_path(name, is64):
+             if is64:
+-                cmd = 'env LC_ALL=C /usr/bin/crle -64 2>/dev/null'
++                paths = "/lib/64:/usr/lib/64"
+             else:
+-                cmd = 'env LC_ALL=C /usr/bin/crle 2>/dev/null'
+-
+-            for line in os.popen(cmd).readlines():
+-                line = line.strip()
+-                if line.startswith('Default Library Path (ELF):'):
+-                    paths = line.split()[4]
+-
+-            if not paths:
+-                return None
++                paths = "/lib:/usr/lib"
+ 
+             for dir in paths.split(":"):
+                 libfile = os.path.join(dir, "lib%s.so" % name)
[email protected]@ -207,7 +196,7 @@
+             return None
+ 
+         def find_library(name, is64 = False):
+-            return _get_soname(_findLib_crle(name, is64) or _findLib_gcc(name))
++            return _get_soname(_findLib_path(name, is64) or _findLib_gcc(name))
+ 
+     else:
+ 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/python34/patches/21-default-lib-path.patch	Wed Jan 21 17:55:00 2015 -0800
@@ -0,0 +1,41 @@
+This patch was developed in-house.  It has been submitted upstream:
+http://bugs.python.org/issue23287
+
+--- Python-3.4.2/Lib/ctypes/util.py.~1~	2014-10-08 01:18:12.000000000 -0700
++++ Python-3.4.2/Lib/ctypes/util.py	2015-01-20 15:51:09.024341756 -0800
[email protected]@ -169,23 +169,11 @@
+ 
+     elif sys.platform == "sunos5":
+ 
+-        def _findLib_crle(name, is64):
+-            if not os.path.exists('/usr/bin/crle'):
+-                return None
+-
++        def _findLib_path(name, is64):
+             if is64:
+-                cmd = 'env LC_ALL=C /usr/bin/crle -64 2>/dev/null'
++                paths = "/lib/64:/usr/lib/64"
+             else:
+-                cmd = 'env LC_ALL=C /usr/bin/crle 2>/dev/null'
+-
+-            with contextlib.closing(os.popen(cmd)) as f:
+-                for line in f.readlines():
+-                    line = line.strip()
+-                    if line.startswith('Default Library Path (ELF):'):
+-                        paths = line.split()[4]
+-
+-            if not paths:
+-                return None
++                paths = "/lib:/usr/lib"
+ 
+             for dir in paths.split(":"):
+                 libfile = os.path.join(dir, "lib%s.so" % name)
[email protected]@ -195,7 +183,7 @@
+             return None
+ 
+         def find_library(name, is64 = False):
+-            return _get_soname(_findLib_crle(name, is64) or _findLib_gcc(name))
++            return _get_soname(_findLib_path(name, is64) or _findLib_gcc(name))
+ 
+     else:
+ 
--- a/doc/makefile-variables.txt	Thu Jan 22 11:26:32 2015 -0800
+++ b/doc/makefile-variables.txt	Wed Jan 21 17:55:00 2015 -0800
@@ -23,7 +23,14 @@
   tools/.gnupg/pubring.pgp, then as part of your code review, please show the
   diffs of the text version of the file by running
       gpg2 --homedir $WS/tools/.gnupg --fingerprint
-  both before and after the change.
+  both before and after the change.  Note that when merging, because
+  $WS/tools/.gnupg/pubring.gpg is a binary file, you will have to choose
+  the parent or child version.  Pick one, then run:
+	for cset in $(hg log -r 'parents()' -T '{node} '); do
+		hg cat -r $cset $WS/tools/.gnupg/pubring.gpg | \
+			gpg2 --homedir=$WS/tools/.gnupg --import;
+	done
+  before you 'hg commit' your merge.
 * COMPONENT_BUGDB is the lower-case rendering of the BugDB cat/subcat.
 
 These two are both initialized in make-rules/shared-macros.mk rather than any
Binary file tools/.gnupg/pubring.gpg has changed