[tahoe-lafs-trac-stream] [tahoe-lafs] #1093: win32 build hell
tahoe-lafs
trac at tahoe-lafs.org
Fri May 3 22:01:48 UTC 2013
#1093: win32 build hell
-------------------------+-------------------------------------------------
Reporter: zeromus | Owner: somebody
Type: defect | Status: new
Priority: major | Milestone: soon
Component: | Version: 1.8.0
packaging | Keywords: windows setuptools pycryptopp nevow
Resolution: | twisted
Launchpad Bug: |
-------------------------+-------------------------------------------------
Old 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.
New 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.
--
Comment (by zooko):
pywin32 is no longer used by Tahoe-LAFS, so that should simplify this a
little. What else is left to do for this ticket?
--
Ticket URL: <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/1093#comment:15>
tahoe-lafs <https://tahoe-lafs.org>
secure decentralized storage
More information about the tahoe-lafs-trac-stream
mailing list