[tahoe-lafs-trac-stream] [Tahoe-LAFS] #2728: build failure on OS-X

Tahoe-LAFS trac at tahoe-lafs.org
Mon Feb 8 23:54:48 UTC 2016


#2728: build failure on OS-X
-----------------------+------------------------
 Reporter:  warner     |          Owner:  daira
     Type:  defect     |         Status:  new
 Priority:  major      |      Milestone:  1.10.3
Component:  packaging  |        Version:  1.10.2
 Keywords:             |  Launchpad Bug:
-----------------------+------------------------
 Tahoe trunk (git [186f6d4a59a879ee93207a48bca15fbdf2741206]) fails to
 build on OS-X 10.11, using python from homebrew, and a fairly minimal set
 of python packages installed via pip (I have: certifi, click, pip, pipsi,
 requests, setuptools, virtualenv, wheel).

 The full log is:

 {{{
 % make
 python setup.py build

 Need setuptools
   found setuptools 0.6c16dev6
 (/Users/warner/stuff/tahoe/tahoe/setuptools-0.6c16dev6.egg)
   no subdependencies to add
 running update_version
 Wrote normalized version '1.10.2.post53' into 'src/allmydata/_version.py'
 running develop
 Not found: tahoe-deps
 running egg_info
 writing requirements to src/allmydata_tahoe.egg-info/requires.txt
 writing src/allmydata_tahoe.egg-info/PKG-INFO
 writing top-level names to src/allmydata_tahoe.egg-info/top_level.txt
 writing dependency_links to src/allmydata_tahoe.egg-
 info/dependency_links.txt
 writing entry points to src/allmydata_tahoe.egg-info/entry_points.txt
 reading manifest file 'src/allmydata_tahoe.egg-info/SOURCES.txt'
 reading manifest template 'MANIFEST.in'
 writing manifest file 'src/allmydata_tahoe.egg-info/SOURCES.txt'
 running build_ext
 Creating /Users/warner/stuff/tahoe/tahoe/support/lib/python2.7/site-
 packages/site.py
 Processing setuptools-0.6c16dev6.egg
 Copying setuptools-0.6c16dev6.egg to
 /Users/warner/stuff/tahoe/tahoe/support/lib/python2.7/site-packages
 Adding setuptools 0.6c16dev6 to easy-install.pth file
 Installing easy_install_z-2.6 script to support/bin
 Installing easy_install_z script to support/bin

 Installed /Users/warner/stuff/tahoe/tahoe/support/lib/python2.7/site-
 packages/setuptools-0.6c16dev6.egg
 Creating /Users/warner/stuff/tahoe/tahoe/support/lib/python2.7/site-
 packages/allmydata-tahoe.egg-link (link to src)
 Adding allmydata-tahoe 1.10.2.post53 to easy-install.pth file
 Installing tahoe script to support/bin

 Installed /Users/warner/stuff/tahoe/tahoe/src
 Processing dependencies for allmydata-tahoe==1.10.2.post53

 Need allmydata-tahoe==1.10.2.post53
   found allmydata-tahoe 1.10.2.post53
 (/Users/warner/stuff/tahoe/tahoe/src)
   adding subdependencies pyOpenSSL>=0.13,<=0.13.1; Nevow>=0.11.1;
 Twisted>=13.0.0; pyasn1-modules>=0.0.5; pyasn1>=0.1.8;
 characteristic>=14.0.0; service-identity; pycryptopp>=0.6.0;
 pycrypto>=2.1.0,!=2.2,!=2.4; foolscap>=0.10.1;
 zope.interface>=3.6.0,!=3.6.3,!=3.6.4; simplejson>=1.4; zfec>=1.1.0;
 setuptools>=0.6c6

 Need pyOpenSSL>=0.13,<=0.13.1
 Searching for pyOpenSSL>=0.13,<=0.13.1
 Reading https://tahoe-lafs.org/source/tahoe-lafs/deps/tahoe-lafs-dep-
 sdists/
 Reading https://tahoe-lafs.org/source/tahoe-lafs/deps/tahoe-lafs-dep-eggs/
 Best match: pyOpenSSL 0.13.1
 Processing pyOpenSSL-0.13.1.tar.gz
 Running pyOpenSSL-0.13.1/setup.py -q bdist_egg --dist-dir
 /var/folders/4v/j9ylswv946z277d1j6h1gy680000gn/T/easy_install-
 KXjeh_/pyOpenSSL-0.13.1/egg-dist-tmp-D5Jumo
 warning: no previously-included files matching '*.pyc' found anywhere in
 distribution
 OpenSSL/crypto/crl.c:6:23: error: static declaration of 'X509_REVOKED_dup'
 follows non-static declaration
 static X509_REVOKED * X509_REVOKED_dup(X509_REVOKED *orig) {
                       ^
 /usr/local/opt/openssl/include/openssl/x509.h:751:15: note: previous
 declaration is here
 X509_REVOKED *X509_REVOKED_dup(X509_REVOKED *rev);
               ^
 1 error generated.
 error: Setup script exited with error: command 'clang' failed with exit
 status 1
 make: *** [build] Error 1
 }}}

 I believe the specific problem is that Tahoe's current `_auto_deps.py`
 declares that it needs pyopenssl-0.13 or 0.13.1 (which won't compile)
 unless a newer version is found.

 If I create a virtualenv and pre-install the current version of pyopenssl
 into it, I get a different sort of openssl error instead:

 {{{
 % virtualenv ve
 New python executable in /Users/warner/stuff/tahoe/tahoe/ve/bin/python2.7
 Also creating executable in /Users/warner/stuff/tahoe/tahoe/ve/bin/python
 Installing setuptools, pip, wheel...done.
 % source ve/bin/activate
 (ve) % pip install pyopenssl
 Collecting pyopenssl
 Collecting six>=1.5.2 (from pyopenssl)
 Collecting cryptography>=0.7 (from pyopenssl)
   Using cached cryptography-1.2.2-cp27-none-macosx_10_10_intel.whl
 Collecting enum34 (from cryptography>=0.7->pyopenssl)
 Collecting ipaddress (from cryptography>=0.7->pyopenssl)
   Using cached ipaddress-1.0.16-py27-none-any.whl
 Collecting pyasn1>=0.1.8 (from cryptography>=0.7->pyopenssl)
 Requirement already satisfied (use --upgrade to upgrade): setuptools>=1.0
 in ./ve/lib/python2.7/site-packages (from cryptography>=0.7->pyopenssl)
 Collecting idna>=2.0 (from cryptography>=0.7->pyopenssl)
 Collecting cffi>=1.4.1 (from cryptography>=0.7->pyopenssl)
   Using cached cffi-1.5.0-cp27-none-macosx_10_10_intel.whl
 Collecting pycparser (from cffi>=1.4.1->cryptography>=0.7->pyopenssl)
 Installing collected packages: six, enum34, ipaddress, pyasn1, idna,
 pycparser, cffi, cryptography, pyopenssl
 Successfully installed cffi-1.5.0 cryptography-1.2.2 enum34-1.1.2 idna-2.0
 ipaddress-1.0.16 pyasn1-0.1.9 pycparser-2.14 pyopenssl-0.15.1 six-1.10.0


 % make
 python setup.py build

 Need setuptools
   found setuptools 0.6c16dev6
 (/Users/warner/stuff/tahoe/tahoe/setuptools-0.6c16dev6.egg)
   no subdependencies to add
 running update_version
 Wrote normalized version '1.10.2.post53' into 'src/allmydata/_version.py'
 running develop
 Not found: tahoe-deps
 running egg_info
 writing requirements to src/allmydata_tahoe.egg-info/requires.txt
 writing src/allmydata_tahoe.egg-info/PKG-INFO
 writing top-level names to src/allmydata_tahoe.egg-info/top_level.txt
 writing dependency_links to src/allmydata_tahoe.egg-
 info/dependency_links.txt
 writing entry points to src/allmydata_tahoe.egg-info/entry_points.txt
 reading manifest file 'src/allmydata_tahoe.egg-info/SOURCES.txt'
 reading manifest template 'MANIFEST.in'
 writing manifest file 'src/allmydata_tahoe.egg-info/SOURCES.txt'
 running build_ext
 Creating /Users/warner/stuff/tahoe/tahoe/support/lib/python2.7/site-
 packages/site.py
 Processing setuptools-0.6c16dev6.egg
 Copying setuptools-0.6c16dev6.egg to
 /Users/warner/stuff/tahoe/tahoe/support/lib/python2.7/site-packages
 Adding setuptools 0.6c16dev6 to easy-install.pth file
 Installing easy_install_z-2.6 script to support/bin
 Installing easy_install_z script to support/bin

 Installed /Users/warner/stuff/tahoe/tahoe/support/lib/python2.7/site-
 packages/setuptools-0.6c16dev6.egg
 Creating /Users/warner/stuff/tahoe/tahoe/support/lib/python2.7/site-
 packages/allmydata-tahoe.egg-link (link to src)
 Adding allmydata-tahoe 1.10.2.post53 to easy-install.pth file
 Installing tahoe script to support/bin

 Installed /Users/warner/stuff/tahoe/tahoe/src
 Processing dependencies for allmydata-tahoe==1.10.2.post53

 Need allmydata-tahoe==1.10.2.post53
   found allmydata-tahoe 1.10.2.post53
 (/Users/warner/stuff/tahoe/tahoe/src)
   adding subdependencies pycparser; enum34; six>=1.4.1; cffi>=0.8;
 cryptography; pyOpenSSL>=0.13; Nevow>=0.11.1; Twisted>=13.0.0;
 pyasn1-modules>=0.0.5; pyasn1>=0.1.8; characteristic>=14.0.0; service-
 identity; pycryptopp>=0.6.0; pycrypto>=2.1.0,!=2.2,!=2.4;
 foolscap>=0.10.1; zope.interface>=3.6.0,!=3.6.3,!=3.6.4; simplejson>=1.4;
 zfec>=1.1.0; setuptools>=0.6c6

 Need pycparser
 Searching for pycparser
 Reading https://tahoe-lafs.org/source/tahoe-lafs/deps/tahoe-lafs-dep-
 sdists/
 Reading https://tahoe-lafs.org/source/tahoe-lafs/deps/tahoe-lafs-dep-eggs/
 Reading http://pypi.python.org/simple/pycparser/
 Best match: pycparser 2.14
 Downloading
 https://pypi.python.org/packages/source/p/pycparser/pycparser-2.14.tar.gz#md5=a2bc8d28c923b4fe2b2c3b4b51a4f935
 Processing pycparser-2.14.tar.gz
 Running pycparser-2.14/setup.py -q bdist_egg --dist-dir
 /var/folders/4v/j9ylswv946z277d1j6h1gy680000gn/T/easy_install-
 srJloe/pycparser-2.14/egg-dist-tmp-vmlGR0
 warning: no previously-included files matching 'yacctab.*' found under
 directory 'tests'
 warning: no previously-included files matching 'lextab.*' found under
 directory 'tests'
 warning: no previously-included files matching 'yacctab.*' found under
 directory 'examples'
 warning: no previously-included files matching 'lextab.*' found under
 directory 'examples'
 zip_safe flag not set; analyzing archive contents...
 Adding pycparser 2.14 to easy-install.pth file

 Installed /Users/warner/stuff/tahoe/tahoe/support/lib/python2.7/site-
 packages/pycparser-2.14-py2.7.egg
   found pycparser 2.14
 (/Users/warner/stuff/tahoe/tahoe/support/lib/python2.7/site-
 packages/pycparser-2.14-py2.7.egg)
   no subdependencies to add

 Need enum34
 Searching for enum34
 Reading http://pypi.python.org/simple/enum34/
 Best match: enum34 1.1.2
 Downloading
 https://pypi.python.org/packages/source/e/enum34/enum34-1.1.2.zip#md5=a9ebbad4ce451c1298cf094de07cdf69
 Processing enum34-1.1.2.zip
 Running enum34-1.1.2/setup.py -q bdist_egg --dist-dir
 /var/folders/4v/j9ylswv946z277d1j6h1gy680000gn/T/easy_install-
 2ObwO6/enum34-1.1.2/egg-dist-tmp-E2iNeu
 zip_safe flag not set; analyzing archive contents...
 Adding enum34 1.1.2 to easy-install.pth file

 Installed /Users/warner/stuff/tahoe/tahoe/support/lib/python2.7/site-
 packages/enum34-1.1.2-py2.7.egg
   found enum34 1.1.2
 (/Users/warner/stuff/tahoe/tahoe/support/lib/python2.7/site-
 packages/enum34-1.1.2-py2.7.egg)
   no subdependencies to add

 Need six>=1.4.1
 Searching for six>=1.4.1
 Reading http://pypi.python.org/simple/six/
 Best match: six 1.10.0
 Downloading
 https://pypi.python.org/packages/source/s/six/six-1.10.0.tar.gz#md5=34eed507548117b2ab523ab14b2f8b55
 Processing six-1.10.0.tar.gz
 Running six-1.10.0/setup.py -q bdist_egg --dist-dir
 /var/folders/4v/j9ylswv946z277d1j6h1gy680000gn/T/easy_install-
 h5ibps/six-1.10.0/egg-dist-tmp-WB7xR6
 no previously-included directories found matching 'documentation/_build'
 zip_safe flag not set; analyzing archive contents...
 six: module references __path__
 Adding six 1.10.0 to easy-install.pth file

 Installed /Users/warner/stuff/tahoe/tahoe/support/lib/python2.7/site-
 packages/six-1.10.0-py2.7.egg
   found six 1.10.0 (/Users/warner/stuff/tahoe/tahoe/support/lib/python2.7
 /site-packages/six-1.10.0-py2.7.egg)
   no subdependencies to add

 Need cffi>=0.8
 Searching for cffi>=0.8
 Reading http://pypi.python.org/simple/cffi/
 Best match: cffi 1.5.0
 Downloading
 https://pypi.python.org/packages/source/c/cffi/cffi-1.5.0.tar.gz#md5=dec8441e67880494ee881305059af656
 Processing cffi-1.5.0.tar.gz
 Running cffi-1.5.0/setup.py -q bdist_egg --dist-dir
 /var/folders/4v/j9ylswv946z277d1j6h1gy680000gn/T/easy_install-
 M5DDjR/cffi-1.5.0/egg-dist-tmp-pgjlx0
 compiling '_configtest.c':
 __thread int some_threadlocal_variable_42;

 clang -fno-strict-aliasing -fno-common -dynamic -isysroot
 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk
 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers
 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -c _configtest.c -o
 _configtest.o
 success!
 removing: _configtest.c _configtest.o
 Adding cffi 1.5.0 to easy-install.pth file

 Installed /Users/warner/stuff/tahoe/tahoe/support/lib/python2.7/site-
 packages/cffi-1.5.0-py2.7-macosx-10.11-x86_64.egg
   found cffi 1.5.0 (/Users/warner/stuff/tahoe/tahoe/support/lib/python2.7
 /site-packages/cffi-1.5.0-py2.7-macosx-10.11-x86_64.egg)
   adding subdependency pycparser

 Need cryptography
 Searching for cryptography
 Reading http://pypi.python.org/simple/cryptography/
 Best match: cryptography 1.2.2
 Downloading
 https://pypi.python.org/packages/source/c/cryptography/cryptography-1.2.2.tar.gz#md5=2b25eebd1d3c6bae52b46f0dcec74dfb
 Processing cryptography-1.2.2.tar.gz
 Running cryptography-1.2.2/setup.py -q bdist_egg --dist-dir
 /var/folders/4v/j9ylswv946z277d1j6h1gy680000gn/T/easy_install-
 dw3RtI/cryptography-1.2.2/egg-dist-tmp-gWcqfZ

 Need cffi>=1.4.1
 Searching for cffi>=1.4.1
 Reading http://pypi.python.org/simple/cffi/
 Best match: cffi 1.5.0
 Downloading
 https://pypi.python.org/packages/source/c/cffi/cffi-1.5.0.tar.gz#md5=dec8441e67880494ee881305059af656
 Processing cffi-1.5.0.tar.gz
 Running cffi-1.5.0/setup.py -q bdist_egg --dist-dir
 /var/folders/4v/j9ylswv946z277d1j6h1gy680000gn/T/easy_install-
 dw3RtI/cryptography-1.2.2/temp/easy_install-5Y7GaT/cffi-1.5.0/egg-dist-
 tmp-hdKRzy
 compiling '_configtest.c':
 __thread int some_threadlocal_variable_42;

 clang -fno-strict-aliasing -fno-common -dynamic -isysroot
 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk
 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers
 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -c _configtest.c -o
 _configtest.o
 success!
 removing: _configtest.c _configtest.o

 Installed /private/var/folders/4v/j9ylswv946z277d1j6h1gy680000gn/T
 /easy_install-
 dw3RtI/cryptography-1.2.2/cffi-1.5.0-py2.7-macosx-10.11-x86_64.egg
   found cffi 1.5.0
 (/private/var/folders/4v/j9ylswv946z277d1j6h1gy680000gn/T/easy_install-
 dw3RtI/cryptography-1.2.2/cffi-1.5.0-py2.7-macosx-10.11-x86_64.egg)
   adding subdependency pycparser

 Need pycparser
 Searching for pycparser
 Reading http://pypi.python.org/simple/pycparser/
 Best match: pycparser 2.14
 Downloading
 https://pypi.python.org/packages/source/p/pycparser/pycparser-2.14.tar.gz#md5=a2bc8d28c923b4fe2b2c3b4b51a4f935
 Processing pycparser-2.14.tar.gz
 Running pycparser-2.14/setup.py -q bdist_egg --dist-dir
 /var/folders/4v/j9ylswv946z277d1j6h1gy680000gn/T/easy_install-
 dw3RtI/cryptography-1.2.2/temp/easy_install-UEJ0Za/pycparser-2.14/egg-
 dist-tmp-ItL10x
 warning: no previously-included files matching 'yacctab.*' found under
 directory 'tests'
 warning: no previously-included files matching 'lextab.*' found under
 directory 'tests'
 warning: no previously-included files matching 'yacctab.*' found under
 directory 'examples'
 warning: no previously-included files matching 'lextab.*' found under
 directory 'examples'
 zip_safe flag not set; analyzing archive contents...

 Installed /private/var/folders/4v/j9ylswv946z277d1j6h1gy680000gn/T
 /easy_install-dw3RtI/cryptography-1.2.2/pycparser-2.14-py2.7.egg
   found pycparser 2.14
 (/private/var/folders/4v/j9ylswv946z277d1j6h1gy680000gn/T/easy_install-
 dw3RtI/cryptography-1.2.2/pycparser-2.14-py2.7.egg)
   no subdependencies to add
 /Users/warner/stuff/tahoe/tahoe/setuptools-0.6c16dev6.egg/setuptools/sandbox.py:60:
 UserWarning: Module _cffi_backend was already imported from
 /Users/warner/stuff/tahoe/tahoe/ve/lib/python2.7/site-
 packages/_cffi_backend.so, but
 /private/var/folders/4v/j9ylswv946z277d1j6h1gy680000gn/T/easy_install-
 dw3RtI/cryptography-1.2.2/cffi-1.5.0-py2.7-macosx-10.11-x86_64.egg is
 being added to sys.path
   working_set.callbacks.append(lambda dist:dist.activate())

 Need pycparser
   found pycparser 2.14
 (/private/var/folders/4v/j9ylswv946z277d1j6h1gy680000gn/T/easy_install-
 dw3RtI/cryptography-1.2.2/pycparser-2.14-py2.7.egg)
   no subdependencies to add

 Need pycparser
   found pycparser 2.14
 (/private/var/folders/4v/j9ylswv946z277d1j6h1gy680000gn/T/easy_install-
 dw3RtI/cryptography-1.2.2/pycparser-2.14-py2.7.egg)
   no subdependencies to add
 no previously-included directories found matching 'docs/_build'
 warning: no previously-included files matching '*' found under directory
 'vectors'
 build/temp.macosx-10.11-x86_64-2.7/_openssl.c:425:10: fatal error:
 'openssl/aes.h' file not found
 #include <openssl/aes.h>
          ^
 1 error generated.
 error: Setup script exited with error: command 'clang' failed with exit
 status 1
 make: *** [build] Error 1
 }}}

 I think this happens during the cryptography-1.2.2 build (which is odd,
 because cryptography-1.2.2 was already installed in the virtualenv (as a
 dependency of pyopenssl).

 My hunch is that cryptography-1.2.2 doesn't build on vanilla OS-X 10.11
 right now (because of the missing system headers), but "pip install" works
 because there's a pre-compiled wheel hosted on PyPI. Tahoe's zetuptoolz
 doesn't know anything about wheels, nor does it seem to correctly notice
 that the package is already installed, so it tries to rebuild it, and
 fails.

 I think this will be resolved by #1582, but I don't know if that will help
 the upcoming 1.10.3 release build on OS-X.

 I had a similar problem on linux (debian/sid). I created a new virtualenv
 (with only pip, setuptools, and wheel installed), and tried to build tahoe
 inside it. It failed when trying to build (old) pyopenssl-0.13.1. Manually
 installing pyopenssl-0.15.1 and then trying again made it past the ssl
 problems, but failed due to a setuptools mismatch error:

 {{{
 Need setuptools>=1.0
 error: Installed distribution setuptools 0.6c16dev6 conflicts with
 requirement setuptools>=1.0
 Makefile:34: recipe for target 'build' failed
 }}}

 This results from cryptography-1.2.2 having a dependency upon `setuptools
 >= 1.0`.

 Again, I think #1582 will fix this, but I don't currently know how to
 build tahoe on a debian/sid system.

 Our travis tests are passing, so there must be some linux platforms that
 are buildable. The buildbot's Ubuntu-15.10 "wily" builder is failing to
 build with 'pip' (but passing without it, possibly because of a system-
 provided python-openssl package).

 Adding to 1.10.3 milestone in case it's a blocker.

--
Ticket URL: <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2728>
Tahoe-LAFS <https://Tahoe-LAFS.org>
secure decentralized storage


More information about the tahoe-lafs-trac-stream mailing list