[tahoe-dev] build failure on intel mac
zooko
zooko at zooko.com
Mon Jan 21 20:22:37 PST 2008
Terrell:
Thanks a lot for working through this with me. The first problem you
had was that Crypto++'s "make test" didn't do what we thought it
would, but "./cryptest.exe v" did. I submitted a patch for Crypto++
so that "make test" would invoke "./cryptest.exe v".
Another problem is that the old version of -- Crypto++ v5.1 -- gets
lots of errors on "make" on your system. A glance at the Crypto++
version-and-platform-and-compiler matrix [1] suggests that you would
have to use an older version of g++. Let's not go there, since we
can build the current version of Crypto++ from source using the
current version of g++ instead. Perhaps you could fire off a quick
note to the Mac Ports folks asking about porting the current version
of Crypto++?
The next problem is that pycryptopp isn't built correctly, so that
when you import it and it attempts to load its own rsa.so dynamic
library, it gets this failure:
> dlopen(/Library/Frameworks/Python.framework/Versions/2.5/lib/
> python2.5/site-packages/pycryptopp-0.2.10-py2.5-macosx-10.3-fat.egg/
> pycryptopp/publickey/rsa.so,
> 2): Symbol not found:
> __ZN8CryptoPP10RandomPool34GenerateIntoBufferedTransformationERNS_22Bu
> fferedTransformationERKSsy
> Referenced from:
> /Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/
> site-packages/pycryptopp-0.2.10-py2.5-macosx-10.3-fat.egg/
> pycryptopp/publickey/rsa.so
> Expected in: dynamic lookup
I don't have an explanation for this one yet, and I wonder if it
could be an artifact of earlier problems. Could you please make sure
that you don't have any leftover binaries from earlier attempts
getting mixed in here:
1. Remove the libcryptopp and include/cryptopp files that you
earlier installed.
2. Make sure there aren't any other libcryptopp.a files lying around
anywhere, or any other "cryptopp" directories which include header
files like "cryptlib.h", including any left by earlier attempts to
build the macports port of Crypto++ v5.1.
3. Run "make clean" in your Crypto++ v5.5.2 directory.
4. Run "make && ./cryptest.exe v && make install PREFIX=/usr/local"
in your Crypto++ v5.5.2 directory.
5. Run "make clean" in your Tahoe directory.
6. Make sure that "python -c 'import pycryptopp'" gives an
ImportError -- there shouldn't be any pycryptopp package anywhere on
your system at this point. If it doesn't give an import error then
figure out where it lives with "python -c 'import pycryptopp ; print
pycryptopp'" and remove it and go back to step 6. :-)
7. Instead of build all of Tahoe's dependencies, let's try building
just pycryptopp this time: "easy_install -v -v -v misc/dependencies/
pycryptopp* 2>&1 | tee build.log.txt". That should build pycryptopp
and install it, verbosely, and make a copy of all output into
"build.log.txt".
8. Now "import pycryptopp" should work.
For what it is worth, I have now opened a trac ticket to track our
progress on automating the production of binary packages of
pycryptopp for all supported platforms:
http://allmydata.org/trac/tahoe/ticket/281
Thanks!
Regards,
Zooko
[1] http://cryptopp.com/#platforms
More information about the tahoe-dev
mailing list