Opened at 2010-06-20T08:51:28Z
Last modified at 2014-09-25T16:02:27Z
#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.