[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: VC8, BDB -> incompatible

From: Stefan Küng <tortoisesvn_at_gmail.com>
Date: 2006-01-18 21:33:04 CET

Branko Čibej wrote:
> Stefan Küng wrote:
>> Hi,
>>
>> If Subversion (and BDB) is compiled with VC8 (or
>> VCExpress/VS.NET2005), the resulting binaries will work ok, but BDB
>> repositories aren't compatible anymore with other clients.
>>
>> I've searched the web and found some posts indicating that the change
>> in the size of time_t is the reason for this. So by defining
>> _USE_32BIT_TIME_T, this should not be a problem anymore. But a BDB
>> repo created with the official Subversion client is still
>> incompatible. A client compiled with VC8 still can't access such a
>> repository via file:/// but crashes.
>>
>> Does anyone know how to fix this? Maybe a compiler switch I can use?
>> Another define I forgot? Because if I can't keep a client compiled
>> with VC8 compatible anymore to the official Subversion client, that's
>> bad.
>> I'm close to getting rid of BDB in TSVN because of this: better to
>> have users ask why something doesn't work anymore and tell them to
>> dump/load to FSFS than to receive 50 crashreports a day.
>
> I've told you this before: *don't build your own BDB DLLs for TSVN*.
>
> Use the ones that I posted on subversion.tigris.org. There is no issue
> of runtime library compatibility since at least svn-1.1, because we tell
> BDB which malloc(), realloc() and free() to use.

The problem with that approach is that I can't debug my app anymore.
Because the CRT debug dll's aren't part of the OS, and they don't ship
with the newer VS.NET but only with VC6.

But I now got it working anyway:

add the line
#define _USE_32BIT_TIME_T
at the top of the file /build_win32/db_config.h and then rebuild the
berkeley db dll's. It's not enough to just set _USE_32BIT_TIME_T as a
compiler define - I don't know why but that doesn't work.

Then, all the libs using the berkeley dll's must also be compiled with
_USE_32BIT_TIME_T defined. That includes apr-util and Subversion. So you
might want to patch your build generator to set that define.

For those interested:
I have created Nant build scripts which will build all the libs and
Subversion without using devenv but the cl.exe and link.exe alone.
You can find those scripts here:
http://tortoisesvn.tigris.org/svn/tortoisesvn/trunk/ext/build/

By using those scripts, I can avoid learning python to patch the
Subversion build generator if I need to.

Stefan

-- 
        ___
   oo  // \\      "De Chelonian Mobile"
  (_,\/ \_/ \     TortoiseSVN
    \ \_/_\_/>    The coolest Interface to (Sub)Version Control
    /_/   \_\     http://tortoisesvn.tigris.org
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Thu Jan 19 00:08:31 2006

This is an archived mail posted to the Subversion Dev mailing list.