Skip to Content.
Sympa Menu

freetds - [freetds] Notes on buiding for VMS from CVS sources

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: Richard Banks <rbanks AT arel.com.au>
  • To: freetds AT lists.ibiblio.org
  • Subject: [freetds] Notes on buiding for VMS from CVS sources
  • Date: Mon, 16 May 2005 15:55:55 +1000

Hi,

I don't know if anyone has built the system on VMS lately, so I just thought I'd post a few notes about my experience building for VMS using the latest code from the CVS tree (16-May-05).

I'm building for TDS 8.0, MSSQL, without ODBC support.
cc/version = Compaq C V6.5-001 on OpenVMS Alpha V7.2-1
ucx show version = DIGITAL TCP/IP Services for OpenVMS Alpha Version V5.0A - ECO 3

1. The @[.VMS]CONFIGURE.COM file requires the presence of the []CONFIGURE. file (built from autoconf and included in the nightly snapshot). As far as I can tell it's only needed to get the version information. VMS doesn't have autoconf (that I know of) so I can't generate it locally.

1a. Related to a lack of autoconf - CVS has a number of files in the attic that are in the nightly snapshot that are generated by autoconf. Some of the attic'ed files are required for the build to work. These files are
src/tds/tdsver.h
src/tds/tds_willconvert.h
include/encodings.h
src/tds/num_limits.h
I had to get all of these from the snapshot.

2. In src/dblib/dblib.c the dbdatecrack function references the Sybase date fields. I just commented out the MSDBLIB compiler directive in sybdb.h and it compiled OK.
Dblib unittest T0012 fails to compile as a result, but a similar change there works OK.

3. ctlib/ct.c uses snprintf() which generates a compiler message about an implicit function declaration. This relates to my version of vms (7.2-1) not having that function so I grabbed the source from http://www.ijs.si/software/snprintf/ and built using that, then put the .obj file into the libct.olb library.

4. include/replacements.h has a path reference to reaspassphrase.h. The compiler couldn't find the file so I changed the code as follows:
#if !HAVE_READPASSPHRASE
#if defined(__VMS)
# include <./src/replacements/readpassphrase.h>
#else
# include <../src/replacements/readpassphrase.h>
#endif

5. src/dblib/buffering.h has a function static void *buffer_row_address(). The return statement generates a compiler warning for doing calculations on a void pointer. I changed the return statement to:
return (void *)((long*)buf->rows + offset);

6. net.c complained failed to find a declaration for TCP_NODELAY (since UCX uses UCX$...). I just hardcoded a couple of values to get it working.

#elif defined(TCP_NODELAY) && defined(SOL_TCP)
#define USE_NODELAY 1
#elif defined(__VMS)
#define TCP_NODELAY 1
#define USE_NODELAY 1
#endif

7. When running the unittests:
dblib tests t0003, t0007 & t0008 crash ("somebody overwrote one of the breadcrumbs" then an exception).
I haven't looked into why these are failing.

I hope someone finds this useful :-)

- Richard




Archive powered by MHonArc 2.6.24.

Top of Page