There were some mails about trouble building
DBI a couple of months back. My problems
were similar, but the suggested fixes did
not work for me.
I had several issues trying to build DBI:
- Missing directory [.BLIB.ARCH.AUTO.DBI]
- Misplaced files: driver.xst driver_xst.h
- Needed to add a line to descrip.mms
- Test case failures
Are these issues likely the result of some
misconfiguration of my system?
The gory details follow.
OS/Tool Version Info...
perlsrc:/dbi-1_32/ perl -v
This is perl, v5.6.1 built for VMS_AXP
perlsrc:/dbi-1_32/ cc /ver
Compaq C V6.5-001 on OpenVMS Alpha V7.3-1
perlsrc:/dbi-1_32/ mms/id
%MMS-I-IDENT, MMS V3.4-3 � Compaq Computer Corporation 2000. � Electronic
Data Systems Limited 1995, 2000
Build Log...
First generate the make file...
perlsrc:/dbi-1_32/ perl Makefile.PL
*** Note:
The optional PlRPC-modules (RPC::PlServer etc) are not installed.
If you want to use the DBD::Proxy driver and DBI::ProxyServer
modules, then you'll need to install the RPC::PlServer, RPC::PlClient,
Storable and Net::Daemon modules. The CPAN Bundle::DBI may help you.
You can install them any time after installing the DBI.
You do *not* need these modules for typical DBI usage.
Optional modules are available from any CPAN mirror, in particular
http://www.perl.com/CPAN/modules/by-module
http://www.perl.org/CPAN/modules/by-module
ftp://ftp.funet.fi/pub/languages/perl/CPAN/modules/by-module
Creating extra DBI::PurePerl test: t/zz_01basics_pp.t
Creating extra DBI::PurePerl test: t/zz_02dbidrv_pp.t
Creating extra DBI::PurePerl test: t/zz_03hleak_pp.t
Creating extra DBI::PurePerl test: t/zz_04mods_pp.t
Creating extra DBI::PurePerl test: t/zz_05thrclone_pp.t
Creating extra DBI::PurePerl test: t/zz_06attrs_pp.t
Creating extra DBI::PurePerl test: t/zz_07kids_pp.t
Creating extra DBI::PurePerl test: t/zz_10examp_pp.t
Creating extra DBI::PurePerl test: t/zz_15array_pp.t
Creating extra DBI::PurePerl test: t/zz_20meta_pp.t
Creating extra DBI::PurePerl test: t/zz_30subclass_pp.t
Creating extra DBI::PurePerl test: t/zz_40profile_pp.t
Creating extra DBI::PurePerl test: t/zz_41prof_dump_pp.t
Creating extra DBI::PurePerl test: t/zz_42prof_data_pp.t
Creating extra DBI::PurePerl test: t/zz_60preparse_pp.t
Creating extra DBI::PurePerl test: t/zz_70shell_pp.t
Creating extra DBI::PurePerl test: t/zz_80proxy_pp.t
Checking if your kit is complete...
Looks good
Warning: I could not locate your pod2man program. As a last choice,
I will look for the file to which the logical name POD2MAN
points when MMK is invoked.
Writing Descrip.MMS for DBI
Remember to actually *read* the README file!
Use 'make' to build the software (dmake or nmake on Windows).
Then 'make test' to execute self tests.
Then 'make install' to install the DBI and then delete this working
directory before unpacking and building any DBD::* drivers.
perlsrc:/dbi-1_32/
Next create a directory and copy some files that the
generated makefile will miss...
perlsrc:/dbi-1_32/ creat/dir [.BLIB.ARCH.AUTO.DBI]
perlsrc:/dbi-1_32/ copy driver.xst [.BLIB.ARCH.AUTO.DBI]
perlsrc:/dbi-1_32/ copy driver_xst.h [.BLIB.ARCH.AUTO.DBI]
perlsrc:/dbi-1_32/
Next edit descrip.mms and add the following line below
the line "config :: $(changes_pm)":
$(NOECHO) $(NOOP)
Then invoke mms...
perlsrc:/dbi-1_32/ mms
perl -p -e "s/~DRIVER~/Perl/g" < [.blib.arch.auto.DBI]Driver.xst >
Perl.xsi
perl "-Iperl_root:[lib.VMS_AXP.5_6_1]" "-Iperl_root:[lib]"
perl_root:[lib.ExtUtils]xsubpp -typemap perl_root:[lib.ExtUtils]
typemap PERL.xs >PERL.C
Warning: long symbol DBD__Perl__db_selectall_arrayref
trimmed to DBD_Perl_db_selectal_arayref
at perl_root:[lib.ExtUtils]xsubpp line 1068
Warning: long symbol DBD__Perl__db_selectrow_arrayref
trimmed to DBD_Pl_db_ser_arayref
at perl_root:[lib.ExtUtils]xsubpp line 1068
Warning: long symbol DBD__Perl__st_bind_param_inout
trimmed to DBD_Perl_st_bind_param_inout
at perl_root:[lib.ExtUtils]xsubpp line 1068
Warning: long symbol DBD__Perl__st_fetchrow_arrayref
trimmed to DBD_Perl_st_fetchrow_arayref
at perl_root:[lib.ExtUtils]xsubpp line 1068
Warning: long symbol DBD__Perl__st_fetchall_arrayref
trimmed to DBD_Perl_st_fetchal_arayref
at perl_root:[lib.ExtUtils]xsubpp line 1068
perlsrc:/dbi-1_32/
My "mms test" results were as follows after I
installed Time::HiRes...
Failed Test Status Wstat Total Fail Failed List of Failed
----------------------------------------------------------------------------
----
t/06attrs.t 125 2 1.60% 61-62
t/10examp.t ?? ?? % ??
t/zz_06attrs_pp.t 125 2 1.60% 61-62
14 tests skipped.
Failed 3/34 test scripts, 91.18% okay. 4/739 subtests failed, 99.46% okay.
%SYSTEM-F-ABORT, abort
%MMS-F-ABORT, For target TEST_DYNAMIC, CLI returned abort status:
%X0000002C.
-SYSTEM-F-ABORT, abort
Those results were good enough for me. At some point I did
some investigation on a slightly different set of test case
failures. Below are my notes:
t/06attrs.t 125 2 1.60% 61-62
Case sensitivity issue (No/no) @ line 101:
Check is:
ok( $err =~ /^DBD::ExampleP::st execute failed: opendir\(foo\): No such
file or directory/ );
$err contains:
DB<2> p $err
DBD::ExampleP::st execute failed: opendir(foo): no such file or directory
at t/06attrs.t line 99.
Case sensitivity issue (No/no) @ line 104:
Check is:
ok( $sth->errstr, 'opendir(foo): No such file or directory' );
$sth->errstr contains:
DB<3> p $sth->errstr
opendir(foo): no such file or directory
----------
t/10examp.t ?? ?? % ??
These all passed when invoked as follows:
perl "-w" "-T" "-I[.blib.arch]" "-I[.blib.lib]" "-Iperl_root:[lib]"
"-Iperl_root:[lib.VMS_AXP.5_6_1]" t/10examp.t
Leaving off the "-T" results in:
Too late for "-T" option at t/10examp.t line 1.
%SYSTEM-F-ABORT, abort
----------
t/40profile.t 100 1024 56 56 100.00% 1-56
Only the last test fails. It seems the log file does
not flush until the program exits. Remove the
following line from 40profile.t to demonstrate this:
END { unlink $LOG_FILE; }
From the debugger, setting a break at the line:
ok(-s $LOG_FILE);
At which point:
perlsrc:/dbi-1_32/ directoryxyz profile.log /size=all
Directory PERLSRC:[000000.DBI-1_32]
PROFILE.LOG;1 0/0
Total of 1 file, 0/0 blocks.
perlsrc:/dbi-1_32/
After the script finishes:
perlsrc:/dbi-1_32/ directoryxyz profile.log /size=all
Directory PERLSRC:[000000.DBI-1_32]
PROFILE.LOG;1 4/6
Total of 1 file, 4/6 blocks.
perlsrc:/dbi-1_32/
----------
t/zz_06attrs_pp.t 125 2 1.60% 61-62
Fails in 06attrs.t for the same reason described above.
----------