view content/Coding/012-windows-trac-upgrade-2.rst @ 17:fa54eda9b809

Fix typo in get_profile() post.
author Brian Neal <bgneal@gmail.com>
date Wed, 30 Jul 2014 20:16:40 -0500
parents 7ce6393e6d30
children
line wrap: on
line source
Upgrading Trac on Windows Gotcha - Part 2
#########################################

:date: 2012-03-21 20:10
:tags: Python, Trac, Subversion, Windows
:slug: upgrading-trac-on-windows-gotcha-part-2
:author: Brian Neal

I have `previously reported`_ on some problems I had when upgrading our Trac_
install at work. Today I attempted another upgrade to Subversion_ 1.7.4 and Trac
0.12.3 on Windows. I upgraded to Python_ 2.7.2 along the way. I ran into another
problem with the Python bindings to Subversion which took a while to figure out.
I had no problems upgrading Subversion, but Trac could not see our repository.
The symptoms were that the Trac "timeline" and "browse source" features were
missing. 

Following the `Trac troubleshooting advice`_, I opened an interactive Python
session and tried this:

::

   E:\Trac_Data>python
   Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win
   32
   Type "help", "copyright", "credits" or "license" for more information.
   >>> from svn import client
   Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    File "C:\Python27\lib\site-packages\svn\client.py", line 26, in <module>
      from libsvn.client import *
    File "C:\Python27\lib\site-packages\libsvn\client.py", line 25, in <module>
      _client = swig_import_helper()
    File "C:\Python27\lib\site-packages\libsvn\client.py", line 21, in swig_import
   _helper
      _mod = imp.load_module('_client', fp, pathname, description)
   ImportError: DLL load failed: The operating system cannot run %1

After some head scratching and googling I finally found the problem. I had used
the Windows .msi installer, `graciously provided by Alagazam`_, aka David Darj,
to install Subversion.  This placed the Subversion binaries and DLL's in
``C:\Program Files\Subversion\bin``. I then unzipped the Python 2.7 bindings to
the ``C:\Python27\Lib\site-packages`` folder. The bindings depend on the DLL's
in the ``Subversion\bin`` folder. But unfortunately for me, there were already
two older versions of the DLL's, ``libeay32.dll`` and ``ssleay32.dll`` on my
path. So when the bindings went looking for those two DLL's, instead of finding
them in ``Subversion\bin``, it found the older versions somewhere else.

To fix this, you can either rearrange your path, or copy those two DLL's to your
``Python27\Lib\site-packages\libsvn`` folder. In the future, I am going to just
copy all the DLL's from ``Subversion\bin`` to the ``libsvn`` folder.

I examined the pre-built Subversion packages from Bitnami_ and CollabNet_. They
had packaged all of the Subversion DLL's with the Python bindings together in
the same directory, so this seems reasonable. Later, on the Subversion users'
mailing list, Alagazam gave the nod to this approach.

A big thank you to Alagazam for the help and for the Windows binaries. And of
course thanks to the Apache_, Subversion_, Trac_, & Python_ teams for making
great tools.

.. _previously reported: /2011/09/12/upgrading-trac-on-windows-gotchas
.. _Trac: http://trac.edgewall.org/
.. _Subversion: http://subversion.apache.org/
.. _Trac troubleshooting advice: http://trac.edgewall.org/wiki/TracSubversion#Checklist
.. _graciously provided by Alagazam: http://sourceforge.net/projects/win32svn/
.. _Bitnami: http://bitnami.org/
.. _CollabNet: http://www.collab.net/
.. _Python: http://www.python.org/
.. _Apache: http://subversion.apache.org/