You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Jan Nijtmans <ja...@xs4all.nl> on 2004/10/26 07:52:45 UTC

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

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

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

Posted by Branko Čibej <br...@xbc.nu>.
Jostein Chr. Andersen wrote:

>On Tuesday 26 October 2004 22.21, Jostein Chr. Andersen wrote:
>  
>
>>On Tuesday 26 October 2004 09.52, Jan Nijtmans wrote:
>>...
>>
>>    
>>
>>>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 like number 2 best - and a 'svnlibdb42.dll' in stead of libdb42.dll
>>would be nice as well. The reason is of course that other modules
>>might need diffrent versions of intl.dll and libdb42.dll.
>>
>>    
>>
>>>I hope that this little but tricky problem will be fixed in
>>>subversion 1.1.2.
>>>      
>>>
>
>I will do it somethime this weekend.
>  
>
Ah... Just renaming the DLL isn't going to work. You'd have to make all 
sorts of changes to the build scripts, _including_ the BDB build scripts 
because the import library refers to the DLL by name, so we can't use 
the one that the BDB build creates.

I agree that there may be different versions of intl.dll; shame on the 
GNU people that they didn't encode the library version in the name. 
There should _not_ be different versions of libdb42.dll, because every 
one should be built using the same build scripts. And we already avoid 
runtime version clashes by setting the alllocation functions for BDB.

-- Brane



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org

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

Posted by "Jostein Chr. Andersen" <jo...@josander.net>.
On Tuesday 26 October 2004 22.21, Jostein Chr. Andersen wrote:
> On Tuesday 26 October 2004 09.52, Jan Nijtmans wrote:
> ...
>
> > 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 like number 2 best - and a 'svnlibdb42.dll' in stead of libdb42.dll
> would be nice as well. The reason is of course that other modules
> might need diffrent versions of intl.dll and libdb42.dll.
>
> > I hope that this little but tricky problem will be fixed in
> > subversion 1.1.2.

I will do it somethime this weekend.

Jostein

-- 
http://www.josander.net/en/contact/

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

Posted by "Jostein Chr. Andersen" <jo...@josander.net>.
On Tuesday 26 October 2004 09.52, Jan Nijtmans wrote:
...
> 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 like number 2 best - and a 'svnlibdb42.dll' in stead of libdb42.dll 
would be nice as well. The reason is of course that other modules might 
need diffrent versions of intl.dll and libdb42.dll.

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

It might - at least with the installer unless someone have second thougs 
about it.

My only reservation (beside polluting Apache's module folder with general 
named DLL's) is that you're the first one to report this problem 
(AFAIK). Also, a log out and in again (and sometimes a reboot)  usually 
fix problems like this. I don't really know why, but it seems to me that 
console and shell based programs are not allways aware of changes in 
path simultaneously (after a SendMessageTimeout API call). 

I'll wait and see a short period before deciding what to do with your 
patch.

Thanks for sending it!  :-)

Jostein

-- 
http://www.josander.net/en/contact/