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

Apache refuses to start after installing Subversion 1.1.x (Windows 2000, INNOSETUP executable)

From: Jan Nijtmans <jan.nijtmans_at_xs4all.nl>
Date: 2004-10-26 09:52:45 CEST

After installing svn 1.1.1 (but with 1.1.0 happened the same), using the
INNOSETUP executable, Apache refused to start. I investigated the problem,
and found that there are two iconv.dll's and two intl.dll's on my
(Windows2000) system (listed in the same order as the paths occur in
the %PATH% environement variable):

C:\Tcl\bin\iconv.dll
C:\Program Files\Common Files\GTK\2.0\bin\iconv.dll

C:\Program Files\Common Files\GTK\2.0\bin\intl.dll
C:\Program Files\Subversion\bin\intl.dll

It turned out that Apache cannot start because intl.dll cannot be loaded.
intl.dll (found first in the GTK directory) contains a call to
libiconv_set_relocation_prefix(), but the iconv.dll (from Tcl) doesn't
have this symbol. Very tricky, and it only happens when someone has both
Tcl (8.4.7) and (GTK 2.2.4) installed in that order. svn.exe itself
doesn't have this problem because intl.dll is in the same directory as
svn.exe, so it is always found first.

There two solutions, as far as I can see:
- Copy intl.dll in the Apache modules directory. This is the simplest one
  to implement. A simple patch to accomplish this is below. I did the copy
  manually, and this indeed fixes the problem.
- Let subversion supply its own version of intl.dll, e.g. svnintl.dll.

I hope that this little but tricky problem will be fixed in subversion
1.1.2.

Regards,
     Jan Nijtmans

Index: packages/win32-innosetup/is_main.pas
===================================================================
--- packages/win32-innosetup/is_main.pas (revision 11629)
+++ packages/win32-innosetup/is_main.pas (working copy)
@@ -362,11 +362,13 @@
     sTPathTmp := ExpandConstant('{tmp}');
     // extract the files from the setup to the current IS Temp folder

+ ExtractTemporaryFile('intl.dll');
     ExtractTemporaryFile('libdb42.dll');
     ExtractTemporaryFile('mod_dav_svn.so');
     ExtractTemporaryFile('mod_authz_svn.so');

     //Copy the files from the temp dir to Apache's module foder
+ FileCopy (sTPathTmp + '\intl.dll', g_sApachePathModules +
'\intl.dll', False);
     FileCopy (sTPathTmp + '\libdb42.dll', g_sApachePathModules +
'\libdb42.dll', False);
     FileCopy (sTPathTmp + '\mod_dav_svn.so', g_sApachePathModules +
'\mod_dav_svn.so', False);
     FileCopy (sTPathTmp + '\mod_authz_svn.so', g_sApachePathModules +
'\mod_authz_svn.so', False);

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Tue Oct 26 21:38:55 2004

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