components/python/cx_oracle/patches/cx_Oracle-setup.patch
author jmcp <James.McPherson@oracle.com>
Fri, 18 Sep 2015 15:29:23 -0700
changeset 4886 5489d408f67a
permissions -rw-r--r--
PSARC/2015/294 cx_Oracle for Solaris 15803329 SUNBT7183489 Include python module cx_Oracle in Solaris
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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