views:

2020

answers:

3

These are the steps I took:

  • install apache 2.2.x
  • install TortoiseHg 0.7
  • copy hgwebdir.cgi, hgweb.config to cgi-bin
  • edit hgweb.config as appropriate
  • unzip $blah\TortoiseHg\library.zip to unzip $blah\TortoiseHg\library
  • sys.path.append("$blah\TortoiseHg\library") at the beginning of hgwebdir.cgi
  • move $blah\TortoiseHg\templates to $blah\TortoiseHg\library\templates

(Edit: I forgot to add that all these steps are laid out here.)

When I run http://localhost/cgi-bin/hgwebdir.cgi/ I can see my repository. If I try browse that repository, I'm told "DLL load failed: The specified module could not be found.". The last line of the walkback says "c:\program files\apache group\apache\cgi-bin\mercurial\osutil.pyc in __load()".

I've read about people having problems with pywintypes25.dll; this lives in "c:\program files\tortoisehg" and is already in my PATH.

What DLL couldn't be found?

+4  A: 

you missed the c libs of mercurial

there are 3 ways to get out of this

  1. recent mercurial versions ship with pure python implementations you can find in mercurial/pure
  2. compile it yourself (im not exactly sure on the steps, on any unix this just works)
  3. grab win32 installer from the website
    note that i didn't yet take a look at how those are build
    (you need a distutils based install, not a py2exe based one)
Ronny
This is using the win32 installer from the website. I can't import mercurial.osutil from inside a python REPL either (with the sys.path addition, of course).
Frank Shearar
+4  A: 

First thing: don't use TortoiseHg for this. Use the Mercurial installer instead.

(TortoiseHg tries to be as independent of your Python installation as possible, and for reasons unclear to this Python-newbie, things Don't Work. Something about py2exe.)

Otherwise, just follow the steps in the HgWebDirStepByStep. I did have to install pywintypes, but YMMV. Lastly, the unzip utility mentioned on that page may do strange things with file permissions: I had to add read permissions to Templates directory and its files/subdirectories.

As an aside, if you're wondering how to set the style, add this to hgweb.config:

[web]
style = foo
Frank Shearar
Yeah, I've tried lib from TortoiseHg, and it doesn't work. But when I used lib from Mercurial, everything worked.
Dmitry Lobanov
+1  A: 

I know this question is already answered, but I experienced a slightly different issue and found a work around --

I'm sure I'm missing something obvious in the Python configuration (2.5.4), but I'm having issues with .pyd versus .dll. (I had the same issues with the Python subversion libraries.) I see osutil.pyd in Mercurial\library.zip, but it fails to load it. Therefore, I unzipped library.zip and then copied *.pyd to *.dll, e.g:

REM Ugly DOS... Recursively renames all .pyd files to .dll
for /f "tokens=*" %%a in ('dir /s /b *.pyd') do copy "%%a" "%%~da%%~pa%%~na.dll"

Make sure the unzipped library directory is in the PYTHONPATH, but after this I successfully can execute: from mercurial import osutil. Also remember to copy or move the Templates directory to the newly unzipped library directory.

Follow the steps in Section 5 of the HgWebDirStepByStep for the rest. I did not experience the "Gotchas" in Section 5.3 though.

Ryan