Skip Menu |

This queue is for tickets about the DBD-SQLite CPAN distribution.

Report information
The Basics
Id: 2127
Status: resolved
Priority: 0/
Queue: DBD-SQLite

People
Owner: Nobody in particular
Requestors: b_wells [...] appleisp.net
Cc:
AdminCc:

Bug Information
Severity: Important
Broken in: 0.24
Fixed in: (no value)



Subject: Compiling - Win32 - .NET Framework SDK
Perl Module: DBD-SQLite-0.24 Operating System: Windows XP SP1 (5.1.2600) Perl Version: Perl 5.6.1 ActiveState build 630 Compiler: Microsoft .NET Framework SDK Here is a problem I had compiling the module (and a workaround)... D:\SQLite\DBD-SQLite-0.24>perl makefile.pl Checking if your kit is complete... Looks good Using DBI 1.28 installed in V:/PERL/site/lib/auto/DBI Writing Makefile for DBD::SQLite D:\SQLite\DBD-SQLite-0.24>nmake Microsoft (R) Program Maintenance Utility Version 7.00.9466 Copyright (C) Microsoft Corporation. All rights reserved. echo '#include <stdio.h>' >temp.c The system cannot find the file specified. NMAKE : fatal error U1077: 'echo' : return code '0x1' Stop. I took a peek at the makefile and found that the error occurs in the section: config.h: echo '#include <stdio.h>' >temp.c echo 'int main(){printf(' >>temp.c echo '"#define SQLITE_PTR_SZ %d\n",sizeof(char*));' >>temp.c echo 'exit(0);}' >>temp.c $(CC) -o temp temp.c ./temp >config.h rm -f temp.c temp It appears that this is supposed to build a small executable that will create a config.h file with the system pointer size. For some reason, Microsoft's echo does not like the '<' and '>' characters. I'm not sure how to change the makefile.pl to fix this, so here is the workaround: First, I removed the lines under the 'config.h:' section (leaving the 'config.h' line, of course). Then I created the config.h file with the following contents: #define SQLITE_PTR_SZ 4 Since I have a 32-bit system, the pointers are 4 bytes long. Then the build was successful. I'll spare you the output of the build, but will mention that there were a few warnings: cl : Command line warning D4029 : optimization is not available in the standard edition compiler cl : Command line warning D4002 : ignoring unknown option '-O6' The 'free' compiler that comes with the .NET Framework SDK does not to optimization (no surprise there). dbdimp.c(28) : warning C4133: 'function' : incompatible types - from '_PerlIO *' to 'FILE *' d:\sqlite\dbd-sqlite-0.24\dbdimp.c(345) : warning C4716: 'sqlite_bind_ph' : must return a value d:\sqlite\dbd-sqlite-0.24\dbdimp.c(415) : warning C4716: 'sqlite_st_blob_read' : must return a value d:\sqlite\dbd-sqlite-0.24\dbdimp.c(531) : warning C4716: 'sqlite_st_STORE_attrib_k' : must return a value d:\sqlite\dbd-sqlite-0.24\dbdimp.c(536) : warning C4716: 'sqlite_st_FETCH_attrib_k' : must return a value d:\sqlite\dbd-sqlite-0.24\vdbe.c(5509) : warning C4715: 'sqliteVdbeExec' : not all control paths return a value I'm not sure what those warnings are about, but 'nmake test' showed that everything is ok! t\00basic...........ok t\01logon...........ok t\02cr_table........ok t\03insert..........ok t\04select..........ok t\05tran............ok t\06error...........ok t\10dsnlist.........ok t\20createdrop......ok t\30insertfetch.....ok t\40bindparam.......ok t\40blobs...........ok t\40listfields......ok t\40nulls...........ok t\40numrows.........ok t\50chopblanks......ok t\50commit..........ok t\99cleanup.........ok t\ak-dbd............ok t\dbdadmin..........ok All tests successful.