From 84f9ce9150abfb5f4424d8e94fefa932af3172fa Mon Sep 17 00:00:00 2001 From: Constantin Michael Date: Fri, 2 Sep 2011 14:15:46 +0200 Subject: Add infrastructure for oracle development testing and implement native test --- build/bootstrap.make | 2 +- build/configure | 3 +- build/import/libodb-oracle/LICENSE | 12 ++++ .../import/libodb-oracle/configuration-rules.make | 15 +++++ build/import/libodb-oracle/configure | 55 ++++++++++++++++ build/import/libodb-oracle/stub.make | 30 +++++++++ build/oracle/configure | 75 ++++++++++++++++++++++ build/oracle/oracle | 73 +++++++++++++++++++++ 8 files changed, 263 insertions(+), 2 deletions(-) create mode 100644 build/import/libodb-oracle/LICENSE create mode 100644 build/import/libodb-oracle/configuration-rules.make create mode 100755 build/import/libodb-oracle/configure create mode 100644 build/import/libodb-oracle/stub.make create mode 100755 build/oracle/configure create mode 100755 build/oracle/oracle (limited to 'build') diff --git a/build/bootstrap.make b/build/bootstrap.make index 3c5ca1e..f59e809 100644 --- a/build/bootstrap.make +++ b/build/bootstrap.make @@ -62,7 +62,7 @@ ifeq ($(dist_prefix),) $(error dist_prefix is not set) endif -databases := mysql sqlite pgsql +databases := mysql sqlite pgsql oracle $(dist): databases := $(databases) # $1 project template without the -vcN.vc[x]proj suffix. diff --git a/build/configure b/build/configure index 70413fc..9aee64a 100755 --- a/build/configure +++ b/build/configure @@ -25,9 +25,10 @@ $echo $echo "(1) MySQL" $echo "(2) SQLite" $echo "(3) PostgreSQL" +$echo "(4) Oracle" $echo -db_id=`read_option "mysql sqlite pgsql"` +db_id=`read_option "mysql sqlite pgsql oracle"` echo "db_id := $db_id" >$1 diff --git a/build/import/libodb-oracle/LICENSE b/build/import/libodb-oracle/LICENSE new file mode 100644 index 0000000..ed9c55c --- /dev/null +++ b/build/import/libodb-oracle/LICENSE @@ -0,0 +1,12 @@ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License version 2 as +published by the Free Software Foundation. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/build/import/libodb-oracle/configuration-rules.make b/build/import/libodb-oracle/configuration-rules.make new file mode 100644 index 0000000..a4a8c99 --- /dev/null +++ b/build/import/libodb-oracle/configuration-rules.make @@ -0,0 +1,15 @@ +# file : build/import/libodb-oracle/configuration-rules.make +# author : Constantin Michael +# copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC +# license : ODB NCUEL; see accompanying LICENSE file + +$(dcf_root)/import/libodb-oracle/configuration-dynamic.make: | $(dcf_root)/import/libodb-oracle/. + $(call message,,$(scf_root)/import/libodb-oracle/configure $@) + +ifndef %foreign% + +$(dcf_root)/.disfigure:: + $(call message,rm $(dcf_root)/import/libodb-oracle/configuration-dynamic.make,\ +rm -f $(dcf_root)/import/libodb-oracle/configuration-dynamic.make) + +endif diff --git a/build/import/libodb-oracle/configure b/build/import/libodb-oracle/configure new file mode 100755 index 0000000..9934d03 --- /dev/null +++ b/build/import/libodb-oracle/configure @@ -0,0 +1,55 @@ +#! /usr/bin/env bash + +# file : build/import/libodb-oracle/configure +# author : Constantin Michael +# copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC +# license : ODB NCUEL; see accompanying LICENSE file + + +# $1 - out file +# +# bld_root - build root +# project_name - project name +# + +source $bld_root/dialog.bash + + +$echo +$echo "Configuring external dependency on 'libodb-oracle' for '$project_name'." +$echo + +$echo +$echo "Would you like to configure dependency on the installed version" +$echo "of 'libodb-oracle' as opposed to the development build?" +$echo + +installed=`read_y_n y` + +path= + +if [ "$installed" = "n" ]; then + +$echo +$echo "Please enter the src_root for 'libodb-oracle'." +$echo + +src_root=`read_path --directory --exist` + +$echo +$echo "Please enter the out_root for 'libodb-oracle'." +$echo + +out_root=`read_path --directory $src_root` + +fi + +echo libodb_oracle_installed := $installed >$1 + +if [ "$installed" = "n" ]; then + +echo src_root := $src_root >>$1 +echo scf_root := \$\(src_root\)/build >>$1 +echo out_root := $out_root >>$1 + +fi diff --git a/build/import/libodb-oracle/stub.make b/build/import/libodb-oracle/stub.make new file mode 100644 index 0000000..2432246 --- /dev/null +++ b/build/import/libodb-oracle/stub.make @@ -0,0 +1,30 @@ +# file : build/import/libodb-oracle/stub.make +# author : Constantin Michael +# copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC +# license : ODB NCUEL; see accompanying LICENSE file + +$(call include-once,$(scf_root)/import/libodb-oracle/configuration-rules.make,$(dcf_root)) + +libodb_oracle_installed := + +$(call -include,$(dcf_root)/import/libodb-oracle/configuration-dynamic.make) + +ifdef libodb_oracle_installed + +ifeq ($(libodb_oracle_installed),y) + +$(call export,l: -lodb-oracle -lodb -lclntsh,cpp-options: ) + +else + +# Include export stub. +# +$(call include,$(scf_root)/export/libodb-oracle/stub.make) + +endif + +else + +.NOTPARALLEL: + +endif diff --git a/build/oracle/configure b/build/oracle/configure new file mode 100755 index 0000000..46e5061 --- /dev/null +++ b/build/oracle/configure @@ -0,0 +1,75 @@ +#! /usr/bin/env bash + +# file : build/oracle/configure +# author : Constantin Michael +# copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC +# license : ODB NCUEL; see accompanying LICENSE file + +# +# dcf_root - dynamic configuration root +# + +$echo +$echo "Please enter the Oracle client program path." +$echo + +driver=`read_path --command sqlplus` + +$echo +$echo "Please enter the Oracle database user." +$echo + +user=`read_value "odb_test"` + +$echo +$echo "Please enter the Oracle database password." +$echo + +passwd=`read_value ""` + +$echo +$echo "Please enter the Oracle listener host." +$echo + +host=`read_value ""` + +$echo +$echo "Please enter the Oracle listener port." +$echo + +port=`read_value ""` + +$echo +$echo "Please enter the Oracle service to use. Note that the associated" +$echo "database WILL BE MODIFIED." +$echo + +service=`read_value ""` + +opt=$dcf_root/db.options +drv=$dcf_root/db-driver + +if [ -n "$user" ]; then +echo "--user '$user'" >$opt +fi + +if [ -n "$passwd" ]; then +echo "--password '$passwd'" >>$opt +fi + +if [ -n "$service" ]; then +echo "--service '$service'" >>$opt +fi + +if [ -n "$host" ]; then +echo "--host '$host'" >>$opt +fi + +if [ -n "$port" ]; then +echo "--port '$port'" >>$opt +fi + +echo "#!/bin/sh" >$drv +echo "opt=\`cat $opt\`" >>$drv +echo "eval $scf_root/oracle/oracle --driver $driver \$opt \$*" >>$drv +chmod 755 $drv diff --git a/build/oracle/oracle b/build/oracle/oracle new file mode 100755 index 0000000..76badcb --- /dev/null +++ b/build/oracle/oracle @@ -0,0 +1,73 @@ +#! /usr/bin/env bash + +# file : build/oracle/oracle +# author : Constantin Michael +# copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC +# license : ODB NCUEL; see accompanying LICENSE file + +# +# Oracle driver wrapper. +# + +while [ $# -gt 0 ]; do + case $1 in + --driver) + driver=$2 + shift 2 + ;; + --user) + user="$2" + shift 2 + ;; + --password) + passwd="$2" + shift 2 + ;; + --service) + service="$2" + shift 2 + ;; + --host) + host="$2" + shift 2 + ;; + --port) + port="$2" + shift 2 + ;; + *) + break + ;; + esac +done + +if [ -z "$driver" ]; then + driver=sqlplus +fi + +opt="-L" +conn=$user + +if [ -n "$passwd" ]; then + conn="$conn/$passwd" +fi + +if [ -n "$host" ]; then + conn="$conn@//$host" + + if [ -n "$port" ]; then + conn="$conn:$port" + fi + + if [ -n "$service" ]; then + conn="$conn/$service" + fi +elif [ -n "$service" ]; then + conn="$conn@$service" +fi + +if [ -n "$1" ]; then + exec $driver $opt $conn <$1 +else + exec $driver $opt $conn +fi -- cgit v1.1