[tahoe-dev] build failure on intel mac

zooko zooko at zooko.com
Tue Jan 22 04:22:37 UTC 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