# $Id: Portfile 50896 2009-05-12 13:42:05Z ryandesign@macports.org $

PortSystem              1.0

name                    oracle-instantclient
version                 10.1.0.3
categories              databases
platforms               macosx
maintainers             ryandesign
homepage                http://www.oracle.com/technology/software/tech/oci/instantclient/
use_zip                 yes
use_parallel_build      no
set weird_prefix        ""

description \
    Oracle database connection libraries

long_description \
    Oracle Instant Client allows you to run your applications without installing the standard Oracle client or having an ORACLE_HOME.

platform powerpc {
    worksrcdir          instantclient[join [lrange [split ${version} .] 0 1] _]
    set weird_prefix    /b/729
    
    master_sites \
        http://download.oracle.com/otn/mac/instantclient/
    
    distfiles \
        instantclient-basic-macosx-${version}${extract.suffix} \
        instantclient-sdk-macosx-${version}${extract.suffix}
    
    checksums \
        instantclient-basic-macosx-${version}${extract.suffix} \
            md5 5b38ab0565d6189d2069a4abe0bf2ab2 \
            sha1 2f3aa35e99228fd08b686b19eba84ec34db8277b \
            rmd160 d1f056f8f1b308c5493f4938b29b55fcb32452cf \
        instantclient-sdk-macosx-${version}${extract.suffix} \
            md5 79c7cb3f8afaff076fb20bad75b37cc9 \
            sha1 486fe1c9a6c5cfc32401e72728ff821a50a22cf9 \
            rmd160 c819db7f739b8ca468c8059dfbac31a6a6965938
}

platform i386 {
    # This is really awful. Oracle provides different version numbers of the
    # Instant Client library for PowerPC and Intel. You should not change the
    # version number of a port conditionally like this. But I don't know how \
    # else to handle this here. Hopefully Oracle will release a new version \
    # of the libraries with the same version number on both PowerPC and Intel.
    version             10.2.0.4.0
    revision            2
    worksrcdir          instantclient_[join [lrange [split ${version} .] 0 1] _]
    set weird_prefix    /b/32_216
    
    master_sites \
        http://download.oracle.com/otn/mac/instantclient/10204/
    
    distfiles \
        instantclient-basic-${version}-macosx-x86${extract.suffix} \
        instantclient-sdk-${version}-macosx-x86${extract.suffix}
    
    checksums \
        instantclient-basic-${version}-macosx-x86${extract.suffix} \
            md5     75a7622f6852759294df19878106cd77 \
            sha1    c5ea4ca3e55eb8f2ce83b48c268f51fbb48ff867 \
            rmd160  3ce70104dfb4a53d2adda96e6ea20bb2cf43ee6f \
        instantclient-sdk-${version}-macosx-x86${extract.suffix} \
            md5     e8b5ca3b36a1849c2ca9fa3bf7979311 \
            sha1    2505faea0e24d52d50b96dc0b22081584de714cb \
            rmd160  4eb78290b0b44e1f80edbf5e7a84552cca70ac05
    
    livecheck.url       ${homepage}htdocs/intel_macsoft.html
    livecheck.regex     instantclient-basic-(\[0-9.\]+)-macosx-x86\\.zip
}

pre-fetch {
    if {[variant_isset i386]} {
        if {${os.major} < 9} {
            return -code error "${name} on Intel requires Mac OS X 10.5 or greater."
        }
    }
    if {![file exists ${distpath}/[lindex ${distfiles} 0]] || ![file exists ${distpath}/[lindex ${distfiles} 1]]} {
        ui_warn "MacPorts may not be able to download the necessary distfiles for ${name}. If you get a checksum error, please download [join ${distfiles} " and "] manually from ${livecheck.url} and place them in ${distpath}"
    }
}

use_configure           no
universal_variant       no

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.
    
    # For each dylib in the distribution, change the directory of its own
    # "soname" to our ${lib_dir}.
    foreach lib [glob -directory ${worksrcpath} *.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 our ${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}"
            }
        }
    }
}

destroot {
    xinstall -d ${destroot}${lib_dir}
    eval xinstall \
        [glob -directory ${worksrcpath} *.dylib*] \
        [glob -directory ${worksrcpath} *.jar] \
        ${destroot}${lib_dir}
    
    # php5 +oracle complains without this symlink.
    ln -s libclntsh.dylib.10.1 ${destroot}${lib_dir}/libclntsh.dylib
    
    # You would think the includes should go in ${prefix}/include/oracle, but
    # the instantclient layout wants it in ${prefix}/lib/oracle/sdk/include
    xinstall -d ${destroot}${lib_dir}/sdk
    copy ${worksrcpath}/sdk/include ${destroot}${lib_dir}/sdk
}

livecheck.check         regex
livecheck.url           ${homepage}htdocs/macsoft.html
livecheck.regex         instantclient-basic-macosx-(\[0-9.\]+)\\.zip
