Firstly, a big thank you to everyone on this list (and espcially
Craig) for helping me get this far.  What follows is what I needed to
do to get DBD::ODBC working under Perl 5.8.8 on OpenVMS 8.2-1 Itanium
and some observations/problems.

What I have
===========
OpenVMS 8.2-1
HP C V7.1-011 on OpenVMS IA64 V8.2-1
Installed VMS821I-PCSI-V0100 upgrade
Hardware Integrity rx1620 (loaned to us by HP)
mms (version?)
vmstar (built from sources found in sys$common:[GNV.src.GNV.VMSTAR]
ExtUtils::MakeMaker 6.30 (installed after Perl install)

What didn't work and I gave up with
===================================

Perl 5.6.6 binary from HP's web site because a mms clean always failed
with an access violation which I felt was such a bad sign I gave up
with it.

If you think you too have this problem

perl "-MExtUtils::Command" -e "rm_f" foo.[0-9][0-9]

died with an access violation for me.

Building/Installing Perl
========================

Lesson 1: read the docs, then read them again and don't expect to
login to OpenVMS 8 and expect it not to have changed since V5. I
wasted some time fighting ODS5 with GNU tar until vmstar and the
/ODS2 (or o switch) was found. The symptom of this is untarring perl
5.8.8 to get a very stange (for an old VMS hand) looking PERL-5^.8^.8
directory.

Configuration was fine (note I did not enable ithreads)

Building kept failing and I noticed messages saying .EXISTS files are
in the future.

e.g.

%MMS-W-GMFUTURE, Time for [-.BLIB.MAN3].EXISTS is in the future:
6-AUG-2006 12:29:13.00

I am prepared to admit there is something wrong with my setup, CRTL
(whatever) but I don't know what it is. I have double checked
localtime and gmtime functions in CRTL and they appear to return the
correct results. However:

$ perl -"MExtUtils::Command" -e touch foo.tmp
$ dir/full foo.tmp

Directory DKA0:[NICK.MARTIN]

FOO.TMP;1                     File ID:  (24832,28,0)
Size:            0/0          Owner:    [200,1]
Created:     7-AUG-2006 08:40:44.67
Revised:     7-AUG-2006 09:40:44.00 (1)

and I am suspicious of that revision time since it is one hour in the
future.

FYI. When I ran @SYS$MANAGER:UTC$TIME_SETUP SHOW I got:

AUTO_DLIGHT_SAV is set to "0" and DTSS is not in use.
You will have to manually change to/from Daylight Saving Time.

You can do this by executing SYS$MANAGER:UTC$TIME_SETUP.COM,
or you can use SYS$EXAMPLES:DAYLIGHT_SAVING.COM.


    LOCAL TIME ZONE          = GB -- DAYLIGHT TIME
    LOCAL SYSTEM TIME        =  6-AUG-2006 11:20:11.58 (BST)
    TIME DIFFERENTIAL FACTOR = 1:00
    TIME ZONE RULE           = GMT0BST-1,M3.4.0/01,M10.5.0/02
    Change GMT to BST on the Fourth Sunday of March (26-Mar-2006) at
01:00
    Change BST to GMT on the Last Sunday of October (29-Oct-2006) at
02:00

I tried installing VMS821I_UPDATE-V0300.ZIPEXE but that did not fix
the problem.

The only thing that worked for me was the change Craig posted:

--- lib/ExtUtils/Command.pm;-0  Fri Oct 21 03:55:12 2005
+++ lib/ExtUtils/Command.pm     Sun Aug  6 13:30:45 2006
@@ -149,12 +149,11 @@ Makes files exist, with current timestam
 =cut

 sub touch {
-    my $t    = time;
     expand_wildcards();
     foreach my $file (@ARGV) {
         open(FILE,">>$file") || die "Cannot write $file:$!";
         close(FILE);
-        utime($t,$t,$file);
+        utime(undef,undef,$file);
     }
 }

A mms test for perl gave the following errors:

t/io/fs...................................FAILED at test 5
t/op/stat.................................FAILED at test 33
ext/Devel/PPPort/t/ppphtest...............FAILED--unexpected output at test 0
ext/List/Util/t/p_tainted.................FAILED--no leader found
ext/List/Util/t/weak......................FAILED--unexpected output at test 7
lib/ExtUtils/t/basic......................FAILED at test 67
lib/ExtUtils/t/Command....................FAILED at test 8
lib/ExtUtils/t/Constant...................FAILED at test 23
lib/ExtUtils/t/FIRST_MAKEFILE.............FAILED at test 4
lib/ExtUtils/t/PL_FILES...................FAILED at test 3
lib/vmsish................................FAILED at test 22

Failed 13 test scripts out of 892, 98.54% okay.
### Since not all tests were successful, you may want to run some of
### them individually and examine any diagnostic messages they produce.
### See the INSTALL document's section on "make test".
### You have a good chance to get more information by running
###   ./perl harness
### in the 't' directory since most (>=80%) of the tests succeeded.
u=40.80  s=0.00  cu=0.00  cs=0.00  scripts=892  tests=114061

and a mms install hung with:

$ mms install

%DCL-I-SUPERSEDE, previous value of PERL_ROOT has been superseded
%DCL-I-SUPERSEDE, previous value of PERLSHR has been superseded
If F$TrnLnm("Sys") .nes. "" Then Deass SYS
MCR Sys$Disk:[]miniperl.exe "-I[.lib]" installperl
Deep recursion on subroutine "File::Path::mkpath" at lib/File/Path.pm line 162.

However, I found the following links:

http://www.nntp.perl.org/group/perl.vmsperl/13873 and the followups in
http://www.nntp.perl.org/group/perl.vmsperl/13873
http://www.nntp.perl.org/group/perl.vmsperl/13883
http://www.nntp.perl.org/group/perl.vmsperl/13884
http://www.nntp.perl.org/group/perl.vmsperl/13885
http://www.nntp.perl.org/group/perl.vmsperl/13891

which got me past this by creating my install dir first (although I
saw the second, better method of removing the \00000).

h2ph is still not working for me. It fails with:

Cannot open perl_root:[lib.site_perl.VMS_IA64]/_h2ph_pre.ph: file
 specification syntax error at perl_root:[utils]h2ph.com line 741.
 %RMS-F-SYN, file specification syntax error

Building/Installing DBI
=======================

Using vmstar to unpack it and the usual perl makefile.pl, mms, mms test
and mms install worked fine for me although warnings like the following
slightly worried me:

Warning: long symbol DBD__Perl__db_selectall_arrayref
        trimmed to DBD_Perl_db_selectal_arayref

Building/Installing DBD::ODBC
=============================

I have not tried this yet with an ODBC driver manager. I linked
DBD::ODBC directly to the driver.

You need to set ODBCHOME, DBI_DSN, DBI_USER and DBI_PASS before
running the configure e.g.

define/log DBI_DSN "dbi:ODBC:test"

Configuration worked fine.

mms to build failed with:

$ mms

MCR dka0:[perl]perl.exe "-MExtUtils::Command" -e cp Changes
[.blib.lib.DBD.ODBC]Changes.pm
@Continue
%DCL-E-OPENIN, error opening DKA0:[NICK.MARTIN.DBD-ODBC-1_13]Continue.COM; as
input
-RMS-E-FNF, file not found
%MMS-F-ABORT, For target CONFIG, CLI returned abort status: %X10018292.

I got around this by creating a continue.com file that was empty.
I've not idea why I need to do this. Is this a bug?

Then the build failed with many PTRMISMATCH1 warnings. I think what has
happened is that this version of decc returns PTRMISMATCH1 instead of
PTRMISMATCH as the cc line contains:

/warnings=informational=(outtypelen,ptrmismatch,promotmatchw)

Changing the ptrmismatch to ptrmismatch1 in the makefile.pl and
rerunning makefile.pl sorts this one out.

As with DBI I got a log of the following warnings:

Warning: long symbol DBD__ODBC__db_selectall_arrayref
        trimmed to DBD_ODBC_db_selectal_arayref

but as they match the ones in DBI I thought it would be OK and it
seems to be.

mms test to MS SQL Server though our ODBC-ODBC Bridge appears to
mostly work with one notable exception.

1..37
ok 1 - use ODBCTEST;
ok 2 - use Data::Dumper;
ok 3 - errors on data comparison
ok 4 - temporary table handling
Can't change param 1 maxlen (51->50) after first bind at t/20sqlserver.t line
180.
# Looks like you planned 37 tests but only ran 4.
# Looks like your test died just after 4.

I've come across this before
see http://www.mail-archive.com/dbi-users@perl.org/msg26946.html

It is not a VMS-specific issue and what seems to be breaking it
is:

svGrow(phs->sv, 50 + 1)
SvLEN(phs->sv) returns 52!

Problem does not exist in perl 5.8.7. This issue was way beyond me back
in March and still is.

Hope this helps anyone else trying to get DBD::ODBC working on
OpenVMS Itanium. If anyone wants to follow up on any of the issues
I had let me know.

Thanks again for all the assistance.

Martin
--
Martin J. Evans
Easysoft Ltd, UK
http://www.easysoft.com

Reply via email to