Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Copy over oracle-instantclient @10.2.0.4.0
- Loading branch information
1 parent
d9446bf
commit 399a7fb
Showing
1 changed file
with
219 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |