Skip to content

Commit

Permalink
Copy over oracle-instantclient @10.2.0.4.0
Browse files Browse the repository at this point in the history
  • Loading branch information
metaskills committed Feb 1, 2013
1 parent d9446bf commit 399a7fb
Showing 1 changed file with 219 additions and 0 deletions.
219 changes: 219 additions & 0 deletions databases/oracle-instantclient/Portfile
@@ -0,0 +1,219 @@
# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
# $Id: Portfile 96272 2012-08-06 20:55:53Z ryandesign@macports.org $

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

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
} else {
variant universal {}
}

# 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 {
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}
}
}
}
}

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} {
set distfile [strsed ${distfile} {/:.*$//}]
if {![catch {strsed [exec [findBinary file $portutil::autoconf::file_path] ${distpath}/${distfile} --brief --mime] {s/;.*$//}} mimetype] && "text/html" == ${mimetype}} {
lappend bad_distfiles ${distfile}
file delete ${distpath}/${distfile}
}
}
if {[llength ${bad_distfiles}] > 0} {
ui_error "MacPorts was not able to download the necessary distfiles for ${name}."
ui_error "Please visit this URL:"
ui_error ""
ui_error " ${homepage}"
ui_error ""
ui_error "and download these files manually:"
ui_error ""
foreach distfile ${bad_distfiles} {
ui_error " ${distfile}"
}
ui_error ""
ui_error "and place them in this directory:"
ui_error ""
ui_error " ${distpath}"
return -code error "missing distfiles"
}
}

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}
}
}
}
}

use_configure 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.
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}"
}
}
}
}
}
}
}

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
}
}
}

merge ${workpath}/pre-dest

# php5-oracle complains without a libclntsh.dylib symlink.
ln -s libclntsh.dylib.10.1 ${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
}

notes "
To use ${name},
export DYLD_LIBRARY_PATH=${prefix}/lib/oracle
in your environment.
"

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

0 comments on commit 399a7fb

Please sign in to comment.