[104521] trunk/dports/databases/oracle-instantclient/Portfile

ryandesign at macports.org ryandesign at macports.org
Tue Mar 26 17:28:57 PDT 2013


Revision: 104521
          https://trac.macports.org/changeset/104521
Author:   ryandesign at macports.org
Date:     2013-03-26 17:28:57 -0700 (Tue, 26 Mar 2013)
Log Message:
-----------
oracle-instantclient: update Intel version to 11.2.0.3.0 (#37880) which now works 64-bit even on Lion and up. PowerPC version remains 10.1.0.3 and this is now indicated in the version field on PowerPC. Simplify port somewhat.

Modified Paths:
--------------
    trunk/dports/databases/oracle-instantclient/Portfile

Modified: trunk/dports/databases/oracle-instantclient/Portfile
===================================================================
--- trunk/dports/databases/oracle-instantclient/Portfile	2013-03-26 22:06:58 UTC (rev 104520)
+++ trunk/dports/databases/oracle-instantclient/Portfile	2013-03-27 00:28:57 UTC (rev 104521)
@@ -4,24 +4,11 @@
 PortSystem              1.0
 
 name                    oracle-instantclient
-version                 10.2.0.4.0
-revision                4
-set intel_version       ${version}
-set powerpc_version     10.1.0.3
 categories              databases
 platforms               macosx
 maintainers             ryandesign
-supported_archs         x86_64 i386 ppc
 homepage                http://www.oracle.com/technetwork/database/features/instant-client/
-
-# The distfiles mirror has been configured to not mirror these files.
-master_sites            http://eduunix.ccut.edu.cn/index2/database/Oracle%20Instant%20Client/:powerpc \
-                        ftp://ftp.qut.edu.au/pub/oracle/instantclient/macos/:intel
-#master_sites            http://download.oracle.com/otn/mac/instantclient/:powerpc \
-#                        http://download.oracle.com/otn/mac/instantclient/[join [lrange [split ${intel_version} .] 0 3] ""]/:intel
-
 use_zip                 yes
-use_parallel_build      no
 
 description \
     Oracle database connection libraries
@@ -29,83 +16,81 @@
 long_description \
     Oracle Instant Client allows you to run your applications without installing the standard Oracle client or having an ORACLE_HOME.
 
-checksums \
-    [suffix instantclient-basic-macosx-${powerpc_version}] \
-        md5     5b38ab0565d6189d2069a4abe0bf2ab2 \
-        sha1    2f3aa35e99228fd08b686b19eba84ec34db8277b \
-        rmd160  d1f056f8f1b308c5493f4938b29b55fcb32452cf \
-    [suffix instantclient-sdk-macosx-${powerpc_version}] \
-        md5     79c7cb3f8afaff076fb20bad75b37cc9 \
-        sha1    486fe1c9a6c5cfc32401e72728ff821a50a22cf9 \
-        rmd160  c819db7f739b8ca468c8059dfbac31a6a6965938 \
-    [suffix instantclient-basic-${intel_version}-macosx-x86] \
-        md5     75a7622f6852759294df19878106cd77 \
-        sha1    c5ea4ca3e55eb8f2ce83b48c268f51fbb48ff867 \
-        rmd160  3ce70104dfb4a53d2adda96e6ea20bb2cf43ee6f \
-    [suffix instantclient-sdk-${intel_version}-macosx-x86] \
-        md5     e8b5ca3b36a1849c2ca9fa3bf7979311 \
-        sha1    2505faea0e24d52d50b96dc0b22081584de714cb \
-        rmd160  4eb78290b0b44e1f80edbf5e7a84552cca70ac05 \
-    [suffix instantclient-basic-${intel_version}-macosx-x64] \
-        md5     b88c9133c61a2e6b5584879641541d68 \
-        sha1    1e9cd2d0f77c9d2212beb73cdf5876a538eb7e14 \
-        rmd160  05c727d57171381c201f92079074a7d907134c2d \
-    [suffix instantclient-sdk-${intel_version}-macosx-x64] \
-        md5     fc70b8e5a2f3324f3ab64c0564fd70e3 \
-        sha1    05968db004808c43b4cc90cea83b904e6618bc9c \
-        rmd160  61b6d7059598444be54e1dd43a2e765c3793554f
-
-#   my_arch     my_tag      my_arch_version     my_distname_format              my_worksrcdir_format    weird_prefix
-set my_arch_info "
-    ppc         powerpc     ${powerpc_version}  instantclient-%s-macosx-%s      instantclient%s         /b/729
-    i386        intel       ${intel_version}    instantclient-%s-%s-macosx-x86  instantclient_%s        /b/32_216
-    x86_64      intel       ${intel_version}    instantclient-%s-%s-macosx-x64  instantclient_%s        /b/227
-"
-
 if {"powerpc" == ${os.arch}} {
-    universal_variant no
+    epoch               1
+    version             10.1.0.3
+    set library_version 10.1
+    supported_archs     ppc
+    universal_variant   no
+    
+    # The distfiles mirror has been configured not to mirror this port's files.
+    master_sites        http://cmsrep.cern.ch/cmssw/cms/SOURCES/external/oracle/10.2.0.2/
+    
+    checksums           [suffix instantclient-basic-macosx-${version}] \
+                        rmd160  d1f056f8f1b308c5493f4938b29b55fcb32452cf \
+                        sha256  55dafdab1b7387b05226fd7eb0d86d52225a702a5e690fc82af42073f49e7725 \
+                        [suffix instantclient-sdk-macosx-${version}] \
+                        rmd160  c819db7f739b8ca468c8059dfbac31a6a6965938 \
+                        sha256  350052656466cc2daecbb8b1c162ff444365def151636ba704f28ae5f05ca411
+    
+    set my_worksrcdir_format        instantclient%s
+    set my_distname_format(ppc)     instantclient-%s-macosx-${version}
+    set my_library_prefix(ppc)      /b/729
+    
+    livecheck.type      none
 } else {
+    version             11.2.0.3.0
+    set library_version 11.1
+    supported_archs     x86_64 i386
     variant universal {}
+    
+    # MacPorts won't be able to download these files.
+    master_sites        http://download.oracle.com/otn/mac/instantclient/[join [lrange [split ${version} .] 0 3] {}]/
+    
+    checksums           [suffix instantclient-basic-macos.x32-${version}] \
+                        rmd160  0ce640465611e0f5d3b9c3d421caa8c9531e573c \
+                        sha256  ee11e57f03dd2a8b92abe09f28b1796a8956cb89d19dd015c9e9cd01701d3021 \
+                        [suffix instantclient-sdk-macos.x32-${version}] \
+                        rmd160  632bdd9998ca0b8d56965544ac3020b28a213086 \
+                        sha256  2ad01e3fc2bcb0c1c4285a9b89037058b74039f6450d4b88176e8180ef2be763 \
+                        [suffix instantclient-basic-macos.x64-${version}] \
+                        rmd160  68edc03040258f5b8e7ccd4aa3c0f553d639ccf1 \
+                        sha256  b86be0d924ec44d5d86ab212cc25b010f0b813ae0f3f22fd0cb0716e27c2d6ea \
+                        [suffix instantclient-sdk-macos.x64-${version}] \
+                        rmd160  934639cbc90b29eb1649bf31c2685870ffedd498 \
+                        sha256  c2ddc7c6d93cd4e0f113362b642741d36d9e9052a9a0282ac583d086c191afcf
+    
+    set my_worksrcdir_format        instantclient_%s
+    set my_distname_format(i386)    instantclient-%s-macos.x32-${version}
+    set my_distname_format(x86_64)  instantclient-%s-macos.x64-${version}
+    set my_library_prefix(i386)     /ade/b/233679120
+    set my_library_prefix(x86_64)   /ade/b/2649109290
+    
+    if {${os.platform} == "darwin" && ${os.major} < 9} {
+        pre-fetch {
+            ui_error "${name} on Intel requires OS X 10.5 or greater."
+            return -code error "incompatible OS X version"
+        }
+    }
+    
+    livecheck.type          regex
+    livecheck.url           http://www.oracle.com/technetwork/topics/intel-macsoft-096467.html
+    livecheck.regex         instantclient-basic-macos.x64-(\[0-9.\]+)${extract.suffix}
 }
 
 # merge() requires universal_archs to be set correctly. Since we use merge()
 # even when not building universal we must always set universal_archs correctly.
-if {[variant_exists universal] && [variant_isset universal]} {
-    # The only supported universal build is x86_64 i386.
-    configure.universal_archs x86_64 i386
-} else {
+if {![variant_exists universal] || ![variant_isset universal]} {
     configure.universal_archs ${configure.build_arch}
 }
-set my_requested_archs ${configure.universal_archs}
 
 distfiles
-foreach my_requested_arch ${my_requested_archs} {
-    foreach {my_arch my_tag my_arch_version my_distname_format my_worksrcdir_format weird_prefix} ${my_arch_info} {
-        if {${my_arch} == ${my_requested_arch}} {
-            foreach my_distfile_type {basic sdk} {
-                distfiles-append [suffix [format ${my_distname_format} ${my_distfile_type} ${my_arch_version}]]:${my_tag}
-            }
-        }
+foreach my_arch ${configure.universal_archs} {
+    foreach my_distfile_type {basic sdk} {
+        distfiles-append [suffix [format $my_distname_format(${my_arch}) ${my_distfile_type}]]
     }
 }
 
-pre-fetch {
-    if {"darwin" != ${os.platform}} {
-        ui_error "${name} requires Mac OS X."
-        return -code error "incompatible operating system"
-    }
-    if {"i386" == ${os.arch} && ${os.major} < 9} {
-        ui_error "${name} on Intel requires Mac OS X 10.5 or greater."
-        return -code error "incompatible Mac OS X version"
-    }
-    if {"powerpc" == ${os.arch}} {
-        ui_msg "Note that although the port says you're getting ${name} ${version},"
-        ui_msg "on PowerPC you're actually getting version ${powerpc_version} because no newer version"
-        ui_msg "is available."
-        ui_msg ""
-    }
-}
-
 post-fetch {
     set bad_distfiles {}
     foreach distfile ${distfiles} {
@@ -137,41 +122,33 @@
 extract {
     set my_build_dir ${extract.dir}/build
     xinstall -d ${my_build_dir}
-    foreach my_requested_arch ${my_requested_archs} {
-        foreach {my_arch my_tag my_arch_version my_distname_format my_worksrcdir_format weird_prefix} ${my_arch_info} {
-            if {${my_arch} == ${my_requested_arch}} {
-                foreach my_distfile_type {basic sdk} {
-                    system "${extract.cmd} ${extract.pre_args} ${extract.post_args} ${distpath}/[suffix [format ${my_distname_format} ${my_distfile_type} ${my_arch_version}]]"
-                }
-                move ${extract.dir}/[format ${my_worksrcdir_format} [join [lrange [split ${my_arch_version} .] 0 1] "_"]] ${my_build_dir}/${my_arch}
-            }
+    foreach my_arch ${configure.universal_archs} {
+        foreach my_distfile_type {basic sdk} {
+            system "${extract.cmd} ${extract.pre_args} ${extract.post_args} ${distpath}/[suffix [format $my_distname_format(${my_arch}) ${my_distfile_type}]]"
         }
+        move ${extract.dir}/[format ${my_worksrcdir_format} [join [lrange [split ${version} .] 0 1] "_"]] ${my_build_dir}/${my_arch}
     }
 }
 
 use_configure           no
 
-set lib_dir ${prefix}/lib/oracle
+set lib_dir             ${prefix}/lib/oracle
 
 build {
-    # The pre-built libraries use weird prefixes and Oracle recommends setting
-    # DYLD_LIBRARY_PATH to deal with this. I would rather fix the paths in the
-    # libraries at install time.
-    foreach my_requested_arch ${my_requested_archs} {
-        foreach {my_arch my_tag my_arch_version my_distname_format my_worksrcdir_format weird_prefix} ${my_arch_info} {
-            if {${my_arch} == ${my_requested_arch}} {
-                # For each dylib in the distribution, change the directory of its own
-                # "soname" to ${lib_dir}.
-                foreach lib [glob -directory ${workpath}/build/${my_arch} *.dylib*] {
-                    system "install_name_tool -id ${lib_dir}/[strsed ${lib} /^.*\\///] ${lib}"
-                    
-                    # Then for each dependent dylib with a weird path that this dylib
-                    # references, fix the reference to use ${lib_dir}.
-                    foreach dep [exec otool -L ${lib}] {
-                        if [string match "${weird_prefix}/*" ${dep}] {
-                            system "install_name_tool -change ${dep} ${lib_dir}/[strsed ${dep} /^.*\\///] ${lib}"
-                        }
-                    }
+    # Oracle builds the libraries with strange install_names, which we fix, for
+    # neatness. Unfortunately users must still set DYLD_LIBRARY_PATH in their
+    # environment because one of the libraries, libociei, is dynamically loaded
+    # at runtime rather than being linked to.
+    foreach my_arch ${configure.universal_archs} {
+        # For each dylib, change the directory of its install_name to ${lib_dir}.
+        foreach lib [glob -directory ${workpath}/build/${my_arch} *.dylib*] {
+            system "install_name_tool -id ${lib_dir}/[strsed ${lib} /^.*\\///] ${lib}"
+            
+            # Then for each dependent dylib with a strange install_name that
+            # this dylib references, fix the reference to use ${lib_dir}.
+            foreach dep [exec otool -L ${lib}] {
+                if [string match "$my_library_prefix(${my_arch})/*" ${dep}] {
+                    system "install_name_tool -change ${dep} ${lib_dir}/[strsed ${dep} /^.*\\///] ${lib}"
                 }
             }
         }
@@ -179,41 +156,33 @@
 }
 
 destroot {
-    foreach my_requested_arch ${my_requested_archs} {
-        foreach {my_arch my_tag my_arch_version my_distname_format my_worksrcdir_format weird_prefix} ${my_arch_info} {
-            if {${my_arch} == ${my_requested_arch}} {
-                set my_destroot ${workpath}/pre-dest/${my_arch}
-                set my_worksrcpath ${workpath}/build/${my_arch}
-                xinstall -d ${my_destroot}${lib_dir}
-                eval xinstall \
-                    [glob -directory ${my_worksrcpath} *.dylib*] \
-                    [glob -directory ${my_worksrcpath} *.jar] \
-                    ${my_destroot}${lib_dir}
-                
-                # You would think the includes should go in ${prefix}/include/oracle, but
-                # the "instantclient layout" dictates they must be in ${prefix}/lib/oracle/sdk/include;
-                # ports like php5-oracle will expect them there.
-                xinstall -d ${my_destroot}${lib_dir}/sdk
-                copy ${my_worksrcpath}/sdk/include ${my_destroot}${lib_dir}/sdk
-            }
-        }
+    foreach my_arch ${configure.universal_archs} {
+        set my_destroot ${workpath}/pre-dest/${my_arch}
+        set my_worksrcpath ${workpath}/build/${my_arch}
+        xinstall -d ${my_destroot}${lib_dir}
+        eval xinstall \
+            [glob -directory ${my_worksrcpath} *.dylib*] \
+            [glob -directory ${my_worksrcpath} *.jar] \
+            ${my_destroot}${lib_dir}
+        
+        # You would think the includes should go in ${prefix}/include/oracle, but
+        # the "instantclient layout" dictates they must be in ${lib_dir}/sdk/include;
+        # ports like php-oracle will expect them there.
+        xinstall -d ${my_destroot}${lib_dir}/sdk
+        copy ${my_worksrcpath}/sdk/include ${my_destroot}${lib_dir}/sdk
     }
     
     merge ${workpath}/pre-dest
     
-    # php5-oracle complains without a libclntsh.dylib symlink.
-    ln -s libclntsh.dylib.10.1 ${destroot}${lib_dir}/libclntsh.dylib
+    # php-oracle complains without a libclntsh.dylib symlink.
+    ln -s libclntsh.dylib.${library_version} ${destroot}${lib_dir}/libclntsh.dylib
     
     # Add a libocci.dylib symlink too for good measure.
-    ln -s libocci.dylib.10.1 ${destroot}${lib_dir}/libocci.dylib
+    ln -s libocci.dylib.${library_version} ${destroot}${lib_dir}/libocci.dylib
 }
 
 notes "
-To use ${name},
-export DYLD_LIBRARY_PATH=${prefix}/lib/oracle
-in your environment.
-"
+To use ${name}, add this command to your environment:
 
-livecheck.type          regex
-livecheck.url           ${homepage}htdocs/intel_macsoft.html
-livecheck.regex         instantclient-basic-(\[0-9.\]+)-macosx-x86\\.zip
+export DYLD_LIBRARY_PATH=${lib_dir}
+"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20130326/b7510313/attachment-0001.html>


More information about the macports-changes mailing list