#2728 closed defect (fixed)
build failure on OS-X
Reported by: | warner | Owned by: | daira |
---|---|---|---|
Priority: | major | Milestone: | 1.11.0 |
Component: | packaging | Version: | 1.10.2 |
Keywords: | Cc: | ||
Launchpad Bug: |
Description
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.
Change History (4)
comment:1 Changed at 2016-02-09T17:21:39Z by daira
comment:2 Changed at 2016-02-09T17:25:03Z by daira
The second error when building pyOpenSSL looks like https://github.com/pyca/cryptography/issues/2692
comment:3 Changed at 2016-03-18T18:32:33Z by warner
- Resolution set to fixed
- Status changed from new to closed
The switch to pip has fixed this. We now use the current versions of all dependencies.
comment:4 Changed at 2016-03-22T05:03:36Z by warner
- Milestone changed from 1.10.3 to 1.11.0
Milestone renamed
This is an instance of #2474.