[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