diff -Naur DBD-Sybase-1.09/CHANGES DBD-Sybase-1.09.oden/CHANGES --- DBD-Sybase-1.09/CHANGES 2008-08-31 14:08:17.000000000 +0200 +++ DBD-Sybase-1.09.oden/CHANGES 2008-09-29 15:36:33.000000000 +0200 @@ -16,6 +16,11 @@ 628 - Increase size of Kerberos Principal string buffer 627 - Spurious sigset_t declaration. +Release 1.08.1.binck + + 23/05/2007 Simon J Mudd <smudd@binck.nl> + Changes to make this work on RHEL4 x86_64 with freetds. + Release 1.08 Detect missing libblk.a library, and disable the BLK api calls diff -Naur DBD-Sybase-1.09/Makefile.PL DBD-Sybase-1.09.oden/Makefile.PL --- DBD-Sybase-1.09/Makefile.PL 2007-04-10 17:42:21.000000000 +0200 +++ DBD-Sybase-1.09.oden/Makefile.PL 2008-09-29 15:36:33.000000000 +0200 @@ -23,6 +23,7 @@ my $chained; my $threaded_libs; my $accept_test_defaults; +my $libdir; GetOptions('--file' => \$file, '--chained:s' => \$chained, '--threaded_libs:s' => \$threaded_libs, '--accept_test_defaults' => \$accept_test_defaults); @@ -34,9 +35,9 @@ configPwd(); my $lddlflags = $Config{lddlflags}; -$lddlflags = "-L$SYBASE/lib $lddlflags" unless $^O eq 'VMS'; +$lddlflags = "-L$SYBASE/$libdir $lddlflags" unless $^O eq 'VMS'; my $ldflags = $Config{ldflags}; -$ldflags = "-L$SYBASE/lib $ldflags" unless $^O eq 'VMS'; +$ldflags = "-L$SYBASE/$libdir $ldflags" unless $^O eq 'VMS'; WriteMakefile('NAME' => 'DBD::Sybase', @@ -78,6 +79,18 @@ }; } + # Determine the correct lib directory to use. + # On Linux x86_64 (RHEL at least) we must use the 64-bit libraries. + # - these are located in /usr/lib64, /lib64... + # if ( $Config{archname} =~ /^x86_64-/ ) { OLD CHECK - LESS GENERIC + if ( $Config{use64bitall} and -d '/lib64' ) { + print "Setting libdir to lib64 [for 64-bit libraries]\n"; + $libdir = 'lib64'; + } else { + print "Setting libdir to lib\n"; + $libdir = 'lib'; + } + open(IN, "CONFIG") || die "Can't open CONFIG: $!"; while(<IN>) { chomp; @@ -114,11 +127,11 @@ $SYBASE .= "/$ENV{SYBASE_OCS}"; } - if(! -d "$SYBASE/lib") { + if(! -d "$SYBASE/$libdir") { die "Can't find the lib directory under $SYBASE!"; } - die "Can't find any Sybase libraries in $SYBASE/lib" unless checkLib($SYBASE); + die "Can't find any Sybase libraries in $SYBASE/$libdir" unless checkLib($SYBASE); my $inc_found = 0; if(-d "$SYBASE/include" && -f "$SYBASE/include/cspublic.h") { @@ -144,11 +157,11 @@ # print "OS = $^O\n"; if($^O eq 'MSWin32') { - $lib_string = "-L$SYBASE/lib -llibct.lib -llibcs.lib -llibtcl.lib -llibcomn.lib -llibintl.lib -llibblk.lib $attr{EXTRA_LIBS} -lm"; + $lib_string = "-L$SYBASE/$libdir -llibct.lib -llibcs.lib -llibtcl.lib -llibcomn.lib -llibintl.lib -llibblk.lib $attr{EXTRA_LIBS} -lm"; } elsif($^O eq 'VMS') { - $lib_string = "-L$SYBASE/lib -llibct.olb -llibcs.olb -llibtcl.olb -llibcomn.olb -llibintl.olb -llibblk.olb $attr{EXTRA_LIBS}"; + $lib_string = "-L$SYBASE/$libdir -llibct.olb -llibcs.olb -llibtcl.olb -llibcomn.olb -llibintl.olb -llibblk.olb $attr{EXTRA_LIBS}"; } elsif($^O =~ /cygwin/) { - $lib_string = "-L$SYBASE/lib -lct -lcs -lblk"; + $lib_string = "-L$SYBASE/$libdir -lct -lcs -lblk"; $inc_string .= " -D_MSC_VER=800"; } else { # Supplied by Erick Calder. I'm not sure why libsybsrv is needed... @@ -156,9 +169,9 @@ my $extra = getExtraLibs($SYBASE, $attr{EXTRA_LIBS}, $version); if($file) { - $lib_string = "-L$SYBASE/lib -lct -lcs -ltcl -lcomn -lintl -lblk $attr{EXTRA_LIBS} -ldl -lm"; + $lib_string = "-L$SYBASE/$libdir -lct -lcs -ltcl -lcomn -lintl -lblk $attr{EXTRA_LIBS} -ldl -lm"; } else { - $lib_string = "-L$SYBASE/lib -lct -lcs -ltcl -lcomn -lintl -lblk $extra -ldl -lm"; + $lib_string = "-L$SYBASE/$libdir -lct -lcs -ltcl -lcomn -lintl -lblk $extra -ldl -lm"; } if($newlibnames) { foreach (qw(ct cs tcl comn intl blk)) { @@ -170,7 +183,7 @@ my %libname; - %libname = loadSybLibs("$SYBASE/lib"); + %libname = loadSybLibs("$SYBASE/$libdir"); my $libtype = ''; @@ -193,7 +206,7 @@ } if(!$found) { print "No thread-safe Sybase libraries found\n"; - $inc_string .= ' -DNO_THREADS '; + $inc_string .= ' -DNO_THREADS'; } else { $libtype .= '_r'; } @@ -282,7 +295,7 @@ sub getLibVersion { my $dir = shift; - my $lib = "$dir/lib"; + my $lib = "$dir/$libdir"; opendir(DIR, $lib); # reverse to pick up libsybct before libct... my @files = reverse(grep(/lib(syb)?ct(64)?\./, readdir(DIR))); @@ -317,8 +330,8 @@ my $cfg = shift; my $version = shift; - opendir(DIR, "$dir/lib") || die "Can't access $dir/lib: $!"; - my %files = map { $_ =~ s/lib([^\.]+)\..*/$1/; $_ => 1 } grep(/lib/ && -f "$dir/lib/$_", readdir(DIR)); + opendir(DIR, "$dir/$libdir") || die "Can't access $dir/$libdir: $!"; + my %files = map { $_ =~ s/lib([^\.]+)\..*/$1/; $_ => 1 } grep(/$libdir/ && -f "$dir/$libdir/$_", readdir(DIR)); closedir(DIR); my %x = map {$_ => 1} split(' ', $cfg); @@ -331,7 +344,7 @@ } foreach my $f (qw(insck tli sdna dnet_stub tds skrb gss)) { - $x{"-l$f"} = 1 if exists $files{$f} && -f "$dir/lib/lib$f.$dlext"; + $x{"-l$f"} = 1 if exists $files{$f} && -f "$dir/$libdir/lib$f.$dlext"; } if($version gt '11') { delete($x{-linsck}); @@ -348,7 +361,7 @@ sub checkLib { my $dir = shift; - opendir(DIR, "$dir/lib") || die "Can't access $dir/lib: $!"; + opendir(DIR, "$dir/$libdir") || die "Can't access $dir/$libdir: $!"; my @files = grep(/libct|libsybct/i, readdir(DIR)); closedir(DIR); if(grep(/libsybct/, @files)) {