#1093 closed defect

win32 build hell — at Initial Version

Reported by: zeromus Owned by: nobody
Priority: major Milestone: soon
Component: packaging Version: 1.8.0
Keywords: windows setuptools pycryptopp nevow twisted Cc: freestorm77@…, aradriel@…
Launchpad Bug:

Description

I am experiencing hell getting the win32 stuff to build. I should mention that the building works OK by embedding into my python install. But I need a zipfile with an EXE in it if I am going to get any buy-in from my friends.

I am basically following instructions at http://tahoe-lafs.org/trac/tahoe-lafs/wiki/AdvancedInstall, but modified in this as a last ditch effort. i assure you the results are the same when i follow those steps as well by running setup.py directly

Here's what I do:

install python-2.5.4.msi to C:\Python25\ install pywin32-214.win32-py2.5.exe extract allmydata-tahoe-1.7.0-SUMO.zip to C:\tahoe-lafs open a command prompt to c:\tahoe-lafs and setup mingw,python25 environment

ran mingw32-make.exe

error: Setup script exited with error: Don't know how to compile cryptopp\x64dll.asm

it seems that distutils msvccompiler.py doesnt know how to compile a .asm file which pycryptopp supplies as a source file to be compiled. it is easy to make msvccompiler.py handle a .asm file. making this change allows me to proceed.. [apparently this has already been covered at http://bugs.python.org/issue8597]

build OK. ran mingw32-make.exe windows-exe

build OK. now run windows\dist\tahoe:

Traceback (most recent call last):
  File "tahoe.py", line 1, in <module>
  File "allmydata\__init__.pyc", line 27, in <module>
  File "nevow\__init__.pyc", line 143, in <module>
  File "nevow\__init__.pyc", line 29, in load
  File "nevow\util.pyc", line 183, in _namedAnyWithBuiltinTranslation
  File "twisted\python\reflect.pyc", line 464, in namedAny
  File "twisted\python\reflect.pyc", line 400, in _importAndCheckStack
  File "formless\webform.pyc", line 26, in <module>
  File "pkg_resources.pyc", line 882, in resource_filename
  File "pkg_resources.pyc", line 1344, in get_resource_filename
NotImplementedError: resource_filename() only supported for .egg, not .zip

Around this time, I ought to mention I know diddly squat about python. So I start trying to fix it anyway.

google says (from 5yrs ago) it isnt possible to run resource_filename() from a zip and nevow needs be changed.

newest nevow says setuptools can handle it in a comment on that function

but yet the latest setuptools is what generates the error i pasted. it makes no effort to handle resource_filenames() from a zip.

Now, I can attempt to bully my way through this problem by unzipping library.zip to a directory called library.zip

Then I get this error:

Traceback (most recent call last):
  File "tahoe.py", line 7, in <module>
  File "allmydata\scripts\runner.pyc", line 6, in <module>
  File "C:\tahoe-lafs\windows\dist\library.zip\pkg_resources.pyc", line 666, in
require
  File "C:\tahoe-lafs\windows\dist\library.zip\pkg_resources.pyc", line 565, in
resolve
    equivalent subpath.  For an example namespace handler, see
pkg_resources.DistributionNotFound: twisted

This can be resolved by pasting a bunch of egg directories in the windows\dist\library.zip directory. After I paste twisted, I will get:

pkg_resources.DistributionNotFound?: zope.interface pkg_resources.DistributionNotFound?: setuptools

After those, I will get

pkg_resources.DistributionNotFound?: allmydata-tahoe

This confuses me, because I don't even see my system looking for a file that looks like allmydata-tahoe At this point, all I can do is comment out pkg_resources.require('allmydata-tahoe') from runner.py

Then I will get

C:\tahoe-lafs\windows\dist\library.zip\allmydata\scripts\runner.py:6: UserWarnin
g: Module twisted was already imported from C:\tahoe-lafs\windows\dist\library.z
ip\twisted\__init__.pyc, but c:\tahoe-lafs\windows\dist\library.zip\twisted-10.0
.0-py2.5-win32.egg is being added to sys.path
Traceback (most recent call last):
  File "tahoe.py", line 9, in <module>
TypeError: 'module' object is not callable

Finally, I paste the contents of runner.py into tahoe.py (starting in tahoe.py after _junk = depends)

And then I remove the run function and just replace it with

rc = runner(sys.argv[1:])
sys.exit(rc)

(just making it the main function or whatever you call it in python)

And FINALLY, tahoe.exe works. I can use create-client and configure it to use the public test grid, and then when i use tahoe start...

Can't find twistd (it comes with Twisted). Aborting.


flashback hours ago


I installed the last public build of Allmydata win32 client. Can't test it now. But look! It comes with tahoe.exe. create-client worked, and then when i use tahoe start...

Can't find twistd (it comes with Twisted).  Aborting.

So I guess I'll try to build my own.


Flash forward to present


And around that time I gave up.

Change History (0)

Note: See TracTickets for help on using tickets.