#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

This is an instance of #2474.

Version 0, edited at 2016-02-09T17:21:39Z by daira (next)

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

Note: See TracTickets for help on using tickets.