Opened at 2010-06-21T22:16:07Z
Closed at 2010-10-31T06:51:32Z
#1094 closed defect (fixed)
automatically generate binary .egg's of pycryptopp for all of our Supported Platforms
Reported by: | zooko | Owned by: | somebody |
---|---|---|---|
Priority: | major | Milestone: | soon |
Component: | packaging | Version: | 1.7.0 |
Keywords: | windows pycryptopp | Cc: | sneves, zeromus |
Launchpad Bug: |
Description
zeromus's #1093 (win32 build hell) was at least partly if not mostly caused by the following problem:
- zeromus followed the instructions on quickstart.html to use Python 2.5
- the build script saw from _auto_deps.py that Tahoe-LAFS requires pycryptopp, so it starting looking for where to get pycryptopp to satisfy this dependency
- it looked in the SUMO tarball that zeromus had installed, which has the same contents as http://tahoe-lafs.org/source/tahoe-lafs/deps/tahoe-deps-v16/ , and saw therein "pycryptopp-0.5.19.tar.bz2". It also looked on the Python Package Index: http://pypi.python.org/pypi/pycryptopp and saw that pycryptopp v0.5.19 is the current version of pycryptopp.
- it then looked for binary eggs of pycryptopp v0.5.19 to install. From _auto_dep.py's find_links it could see that the following directory was a valid place to get dependencies: http://tahoe-lafs.org/source/tahoe-lafs/deps/tahoe-dep-eggs/ . At the time, that directory contained the following packages of pycryptopp:
pycryptopp-0.5.17_r683-py2.5-win32.egg 10-Jan-2010 21:31 1.1M pycryptopp-0.5.17_r683-py2.6-linux-x86_64.egg 10-Jan-2010 21:35 3.0M pycryptopp-0.5.17_r683-py2.5-linux-armv5tel.egg 10-Jan-2010 21:47 554K pycryptopp-0.5.17-py2.5-macosx-10.5-i386.egg 06-Feb-2010 14:11 1.7M pycryptopp-0.5.17_r683-py2.5-macosx-10.3-i386.egg 07-Feb-2010 10:53 2.5M pycryptopp-0.5.17_r683-py2.5-macosx-10.4-i386.egg 07-Feb-2010 10:53 2.5M pycryptopp-0.5.17_r683-py2.5-macosx-10.5-i386.egg 07-Feb-2010 10:53 2.5M pycryptopp-0.5.17_r683-py2.5-macosx-10.6-i386.egg 07-Feb-2010 10:53 2.5M pycryptopp-0.5.17_r683-py2.6-macosx-10.6-universal.egg 03-Mar-2010 22:50 2.6M pycryptopp-0.5.17.360334-py2.6-win-amd64.egg 01-May-2010 22:14 1.0M pycryptopp-0.5.17_r683-py2.6-win32.egg 06-May-2010 14:11 1.1M pycryptopp-0.5.17_r685-py2.6-win32.egg 12-May-2010 05:38 1.1M pycryptopp-0.5.17_r686-py2.6-win32.egg 15-May-2010 18:40 1.1M pycryptopp-0.5.17_r687-py2.6-win32.egg 15-May-2010 18:48 1.1M pycryptopp-0.5.17_r688-py2.6-win32.egg 15-May-2010 19:40 1.1M pycryptopp-0.5.17_r689-py2.6-win32.egg 15-May-2010 19:43 1.1M pycryptopp-0.5.17_r693-py2.6-win32.egg 03-Jun-2010 23:17 1.1M pycryptopp-0.5.18_r701-py2.6-win32.egg 03-Jun-2010 23:53 1.1M pycryptopp-0.5.19-py2.6-win32.egg 04-Jun-2010 00:06 1.1M pycryptopp-0.5.19_r704-py2.6-win32.egg 06-Jun-2010 23:58 1.1M pycryptopp-0.5.19_r704-py2.6-win-amd64.egg 08-Jun-2010 07:37 602K
Now it can't use any binary eggs that aren't for win32 or that aren't for Python 2.5, so that leaves:
pycryptopp-0.5.17_r683-py2.5-win32.egg 10-Jan-2010 21:31 1.1M
But, it will prefer to use a newer release from source tarball over using an older release from a binary egg! Since that py2.5-win32.egg there is pycryptopp v0.5.17, and since it can get pycryptopp v0.5.19 in source tarball form, it will go for the latter.
Therefore, it went ahead and used the pycryptopp v0.5.19 source tarball from the SUMO tarball and tried to compile it.
It then failed to compile it with this error:
error: Setup script exited with error: Don't know how to compile cryptopp\x64dll.asm
I believe that failure is due to http://tahoe-lafs.org/trac/pycryptopp/ticket/37.
However, that failure to build is not the subject of this ticket. The subject of this ticket is: why didn't the build system find a binary egg of pycryptopp for the current platform and use that?
Ok, why does http://tahoe-lafs.org/source/tahoe-lafs/deps/tahoe-dep-eggs have new binary eggs of pycryptopp v0.5.19 for py2.6-win32 and for py2.6-win-amd64.egg but not for py2.5-win32? The answer is easy to see by looking at the pycryptopp buildbot page. There is a buildslave for py2.6-win32 (operated by FreeStorm) and a buildslave for py2.6-win-amd64 (operated by Dcoder/sneves). There is no buildslave for py2.5-win32. That means that py2.5-win32 is not a Supported Platform!
So to close this ticket, either change the docs to specify that you should use Python 2.6 and if you use any other version of Python then you are on your own, or else get someone to volunteer a py2.5-win32 buildslave to generate pycryptopp binary eggs.
Change History (4)
comment:1 in reply to: ↑ description Changed at 2010-06-22T22:16:45Z by davidsarah
comment:2 Changed at 2010-07-18T02:42:17Z by davidsarah
5ade4f82e0ee38cf updated quickstart.html to recommend use of Python 2.6 on Windows. Should we consider this fixed?
comment:3 Changed at 2010-07-18T02:44:30Z by davidsarah
- Milestone changed from 1.7.1 to soon
comment:4 Changed at 2010-10-31T06:51:32Z by zooko
- Resolution set to fixed
- Status changed from new to closed
Okay we have automatic generation of pycryptopp bdist_eggs on our buildbot. You can see its logs here:
http://tahoe-lafs.org/buildbot-pycryptopp/waterfall
and the resulting .egg's are hosted here: http://tahoe-lafs.org/source/tahoe-lafs/deps/tahoe-dep-eggs/
We can close this ticket, about automating this process, but we're going to open a new ticket about visualizing which platforms and python versions have which versions of which dependencies available (i.e. by writing a script that generates a .rst table)...
That visualization would then inform us about which versions of Python we can recommend on which platforms...
Replying to zooko:
[...]
If I understand correctly, the original reason for recommending Python 2.5 on Windows, was that mingw cannot compile extension modules for Python 2.6 on Windows; that requires a Microsoft compiler. Since we have py2.6-win32 and py2.6-win32-amd64 buildslaves with Microsoft compilers, this is presumably less of an issue now (at least for users who do not want to compile everything from scratch, but those are not the audience quickstart.html is targeted at).