dev-db/oracle-instantclient-12.1.0.2: really installs now, with EAPI 6
authorMichael Haubenwallner <haubi@gentoo.org>
Wed, 9 Mar 2016 17:46:59 +0000 (18:46 +0100)
committerMichael Haubenwallner <haubi@gentoo.org>
Wed, 9 Mar 2016 17:48:07 +0000 (18:48 +0100)
Package-Manager: portage-2.2.26

dev-db/oracle-instantclient/files/12.1.0.2-makefile.patch
dev-db/oracle-instantclient/files/tnsnames.ora.sample [new file with mode: 0644]
dev-db/oracle-instantclient/oracle-instantclient-12.1.0.2.ebuild

index 01d52b6a4f6242664b9f027d2db89c60eedb83d6..999d8c35f0d63dd433c62024844b2d95be0aaea9 100644 (file)
@@ -3,8 +3,8 @@ known by CPAN DBD::Oracle (bug#165834).
 This provides absolute paths for headers and libraries.
 
 Paranoia drops those REMOVE lines.
---- sdk/demo/demo.mk
-+++ sdk/demo/demo.mk
+--- instantclient_12_1/sdk/demo/demo.mk
++++ instantclient_12_1/sdk/demo/demo.mk
 @@ -28,8 +28,9 @@
  CC=/opt/SunProd/SUNWspro6.1/bin/CC
  cc=/opt/SunProd/SUNWspro6.1/bin/cc
diff --git a/dev-db/oracle-instantclient/files/tnsnames.ora.sample b/dev-db/oracle-instantclient/files/tnsnames.ora.sample
new file mode 100644 (file)
index 0000000..f0524f5
--- /dev/null
@@ -0,0 +1,93 @@
+# This file contains the syntax information for 
+# the entries to be put in any tnsnames.ora file
+# The entries in this file are need based. 
+# There are no defaults for entries in this file
+# that Sqlnet/Net3 use that need to be overridden 
+#
+# Typically you could have two tnsnames.ora files
+# in the system, one that is set for the entire system
+# and is called the system tnsnames.ora file, and a
+# second file that is used by each user locally so that
+# he can override the definitions dictated by the system
+# tnsnames.ora file.
+
+# The entries in tnsnames.ora are an alternative to using
+# the names server with the onames adapter.
+# They are a collection of aliases for the addresses that 
+# the listener(s) is(are) listening for a database or 
+# several databases.
+
+# The following is the general syntax for any entry in 
+# a tnsnames.ora file. There could be several such entries 
+# tailored to the user's needs.
+
+<alias>= [ (DESCRIPTION_LIST =  # Optional depending on whether u have 
+                               # one or more descriptions
+                               # If there is just one description, unnecessary ]
+         (DESCRIPTION=
+           [ (SDU=2048) ]      # Optional, defaults to 2048
+                               # Can take values between 512 and 32K
+           [ (ADDRESS_LIST=    # Optional depending on whether u have
+                               # one or more addresses
+                               # If there is just one address, unnecessary ]
+             (ADDRESS=
+               [ (COMMUNITY=<community_name>) ] 
+               (PROTOCOL=tcp)
+               (HOST=<hostname>)
+               (PORT=<portnumber (1521 is a standard port used)>)
+             )
+             [ (ADDRESS=
+                 (PROTOCOL=ipc)
+                 (KEY=<ipckey (PNPKEY is a standard key used)>)        
+               )
+             ]
+             [ (ADDRESS=
+                 [ (COMMUNITY=<community_name>) ]
+                 (PROTOCOL=decnet)
+                 (NODE=<nodename>)
+                 (OBJECT=<objectname>)
+               )
+             ]
+              ... # More addresses
+           [ ) ] # Optional depending on whether ADDRESS_LIST is used or not 
+           [ (CONNECT_DATA=
+               (SID=<oracle_sid>)
+               [ (GLOBAL_NAME=<global_database_name>) ]
+             )
+           ]
+           [ (SOURCE_ROUTE=yes) ]  
+         )
+         (DESCRIPTION=     
+           [ (SDU=2048) ]      # Optional, defaults to 2048
+                               # Can take values between 512 and 32K
+           [ (ADDRESS_LIST= ]  # Optional depending on whether u have more
+                               # than one address or not
+                               # If there is just one address, unnecessary
+             (ADDRESS
+               [ (COMMUNITY=<community_name>) ]
+               (PROTOCOL=tcp)
+               (HOST=<hostname>)
+               (PORT=<portnumber (1521 is a standard port used)>)
+             )
+             [ (ADDRESS=
+                 (PROTOCOL=ipc)
+                 (KEY=<ipckey (PNPKEY is a standard key used)>)
+                )
+             ]
+             ...               # More addresses
+           [ ) ]               # Optional depending on whether ADDRESS_LIST  
+                               # is being used
+           [ (CONNECT_DATA=
+               (SID=<oracle_sid>)
+               [ (GLOBAL_NAME=<global_database_name>) ]
+             )
+           ]
+           [ (SOURCE_ROUTE=yes) ]
+         )
+         [ (CONNECT_DATA=
+             (SID=<oracle_sid>)
+             [ (GLOBAL_NAME=<global_database_name>) ]
+           )
+         ]
+         ...   # More descriptions 
+       [ ) ]   # Optional depending on whether DESCRIPTION_LIST is used or not
index d5d5abf6339a4c5cd49b6457837aac3079505a4c..6ee92318f92352393044ebe8a5d91838527c33d8 100644 (file)
@@ -4,7 +4,7 @@
 
 EAPI="6"
 
-inherit eutils versionator multilib-minimal
+inherit eutils versionator pax-utils multilib-minimal
 
 MY_PVM=$(get_version_component_range 1-2)
 
@@ -67,10 +67,6 @@ S="${WORKDIR}"
 
 QA_PREBUILT="usr/lib*/oracle/*/client/lib*/lib*"
 
-DOCS=( "demo/*" )
-
-PATCHES=( "${FILESDIR}"/12.1.0.2-makefile.patch )
-
 set_my_abivars() {
        S="${WORKDIR}/${ABI}/instantclient_$(
                replace_version_separator 1 "_" "${MY_PVM}"
@@ -143,14 +139,19 @@ src_unpack() {
        done
 }
 
+src_prepare() {
+       use sdk && PATCHES=( "${FILESDIR}"/12.1.0.2-makefile.patch )
+       default
+}
+
 # silence configure&compile messages from multilib-minimal
 src_configure() { :; }
 src_compile() { :; }
 
 src_install() {
-       # all binaries go here
-       local oracle_home=/usr/$(ABI= get_libdir)/oracle/${MY_PVM}/client
-       into "${oracle_home}"
+       # all content goes here
+       local oracle_home=usr/$(get_libdir)/oracle/${MY_PVM}/client
+       into "/${oracle_home}"
 
        local ldpath= ABI
        for ABI in $(multilib_get_enabled_abis) # last iteration is final ABI
@@ -169,47 +170,83 @@ src_install() {
                # ensure to be linkable
                [[ -e libocci$(get_libname) ]] ||
                dosym libocci$(get_libname ${MY_PVM}) \
-                       "${oracle_home}"/$(get_libdir)/libocci$(get_libname)
+                       "/${oracle_home}"/$(get_libdir)/libocci$(get_libname)
                [[ -e libclntsh$(get_libname) ]] ||
                dosym libclntsh$(get_libname ${MY_PVM}) \
-                       "${oracle_home}"/$(get_libdir)/libclntsh$(get_libname)
+                       "/${oracle_home}"/$(get_libdir)/libclntsh$(get_libname)
 
                # java archives
-               insinto "${oracle_home}"/$(get_libdir)
+               insinto "/${oracle_home}"/$(get_libdir)
                doins *.jar
 
                # runtime library path
-               ldpath+=${ldpath:+:}${oracle_home}/$(get_libdir)
+               ldpath+=${ldpath:+:}/${oracle_home}/$(get_libdir)
 
                eend $?
        done
 
-       # ensure ORACLE_HOME/lib exists
-       [[ -e ${ED}${oracle_home}/lib ]] ||
-       dosym $(get_libdir) "${oracle_home}"/lib
+       local DOCS=()
+       local HTML_DOCS=()
+       local paxbins=( adrci genezi uidrvci )
+       local scripts=()
+
+       use sqlplus && paxbins+=( sqlplus )
+       use tools   && paxbins+=( wrc )
 
-       einfo "Installing SDK ..."
-       cd "${S}"/sdk || die
-
-       # SDK makefile, for #165834
-       # As we change the relative filesystem layout compared
-       # to vanilla instantclient.zip content, it feels easier
-       # to fake the layout found in Oracle eXpress Edition.
-       # Both layouts are known to DBD::Oracle (cpan).
-       insinto "${oracle_home}"/rdbms/demo
-       newins demo/demo.mk demo_xe.mk
-
-       # Remove ldap.h, #299562
-       rm include/ldap.h || die
-       # DBD::Oracle needs rdbms/public as real directory
-       insinto "${oracle_home}"/rdbms/public
-       doins include/*.h
-       dosym rdbms/public "${oracle_home}"/include
-       # ruby-oci8 expects the headers here
-       dosym "${oracle_home}"/rdbms/public /usr/include/oracle/${MY_PVM}/client
+       if use odbc; then
+               scripts+=( odbc_update_ini.sh )
+               HTML_DOCS+=( ODBC_IC_Readme_Unix.html help )
+       fi
 
+       einfo "Installing binaries for ${MY_PLAT} ..."
+       dobin ${paxbins[@]} ${scripts}
+       cd "${ED}${oracle_home}"/bin || die
+       pax-mark -c ${paxbins[@]} || die
+       cd "${S}" || die
        eend $?
 
+       if use sqlplus; then
+               insinto "/${oracle_home}"/sqlplus/admin
+               doins glogin.sql
+               dosym "/${oracle_home}"/bin/sqlplus /usr/bin/sqlplus
+       fi
+
+       if use sdk; then
+               einfo "Installing SDK ..."
+
+               DOCS+=( sdk/demo )
+               cd "${S}"/sdk || die
+
+               # SDK makefile, for #165834
+               # As we change the relative filesystem layout compared
+               # to vanilla instantclient.zip content, it feels easier
+               # to fake the layout found in Oracle eXpress Edition.
+               # Both layouts are known to DBD::Oracle (cpan).
+               insinto "/${oracle_home}"/rdbms/demo
+               newins demo/demo.mk demo_xe.mk
+
+               # Remove ldap.h, #299562
+               rm include/ldap.h || die
+               # DBD::Oracle needs rdbms/public as real directory
+               insinto "/${oracle_home}"/rdbms/public
+               doins include/*.h
+               dosym rdbms/public "/${oracle_home}"/include
+               # ruby-oci8 expects the headers here
+               dosym "/${oracle_home}"/rdbms/public /usr/include/oracle/${MY_PVM}/client
+
+               # ott
+               insinto "/${oracle_home}"/$(get_libdir)
+               dobin ott
+               doins *.zip
+
+               # more files found in the zip
+               insinto "/${oracle_home}"/admin
+               doins admin/oraaccess.xsd
+
+               eend $?
+       fi
+
+       cd "${S}" || die
        einstalldocs
 
        # create path for tnsnames.ora
@@ -221,12 +258,16 @@ src_install() {
                echo "# ${EPREFIX}/etc/env.d/50${PN}"
                echo "# Do not edit this file, but 99${PN} instead"
                echo
-               echo "ORACLE_HOME=${EPREFIX}${oracle_home}"
+               echo "ORACLE_HOME=${EPREFIX}/${oracle_home}"
                echo "LDPATH=${ldpath}"
                echo "TNS_ADMIN=/etc/oracle/"
        } > "${T}"/50${PN}
 
        doenvd "${T}"/50${PN}
+
+       # ensure ORACLE_HOME/lib exists
+       [[ -e ${ED}${oracle_home}/lib/. ]] ||
+       dosym $(get_libdir) "${oracle_home}"/lib
 }
 
 pkg_preinst() {