Updated to 0.40 (many bugfixes)

This commit is contained in:
Sergey Skvortsov 2002-09-10 12:46:54 +00:00
parent 8225749b43
commit de549fa0b2
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=66046
5 changed files with 73 additions and 439 deletions

View File

@ -6,8 +6,7 @@
#
PORTNAME= DBD-InterBase
PORTVERSION= 0.30
PORTREVISION= 1
PORTVERSION= 0.40
CATEGORIES= databases perl5
MASTER_SITES= ${MASTER_SITE_PERL_CPAN}
MASTER_SITE_SUBDIR= DBD
@ -24,7 +23,6 @@ PERL_CONFIGURE= yes
post-patch:
@${PERL} -pi -e 's,%%IB_BASE%%,${PREFIX}/firebird,g' \
${WRKSRC}/Makefile.PL
@${PERL} -pi -e 's|6|7| if $$.==399' ${WRKSRC}/dbdimp.c
MAN3= Bundle::DBD::InterBase.3 DBD::InterBase.3 DBD::InterBase::FAQ.3
MAN3PREFIX= ${PREFIX}/lib/perl5/${PERL_VERSION}

View File

@ -1 +1 @@
MD5 (DBD-InterBase-0.30.tar.gz) = 8602958c02671223dc4b5a6770c3d886
MD5 (DBD-InterBase-0.40.tar.gz) = 18926bed17a4d9c8f91c1460aceb1394

View File

@ -1,67 +1,18 @@
--- Makefile.PL.orig Fri Apr 5 07:35:30 2002
+++ Makefile.PL Sat Apr 6 15:16:46 2002
@@ -16,8 +16,6 @@
use Carp;
use strict;
use File::Basename;
-use vars qw($Registry);
-
--- Makefile.PL.OOO Thu Jul 18 21:02:53 2002
+++ Makefile.PL Thu Jul 18 21:16:22 2002
@@ -28,6 +28,7 @@
# This DBI must be installed before we can build a DBD.
# For those not using Dynamic loading this means building a
@@ -29,55 +27,12 @@
my $ib_dir_prefix;
+=rem
# init stuff
-my $IB_Bin_path = '';
-my $isql_name;
-my @ib_bin_dirs;
-my @ib_inc_dirs;
-my $ib_lib_dir = '';
-
-################################################################################
-# OS specific configuration
-################################################################################
-if ($Config::Config{osname} eq 'MSWin32')
-{
- $isql_name = 'isql.exe';
-
- # try to find InterBase installation via the registry
- my $ib_bin_dir = '';
-
- eval
- {
- require Win32::TieRegistry;
- Win32::TieRegistry->import('$Registry');
- $Registry->Delimiter("/");
-
- my $sw = $Registry->{"LMachine/Software/"};
-
- # We have to check more than one keys, because different
- # releases of InterBase have used different key hierarchies.
-
- my $key = $sw->{"InterBase Corp/InterBase/CurrentVersion/"} ||
- $sw->{"Borland/InterBase/CurrentVersion/"} ||
- $sw->{"FirebirdSQL/Firebird/CurrentVersion/"};
- if (defined($key))
- {
- $ib_bin_dir = $key->{"/ServerDirectory"};
- $ib_lib_dir = $key->{"/RootDirectory"};
- }
- };
-
- $ib_lib_dir .= '\\' unless ($ib_lib_dir =~ m|^.*\\$|gi);
-
- @ib_bin_dirs = ($ib_bin_dir);
- @ib_inc_dirs = ($ib_lib_dir . "SDK\\include", $ib_lib_dir . "include");
-}
-else
-{
- $isql_name = 'isql';
- @ib_bin_dirs = (qw(/usr/interbase/bin /opt/interbase/bin /usr/bin /usr/local/bin));
- @ib_inc_dirs = (qw(/usr/interbase/include /opt/interbase/include /usr/include));
-}
my $IB_Bin_path = '';
my $isql_name;
@@ -78,6 +79,12 @@
@ib_bin_dirs = (qw(/usr/interbase/bin /opt/interbase/bin /usr/bin /usr/local/bin));
@ib_inc_dirs = (qw(/usr/interbase/include /opt/interbase/include /usr/include));
}
+=cut
+my $IB_BASE='%%IB_BASE%%';
+my $IB_Bin_path = $IB_BASE.'/bin';
+my $isql_name = 'isql';
@ -70,405 +21,73 @@
sub locate_dbi_arch_dir {
my $dbidir = dbd_dbi_dir();
@@ -89,199 +44,18 @@
@@ -88,6 +95,7 @@
return $xst[0];
}
+=rem
################################################################################
-# sub test_files - checks if at least one of the files in the list exists
-# Paramters:
-# 0: directory
-# 1: reference to file list
-# Return value: true value if at least on file exists, 0 otherwise
-################################################################################
-sub test_files
-{
- my($dir, $files) = @_;
- local $_;
- -f "$dir/$_" && return $_ for @$files;
- 0;
-}
-
-################################################################################
-# sub dir_choice - prompts for a directory
-# Parameters:
-# 0: prompt string
-# 1: reference to directory list
-# 2: reference to file list
-# Return value: directory name
-################################################################################
-sub dir_choice
-{
- my($prompt, $dirs, $files) = @_;
- my %dirs;
- my $i;
- my $ret;
-
- test_files($_, $files) && ($dirs{++$i} = $_) for @$dirs;
- for (1..3)
- {
- foreach my $d (sort keys %dirs) {
- my $choice = prompt("$prompt :", $dirs{$d});
- return $choice if test_files($choice, $files);
- }
- }
- print "Cannot proceed. Aborting..\n";
-}
-
-################################################################################
-# sub make_test_conf - configure for test (save to ./t/test.conf)
-# Parameters: <none>
-# Return value: <none>
-################################################################################
-sub make_test_conf
-{
- my $test_conf = './t/test.conf';
- my ($dsn, $user, $pass, $path);
-
- # read cached config if available
- if (-r $test_conf)
- {
- print "\nReading cached test configuration...";
- open F, $test_conf or die "Can't open $test_conf: $!";
- local @ARGV = ($test_conf);
- ($dsn, $user, $pass) = map {chomp;$_} <>;
- ($path) = $dsn =~ /(?!db|database)=([^;]+);/;
- close F;
- }
-
- # ask for database path
- for (1..3)
- {
- $path = prompt("\nFull path to your test database :", $path);
- last if $path;
- }
-
- die "Must specify a test database" unless $path;
-
- #PFW - isql on windows doesn't seem to work without the localhost in the db path
- my $hostpath = $path;
- if ($path =~ /^localhost:(.+)/) {
- $hostpath = $1;
- }
- # if DB doesn't exist ask for creation
- unless (-f $hostpath)
- {
- print <<"EOM";
-Can't find $path
-Trying to create the test database..
-Please enter a username with CREATE DATABASE permission.
-EOM
-
- $user = prompt("Username :", $user);
- $pass = prompt("Password :", $pass);
- create_test_db($path, $user, $pass);
- }
- else
- {
- $user = prompt("Username :", $user);
- $pass = prompt("Password :", $pass);
- }
-
- # save test config to file
- open F, ">$test_conf" or die "Can't write $test_conf: $!";
- print F "dbi:InterBase:db=$path;ib_dialect=3\n$user\n$pass\n";
- close F;
-}
-
-################################################################################
-# sub create_test_db - Creates the test database
-# Parameters:
-# 0: path to testdatabase to be created
-# 1: username used to connect to the DB
-# 2: password
-# Return value: <none>
-################################################################################
-sub create_test_db
-{
- my ($path, $user, $pass) = @_;
-
- # create the SQL file with CREATE statement
- open(T, ">./t/create.sql") or die "Can't write to t/create.sql";
- while(<DATA>)
- {
- s/__TESTDB__/$path/;
- s/__USER__/$user/;
- s/__PASS__/$pass/;
- print T;
- }
- close T;
-
- # try to find isql
- my $isql;
- if (-x "$IB_Bin_path/$isql_name") {
- $isql = "$IB_Bin_path/$isql_name";
- } else {
- for (split /:/, $ENV{PATH})
- {
- s#/+$##g;
- if (-x "$_/$isql_name") {
- $isql = "$_/$isql_name"; last;
- }
- }
- }
-
- EXEC:
- {
- for (1..3)
- {
- $isql = prompt("Enter full path to isql: ", $isql);
- last EXEC if (-x $isql);
- }
- die "Unable to execute isql. Aborting..";
- }
-
- #PFW - isql on windows doesn't seem to work without the localhost in the db path
- my $hostpath = $path;
- if ($path =~ /^localhost:(.+)/) {
- $hostpath = $1;
- }
- # if test db directory doesn't exist -> try to create
- my $dir = dirname $hostpath;
- unless (-d $dir)
- {
- print "Can't find $dir. Trying to mkdir..\n";
- system('mkdir', '-p', $dir) == 0
- or die "Can't mkdir -p $dir";
- }
-
- # try to execute isql and create the test database
- system($isql, '-i', './t/create.sql') == 0
- or die "Fail calling $isql -i t/create/sql: $?";
-}
-
-################################################################################
# MAIN
################################################################################
# sub test_files - checks if at least one of the files in the list exists
# Paramters:
@@ -264,6 +272,7 @@
# See lib/ExtUtils/MakeMaker.pm for details of how to influence
# the contents of the Makefile that is written.
# prompt for InterBase bin directory
$IB_Bin_path = dir_choice("InterBase bin directory", [@ib_bin_dirs], [qw(gfix gfix.exe)]);
+=cut
-# prompt for InterBase bin directory
-$IB_Bin_path = dir_choice("InterBase bin directory", [@ib_bin_dirs], [qw(gfix gfix.exe)]);
-
unless(-x $IB_Bin_path)
{
carp "I cannot find your InterBase installation.\nDBD::InterBase cannot build or run without InterBase.\n";
@@ -271,6 +280,7 @@
exit 1;
}
-# get InterBase version
-my $IBVERSION;
-my $GFIX_PATH = $IB_Bin_path . "/" . test_files($IB_Bin_path, [qw(gfix gfix.exe)]);
-chop($IBVERSION = `$GFIX_PATH -z 2>&1`);
-$IBVERSION =~ s/^gfix version //o;
-my $is_final = $IBVERSION =~ /\.6\d+$/ ? 1 : 0;
-
-# prompt for IB include dir
-my $ib_inc = dir_choice("InterBase include directory", [@ib_inc_dirs], [qw(gds.h ibase.h)]);
-
-
+=rem
# get InterBase version
my $IBVERSION;
my $GFIX_PATH = $IB_Bin_path . "/" . test_files($IB_Bin_path, [qw(gfix gfix.exe)]);
@@ -281,6 +291,7 @@
# prompt for IB include dir
my $ib_inc = dir_choice("InterBase include directory", [@ib_inc_dirs], [qw(gds.h ibase.h)]);
+=cut
# we use a hash for the MakeMaker parameters
my %MakeParams = (
'NAME' => 'DBD::InterBase',
@@ -291,7 +65,7 @@
@@ -291,7 +302,7 @@
'CCFLAGS' => '',
'INC' => qq(-I$ib_inc -I${\locate_dbi_arch_dir()}),
'INC' => qq(-I"$ib_inc" -I"${\locate_dbi_arch_dir()}"),
'OBJECT' => "InterBase.o dbdimp.o",
- 'LIBS' => [''],
+ 'LIBS' => "-L$ib_lib_dir -lgds",
'OPTIMIZE' => $Config::Config{'optimize'},
'XSPROTOARG' => '-noprototypes',
'dist' => {COMPRESS=>'gzip -9f', SUFFIX=>'gz'},
@@ -299,181 +73,6 @@
@@ -299,6 +310,7 @@
'realclean' => {FILES => "t/test.conf"},
);
-# the OS specific build environment setup
-my $os = $Config::Config{'osname'};
-if ($os eq 'MSWin32')
-{
- # set up PPM package parameters
- $MakeParams{'AUTHOR'} = 'Edwin Pratomo (edpratomo@users.sourceforge.net)';
- $MakeParams{'ABSTRACT'} = 'DBD::InterBase is a DBI driver for Firebird and InterBase, written using InterBase C API.';
-
- my $vc_dir = '';
- if ($Config::Config{'cc'} eq "cl")
- {
- # try to find Microsoft Visual C++ compiler
- eval
- {
- require Win32::TieRegistry;
- Win32::TieRegistry->import('$Registry');
- $Registry->Delimiter("/");
-
- my $sw = $Registry->{"LMachine/Software/"};
-
-
-
- # We have to check more than one keys, because different
- # releases of Visual C++ have used different key hierarchies.
- my $key =
- $sw->{"Microsoft/VisualStudio/6.0/Setup/Microsoft Visual C++"} ||
- $sw->{"Microsoft/VisualStudio/7.0/Setup/VC"};
-
- if (defined($key))
- {
- $vc_dir = $key->{"/ProductDir"};
- }
- };
-
- my @vc_dirs = ($vc_dir . "/bin");
-
- my $VC_PATH = dir_choice("Visual C++ directory", [@vc_dirs], [qw(cl.exe)]);
-
- unless (-x $VC_PATH){
- carp "I can't find your MS VC++ installation.\nDBD::InterBase cannot build.\n";
- exit 1;
- }
-
- my $vc_inc = $VC_PATH . "/include";
- my $vc_lib = $VC_PATH . "/lib";
-
- $INC .= " -I\"$vc_inc\"";
-
- my $ib_lib = dir_choice("InterBase lib directory",
- [$ib_lib_dir . "SDK\\lib_ms", $ib_lib_dir . "lib"],
- [qw(gds32_ms.lib)]);
-
- my $cur_libs = $Config::Config{'libs'} ;
- my $cur_lddlflags = $Config::Config{'lddlflags'} ;
-
- eval "
- sub MY::const_loadlibs {
- '
-LDLOADLIBS = \"$ib_lib/gds32_ms.lib\" \"$ib_lib/ib_util_ms.lib\" $cur_libs
-LDDLFLAGS = /LIBPATH:\"$vc_lib\" $cur_lddlflags
- '
- } ";
- }
- else
- {
- # Borland C++ 5.5
- my $bcc = $Config::Config{'bcc_path'} . "\\";
-
- my $BCC_PATH = dir_choice("Borland C++ directory",
- [qw(c:/borland/bcc55), $bcc],
- [qw(bin/bcc32.exe)]);
-
- unless(-x $BCC_PATH)
- {
- carp "I can't find your Borland C++ installation.\nDBD::InterBase cannot build.\n";
- exit 1;
- }
-
- my $ib_lib = dir_choice("InterBase lib directory",
- [$ib_lib_dir . "SDK\\lib", $ib_lib_dir . "lib"],
- [qw(gds32.lib)]);
-
- my $bcc_inc = $BCC_PATH . "include";
- $MakeParams{'CCFLAGS'} = '-a4 -w- -DWIN32 -DNO_STRICT -DNDEBUG -D_CONSOLE -DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DPERL_MSVCRT_READFIX';
- $MakeParams{'OPTIMIZE'} = "-O2";
- $MakeParams{'INC'} .= " -I\"$bcc_inc\"";
-
- eval "
- sub MY::const_loadlibs {
- '
-LDLOADLIBS = \$(LIBC) import32.lib gds32.lib cw32.lib
-LDDLFLAGS = -L\"$ib_lib\" -L\"$BCC_PATH\\lib\"
- '
- }
- ";
- }
- # Will I need Cygwin rules too?
-}
-elsif ($os eq 'solaris')
-{
- $MakeParams{'LIBS'} = '-lgdsmt -lm -lc';
-}
-elsif ($os eq 'linux')
-{
- # This is for both:
- # o Free IB 4.0 for Red Hat Linux 4.2
- # o Commercial IB 5.1.1 for Red Hat Linux 5.1
- my $ib_lib = dir_choice("InterBase lib directory",
- [qw(/usr/interbase/lib /opt/interbase/lib /usr/lib /usr/local/lib)],
- [qw(libgds.a libgds.so)]);
-
- $MakeParams{'LIBS'} = "-L$ib_lib -lgds -ldl ";
-
- # o Commercial IB 5.1.1 for Red Hat Linux 6.x
- # requires a compatibilty library to resolve
- # symbols such as _xstat that were removed
- # from glibc 2.1. IB 5.6 and later don't need
- # this, but it doesn't hurt to list the library.
- if (-f ('/lib/libNoVersion-2.1.2.so'))
- {
- $MakeParams{'LIBS'} .= ' -lNoVersion-2.1.2'
- }
-}
-elsif ($os eq 'freebsd')
-{
- my $ib_lib = dir_choice("InterBase lib directory",
- [qw(/usr/interbase/lib /usr/lib)],
- [qw(libgds.a libgds.so)]);
- $MakeParams{'LIBS'} = "-L$ib_lib -lgds";
-}
-elsif ($os eq 'hpux')
-{
- $MakeParams{'LIBS'} = '-lgds -ldld';
-}
-elsif ($os eq 'sco')
-{
- # Uncomment this line if you use InterBase 4.0 for SCO OSR5:
- # $LIBS = '-b elf -B dynamic -lgds -lsocket -lcrypt_i';
-
- # Uncomment this line if you use InterBase 5.5 for SCO OSR5:
- $MakeParams{'LIBS'} = '-lgds -lsocket -lcrypt_i -lc -lm';
-}
-elsif ($os eq 'sunos')
-{
- $MakeParams{'LIBS'} = '-lgdslib -ldl';
-}
-elsif ($os eq 'irix')
-{
- $MakeParams{'LIBS'} = '-lgds -lsun';
-}
-elsif ($os eq 'aix')
-{
- $MakeParams{'LIBS'} = '-lgdsshr';
-}
-elsif ($os eq 'dgux')
-{
- $MakeParams{'LIBS'} = '-lgds -lgdsf -ldl -ldgc';
-}
-elsif ($os eq 'osf1')
-{
- $MakeParams{'LIBS'} = '-lgds';
-}
-elsif ($os eq 'sysv')
-{
- $MakeParams{'LIBS'} = '-lgds -lnsl -lsocket -ldl';
-}
-else
-{
- carp "DBD::InterBase is not supported on platform $os.\n";
- exit 1;
-}
-
-# create the test config file
-make_test_conf();
-
+=rem
# the OS specific build environment setup
my $os = $Config::Config{'osname'};
if ($os eq 'MSWin32')
@@ -473,6 +485,7 @@
# create the test config file
make_test_conf();
+=cut
# and last but not least write the makefile
WriteMakefile(%MakeParams);
@@ -482,10 +81,3 @@
@@ -482,6 +495,7 @@
return dbd_postamble(@_);
}
-package main;
-
-# the data used to create the database creation script
-__DATA__
-CREATE DATABASE "__TESTDB__" user "__USER__" password "__PASS__";
-
-quit;
+=rem
package main;
# the data used to create the database creation script
@@ -489,3 +503,4 @@
CREATE DATABASE "__TESTDB__" user "__USER__" password "__PASS__";
quit;
+=cut

View File

@ -0,0 +1,16 @@
--- dbdimp.c.orig Thu Aug 29 06:28:30 2002
+++ dbdimp.c Tue Sep 10 16:35:15 2002
@@ -2430,8 +2430,13 @@
# define S_INT64_DEC_FULL ".%%%dLd%%1Ld"
# define S_INT64_DEC_NOSCALE ".%%1Ld"
#else /* others: linux, xBSD, solaris, hp-ux, ... */
+#ifdef __FreeBSD__
+# define S_INT64_FULL "%%qd.%%%dlld%%1lld"
+# define S_INT64_NOSCALE "%%qd.%%1lld"
+#else
# define S_INT64_FULL "%%lld.%%%dlld%%1lld"
# define S_INT64_NOSCALE "%%lld.%%1lld"
+#endif
# define S_INT64_DEC_FULL ".%%%dlld%%1lld"
# define S_INT64_DEC_NOSCALE ".%%1lld"
#endif

View File

@ -2,6 +2,7 @@ lib/perl5/site_perl/%%PERL_VER%%/%%PERL_ARCH%%/auto/DBD/InterBase/.packlist
lib/perl5/site_perl/%%PERL_VER%%/%%PERL_ARCH%%/Bundle/DBD/InterBase.pm
lib/perl5/site_perl/%%PERL_VER%%/%%PERL_ARCH%%/DBD/InterBase.pm
lib/perl5/site_perl/%%PERL_VER%%/%%PERL_ARCH%%/DBD/InterBase/FAQ.pm
lib/perl5/site_perl/%%PERL_VER%%/%%PERL_ARCH%%/DBD/InterBase/GetInfo.pm
lib/perl5/site_perl/%%PERL_VER%%/%%PERL_ARCH%%/auto/DBD/InterBase/InterBase.bs
lib/perl5/site_perl/%%PERL_VER%%/%%PERL_ARCH%%/auto/DBD/InterBase/InterBase.so
@unexec rmdir %D/lib/perl5/site_perl/%%PERL_VER%%/%%PERL_ARCH%%/Bundle/DBD 2>/dev/null || true