author | jmcp <James.McPherson@oracle.com> |
Fri, 18 Sep 2015 15:29:23 -0700 | |
changeset 4886 | 5489d408f67a |
permissions | -rw-r--r-- |
4886
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
1 |
This patch provides support for finding the Oracle Instant Client |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
2 |
libraries (and sdk) delivered via IPS. It also forces the specification |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
3 |
of an RPATH so that the cx_Oracle module links against the IPS- |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
4 |
delivered Instant Client packages. |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
5 |
|
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
6 |
This patch has not yet been integrated with upstream. |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
7 |
|
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
8 |
|
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
9 |
--- cx_Oracle-5.2/setup.py.orig Fri Apr 3 21:10:29 2015 |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
10 |
+++ cx_Oracle-5.2/setup.py Fri Sep 11 17:23:39 2015 |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
11 |
@@ -61,9 +61,17 @@ |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
12 |
# define the list of files to be included as documentation for bdist_rpm |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
13 |
docFiles = "README.txt BUILD.txt samples test" |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
14 |
|
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
15 |
+# Globalize some variables |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
16 |
+subDirs = [] |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
17 |
+versions = [] |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
18 |
+if struct.calcsize("P") == 4: |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
19 |
+ bitness = 32 |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
20 |
+else: |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
21 |
+ bitness = 64 |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
22 |
+ |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
23 |
# method for checking a potential Oracle home |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
24 |
def CheckOracleHome(directoryToCheck): |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
25 |
- global oracleHome, oracleVersion, oracleLibDir |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
26 |
+ global oracleHome, oracleVersion, oracleLibDir, subDirs, versions |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
27 |
import os |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
28 |
import struct |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
29 |
import sys |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
30 |
@@ -81,8 +89,19 @@ |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
31 |
("11g", "libclntsh.dylib.11.1"), |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
32 |
("10g", "libclntsh.dylib.10.1") |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
33 |
] |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
34 |
+ elif sys.platform == "sunos5": |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
35 |
+ if bitness == 32: |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
36 |
+ # 32bit |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
37 |
+ subDirs = ["lib"] |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
38 |
+ else: |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
39 |
+ subDirs = ["lib/64", "lib"] |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
40 |
+ filesToCheck = [ |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
41 |
+ ("12c", "libclntsh.so.12.1"), |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
42 |
+ ("11g", "libclntsh.so.11.1"), |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
43 |
+ ("10g", "libclntsh.so.10.1") |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
44 |
+ ] |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
45 |
else: |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
46 |
- if struct.calcsize("P") == 4: |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
47 |
+ if bitness == 32: |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
48 |
subDirs = ["lib", "lib32"] |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
49 |
else: |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
50 |
subDirs = ["lib", "lib64"] |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
51 |
@@ -124,7 +143,7 @@ |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
52 |
# Older Instant Client dirs have the form: |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
53 |
# /usr/lib/oracle/10.2.0.5/client[64]/lib |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
54 |
def FindInstantClientRPMLib(): |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
55 |
- versions = [] |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
56 |
+ global versions |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
57 |
for path in glob.glob(os.path.join(rpmBaseLibDir, "[0-9.]*")): |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
58 |
versions.append(os.path.basename(path)) |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
59 |
versions.sort(key = lambda x: [int(s) for s in x.split(".")]) |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
60 |
@@ -147,26 +166,68 @@ |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
61 |
# define Linux Instant Client RPM path components |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
62 |
# Assume 64 bit builds if the platform is 64 bit |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
63 |
rpmBaseLibDir = "/usr/lib/oracle" |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
64 |
-if struct.calcsize("P") == 4: |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
65 |
+if bitness == 32: |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
66 |
rpmClientDir = "client" |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
67 |
else: |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
68 |
rpmClientDir = "client64" |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
69 |
instantClientRPMLib = None |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
70 |
|
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
71 |
+# |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
72 |
+# Solaris 11.x and later make use of the Image Packaging System, IPS, |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
73 |
+# and can install Instant Client 12.1 (and later versions) using that |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
74 |
+# format. IPS-delivered versions exist under |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
75 |
+# /usr/oracle/instantclient/[version] |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
76 |
+# which allows us to bake an rpath into this module and remove the need |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
77 |
+# for setting LD_LIBRARY_PATH in a wrapper. |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
78 |
+def FindInstantClientIPSLib(): |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
79 |
+ global versions |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
80 |
+ for path in glob.glob(os.path.join(ipsBaseLibDir, "[0-9.]*")): |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
81 |
+ versions.append(os.path.basename(path)) |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
82 |
+ versions.sort(key = lambda x: [int(s) for s in x.split(".")]) |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
83 |
+ versions.reverse() |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
84 |
+ for version in versions: |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
85 |
+ path = os.path.join(ipsBaseLibDir, version) |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
86 |
+ if os.path.exists(path) and CheckOracleHome(path): |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
87 |
+ return path |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
88 |
+ |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
89 |
+# If the lib dir appears to be an Instant Client IPS dir, then look only |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
90 |
+# for matching SDK headers |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
91 |
+def FindInstantClientIPSInclude(libDir): |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
92 |
+ includeDir = os.path.join("/usr/include/oracle", versions[0]) |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
93 |
+ if os.path.isfile(os.path.join(includeDir, "oci.h")): |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
94 |
+ return [includeDir] |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
95 |
+ raise DistutilsSetupError("cannot locate Oracle Instant Client " \ |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
96 |
+ "SDK RPM header files") |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
97 |
+ |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
98 |
+# Now we can define path components for the Solaris 11.x++ Instant Client |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
99 |
+# delivered via IPS. |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
100 |
+# |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
101 |
+# We build cx_Oracle as 32bit if we're running python2.7, and |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
102 |
+# 64bit if we're running python3.4 or later. That, however, |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
103 |
+# doesn't matter when finding the libraries since the IPS package |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
104 |
+# ships with both 32- and 64-bit libraries. |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
105 |
+ipsBaseLibDir = "/usr/oracle/instantclient" |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
106 |
+instantClientIPSLib = None |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
107 |
+ |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
108 |
+ |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
109 |
# try to determine the Oracle home |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
110 |
userOracleHome = os.environ.get("ORACLE_HOME") |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
111 |
if userOracleHome is not None: |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
112 |
if not CheckOracleHome(userOracleHome): |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
113 |
messageFormat = "Oracle home (%s) does not refer to an " \ |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
114 |
- "10g, 11g or 12c installation." |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
115 |
+ "10g, 11g or 12c installation.\n" |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
116 |
raise DistutilsSetupError(messageFormat % userOracleHome) |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
117 |
else: |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
118 |
for path in os.environ["PATH"].split(os.pathsep): |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
119 |
if CheckOracleHome(path): |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
120 |
break |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
121 |
- if oracleHome is None and sys.platform.startswith("linux"): |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
122 |
- instantClientRPMLib = FindInstantClientRPMLib() |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
123 |
if oracleHome is None: |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
124 |
+ if sys.platform.startswith("linux"): |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
125 |
+ instantClientRPMLib = FindInstantClientRPMLib() |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
126 |
+ elif sys.platform.startswith("sunos5"): |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
127 |
+ instantClientIPSLib = FindInstantClientIPSLib() |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
128 |
+ else: |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
129 |
+ # oracleHome is None |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
130 |
raise DistutilsSetupError("cannot locate an Oracle software " \ |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
131 |
"installation") |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
132 |
|
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
133 |
@@ -199,6 +260,8 @@ |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
134 |
libs = ["clntsh"] |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
135 |
if instantClientRPMLib is not None: |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
136 |
includeDirs = FindInstantClientRPMInclude(instantClientRPMLib) |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
137 |
+ elif instantClientIPSLib is not None: |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
138 |
+ includeDirs = FindInstantClientIPSInclude(instantClientIPSLib) |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
139 |
else: |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
140 |
possibleIncludeDirs = ["rdbms/demo", "rdbms/public", "network/public", |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
141 |
"sdk/include"] |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
142 |
@@ -238,12 +301,19 @@ |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
143 |
elif sys.platform == "darwin": |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
144 |
extraLinkArgs.append("-shared-libgcc") |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
145 |
|
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
146 |
-# force the inclusion of an RPATH linker directive if desired; this will |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
147 |
-# eliminate the need for setting LD_LIBRARY_PATH but it also means that this |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
148 |
-# location will be the only location searched for the Oracle client library |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
149 |
-if "FORCE_RPATH" in os.environ or instantClientRPMLib: |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
150 |
+# Eliminate the need for setting LD_LIBRARY_PATH in a wrapper script |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
151 |
+# by baking in a RUNPATH (aka RPATH) |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
152 |
+if sys.platform.startswith("sunos5"): |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
153 |
+ extraLinkArgs.append("-R%s" % oracleLibDir) |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
154 |
+else: |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
155 |
extraLinkArgs.append("-Wl,-rpath,%s" % oracleLibDir) |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
156 |
|
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
157 |
+# If we're running as a 64bit python interpreter, we need to ensure that |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
158 |
+# we get the compiler and linker to generate 64bit code too. |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
159 |
+if bitness == 64: |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
160 |
+ extraCompileArgs.append("-m64") |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
161 |
+ extraLinkArgs.append("-m64") |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
162 |
+ |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
163 |
# tweak distribution full name to include the Oracle version |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
164 |
class Distribution(distutils.dist.Distribution): |
5489d408f67a
PSARC/2015/294 cx_Oracle for Solaris
jmcp <James.McPherson@oracle.com>
parents:
diff
changeset
|
165 |