components/python/python27/patches/20-ctypes-util-find-library.patch
author John Beck <John.Beck@Oracle.COM>
Fri, 18 Apr 2014 16:06:16 -0700
branchs11-update
changeset 3087 a8a55bae43f3
permissions -rw-r--r--
18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2 18468472 ctypes fails for python 2.7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3087
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
     1
This patch comes from upstream: http://bugs.python.org/issue5289
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
     2
If we ever upgrade to 2.7.4 or later, it will no longer be needed.
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
     3
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
     4
--- Python-2.7.3/Lib/ctypes/util.py~
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
     5
+++ Python-2.7.3/Lib/ctypes/util.py
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
     6
@@ -180,6 +180,35 @@ elif os.name == "posix":
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
     7
             res.sort(cmp= lambda x,y: cmp(_num_version(x), _num_version(y)))
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
     8
             return res[-1]
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
     9
 
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    10
+    elif sys.platform == "sunos5":
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    11
+
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    12
+        def _findLib_crle(name, is64):
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    13
+            if not os.path.exists('/usr/bin/crle'):
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    14
+                return None
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    15
+
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    16
+            if is64:
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    17
+                cmd = 'env LC_ALL=C /usr/bin/crle -64 2>/dev/null'
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    18
+            else:
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    19
+                cmd = 'env LC_ALL=C /usr/bin/crle 2>/dev/null'
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    20
+
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    21
+            for line in os.popen(cmd).readlines():
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    22
+                line = line.strip()
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    23
+                if line.startswith('Default Library Path (ELF):'):
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    24
+                    paths = line.split()[4]
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    25
+
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    26
+            if not paths:
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    27
+                return None
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    28
+
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    29
+            for dir in paths.split(":"):
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    30
+                libfile = os.path.join(dir, "lib%s.so" % name)
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    31
+                if os.path.exists(libfile):
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    32
+                    return libfile
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    33
+
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    34
+            return None
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    35
+
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    36
+        def find_library(name, is64 = False):
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    37
+            return _get_soname(_findLib_crle(name, is64) or _findLib_gcc(name))
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    38
+
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    39
     else:
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    40
 
a8a55bae43f3 18617452 SIZEOF_WCHAR_T undefined in pyconfig.h on 11.2
John Beck <John.Beck@Oracle.COM>
parents:
diff changeset
    41
         def _findSoname_ldconfig(name):