﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	launchpad_bug
2570	Unable to pip install tahoe-lafs directly without first installing PyOpenSSL	nejucomo	daira	"On a debian system I'm unable to successfully run {{{pip install allmydata-tahoe}}} due to a compilation error while installing `pyOpenSSL`. However, if I first run {{{pip install PyOpenSSL}}} and *then* {{{pip install allmydata-tahoe}}} then this succeeds.

Notice how in the first case the package which fails to install is called `pyOpenSSL` but in the second sequence of commands, the package requested is `PyOpenSSL` with an initial capital `P`. Is this the difference? Can we change the dependencies of tahoe-lafs to refer to the successfully installing pacakage?

Here's the first attempt to install `allmydata-tahoe`:

{{{
$ pip install allmydata-tahoe
Collecting allmydata-tahoe
  Using cached allmydata-tahoe-1.10.2.tar.gz
Requirement already satisfied (use --upgrade to upgrade): setuptools>=0.6c6 in /home/nleast/virtualenvs/default/lib/python2.7/site-packages (from allmydata-tahoe)
Requirement already satisfied (use --upgrade to upgrade): zfec>=1.1.0 in /home/nleast/virtualenvs/default/lib/python2.7/site-packages (from allmydata-tahoe)
Requirement already satisfied (use --upgrade to upgrade): simplejson>=1.4 in /home/nleast/virtualenvs/default/lib/python2.7/site-packages (from allmydata-tahoe)
Requirement already satisfied (use --upgrade to upgrade): zope.interface!=3.6.3,!=3.6.4,>=3.6.0 in /home/nleast/virtualenvs/default/lib/python2.7/site-packages (from allmydata-tahoe)
Collecting foolscap>=0.8.0 (from allmydata-tahoe)
  Using cached foolscap-0.9.1-py2-none-any.whl
Collecting pycrypto!=2.2,!=2.4,>=2.1.0 (from allmydata-tahoe)
  Using cached pycrypto-2.6.1.tar.gz
Collecting pycryptopp>=0.6.0 (from allmydata-tahoe)
  Using cached pycryptopp-0.6.0.1206569328141510525648634803928199668821045408958.tar.gz
Collecting service-identity (from allmydata-tahoe)
  Using cached service_identity-14.0.0-py2.py3-none-any.whl
Collecting characteristic>=14.0.0 (from allmydata-tahoe)
  Using cached characteristic-14.3.0-py2.py3-none-any.whl
Collecting pyasn1>=0.1.8 (from allmydata-tahoe)
  Using cached pyasn1-0.1.9-py2.py3-none-any.whl
Collecting pyasn1-modules>=0.0.5 (from allmydata-tahoe)
  Using cached pyasn1_modules-0.0.8-py2.py3-none-any.whl
Requirement already satisfied (use --upgrade to upgrade): Twisted>=13.0.0 in /home/nleast/virtualenvs/default/lib/python2.7/site-packages (from allmydata-tahoe)
Collecting Nevow>=0.11.1 (from allmydata-tahoe)
  Using cached Nevow-0.11.1-py27-none-any.whl
Collecting pyOpenSSL<=0.13.1,>=0.13 (from allmydata-tahoe)
  Using cached pyOpenSSL-0.13.1.tar.gz
Requirement already satisfied (use --upgrade to upgrade): pyutil>=1.3.19 in /home/nleast/virtualenvs/default/lib/python2.7/site-packages (from zfec>=1.1.0->allmydata-tahoe)
Requirement already satisfied (use --upgrade to upgrade): zbase32>=1.0 in /home/nleast/virtualenvs/default/lib/python2.7/site-packages (from pyutil>=1.3.19->zfec>=1.1.0->allmydata-tahoe)
Installing collected packages: pyOpenSSL, characteristic, pyasn1, pyasn1-modules, service-identity, foolscap, pycrypto, pycryptopp, Nevow, allmydata-tahoe
  Running setup.py install for pyOpenSSL
    Complete output from command /home/nleast/virtualenvs/default/bin/python2 -c ""import setuptools, tokenize;__file__='/home/nleast/.progtmp/pip-build-CEJDD9/pyOpenSSL/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))"" install --record /home/nleast/.progtmp/pip-iDhumd-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/nleast/virtualenvs/default/include/site/python2.7/pyOpenSSL:
    running install
    running build
    running build_py
    creating build
    creating build/lib.linux-x86_64-2.7
    creating build/lib.linux-x86_64-2.7/OpenSSL
    copying OpenSSL/__init__.py -> build/lib.linux-x86_64-2.7/OpenSSL
    copying OpenSSL/tsafe.py -> build/lib.linux-x86_64-2.7/OpenSSL
    copying OpenSSL/version.py -> build/lib.linux-x86_64-2.7/OpenSSL
    creating build/lib.linux-x86_64-2.7/OpenSSL/test
    copying OpenSSL/test/__init__.py -> build/lib.linux-x86_64-2.7/OpenSSL/test
    copying OpenSSL/test/util.py -> build/lib.linux-x86_64-2.7/OpenSSL/test
    copying OpenSSL/test/test_crypto.py -> build/lib.linux-x86_64-2.7/OpenSSL/test
    copying OpenSSL/test/test_rand.py -> build/lib.linux-x86_64-2.7/OpenSSL/test
    copying OpenSSL/test/test_ssl.py -> build/lib.linux-x86_64-2.7/OpenSSL/test
    running build_ext
    building 'OpenSSL.crypto' extension
    creating build/temp.linux-x86_64-2.7
    creating build/temp.linux-x86_64-2.7/OpenSSL
    creating build/temp.linux-x86_64-2.7/OpenSSL/crypto
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c OpenSSL/crypto/crypto.c -o build/temp.linux-x86_64-2.7/OpenSSL/crypto/crypto.o
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c OpenSSL/crypto/x509.c -o build/temp.linux-x86_64-2.7/OpenSSL/crypto/x509.o
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c OpenSSL/crypto/x509name.c -o build/temp.linux-x86_64-2.7/OpenSSL/crypto/x509name.o
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c OpenSSL/crypto/pkey.c -o build/temp.linux-x86_64-2.7/OpenSSL/crypto/pkey.o
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c OpenSSL/crypto/x509store.c -o build/temp.linux-x86_64-2.7/OpenSSL/crypto/x509store.o
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c OpenSSL/crypto/x509req.c -o build/temp.linux-x86_64-2.7/OpenSSL/crypto/x509req.o
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c OpenSSL/crypto/x509ext.c -o build/temp.linux-x86_64-2.7/OpenSSL/crypto/x509ext.o
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c OpenSSL/crypto/pkcs7.c -o build/temp.linux-x86_64-2.7/OpenSSL/crypto/pkcs7.o
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c OpenSSL/crypto/pkcs12.c -o build/temp.linux-x86_64-2.7/OpenSSL/crypto/pkcs12.o
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c OpenSSL/crypto/netscape_spki.c -o build/temp.linux-x86_64-2.7/OpenSSL/crypto/netscape_spki.o
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c OpenSSL/crypto/revoked.c -o build/temp.linux-x86_64-2.7/OpenSSL/crypto/revoked.o
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -c OpenSSL/crypto/crl.c -o build/temp.linux-x86_64-2.7/OpenSSL/crypto/crl.o
    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) {
                           ^
    In file included from /usr/include/openssl/ssl.h:156:0,
                     from OpenSSL/crypto/x509.h:17,
                     from OpenSSL/crypto/crypto.h:30,
                     from OpenSSL/crypto/crl.c:3:
    /usr/include/openssl/x509.h:751:15: note: previous declaration of ‘X509_REVOKED_dup’ was here
     X509_REVOKED *X509_REVOKED_dup(X509_REVOKED *rev);
                   ^
    error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

    ----------------------------------------
Command ""/home/nleast/virtualenvs/default/bin/python2 -c ""import setuptools, tokenize;__file__='/home/nleast/.progtmp/pip-build-CEJDD9/pyOpenSSL/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))"" install --record /home/nleast/.progtmp/pip-iDhumd-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/nleast/virtualenvs/default/include/site/python2.7/pyOpenSSL"" failed with error code 1 in /home/nleast/.progtmp/pip-build-CEJDD9/pyOpenSSL
}}}

If I install `PyOpenSSL` (with a capital `P`) directly first, then I *can* install `allmydata-tahoe`, as seen here:

{{{
$ pip install PyOpenSSL
Collecting PyOpenSSL
  Downloading pyOpenSSL-0.15.1-py2.py3-none-any.whl (102kB)
    100% |████████████████████████████████| 106kB 526kB/s
Requirement already satisfied (use --upgrade to upgrade): six>=1.5.2 in /home/nleast/virtualenvs/default/lib/python2.7/site-packages (from PyOpenSSL)
Collecting cryptography>=0.7 (from PyOpenSSL)
  Downloading cryptography-1.1.tar.gz (348kB)
    100% |████████████████████████████████| 352kB 723kB/s
Collecting idna>=2.0 (from cryptography>=0.7->PyOpenSSL)
  Downloading idna-2.0-py2.py3-none-any.whl (61kB)
    100% |████████████████████████████████| 61kB 1.3MB/s
Collecting pyasn1>=0.1.8 (from cryptography>=0.7->PyOpenSSL)
  Using cached pyasn1-0.1.9-py2.py3-none-any.whl
Requirement already satisfied (use --upgrade to upgrade): setuptools in /home/nleast/virtualenvs/default/lib/python2.7/site-packages (from cryptography>=0.7->PyOpenSSL)
Collecting enum34 (from cryptography>=0.7->PyOpenSSL)
  Downloading enum34-1.0.4.tar.gz
Collecting ipaddress (from cryptography>=0.7->PyOpenSSL)
  Downloading ipaddress-1.0.15-py27-none-any.whl
Collecting cffi>=1.1.0 (from cryptography>=0.7->PyOpenSSL)
  Downloading cffi-1.3.0.tar.gz (347kB)
    100% |████████████████████████████████| 348kB 916kB/s
Collecting pycparser (from cffi>=1.1.0->cryptography>=0.7->PyOpenSSL)
  Downloading pycparser-2.14.tar.gz (223kB)
    100% |████████████████████████████████| 225kB 1.5MB/s
Installing collected packages: idna, pyasn1, enum34, ipaddress, pycparser, cffi, cryptography, PyOpenSSL
  Running setup.py install for enum34
  Running setup.py install for pycparser
  Running setup.py install for cffi
  Running setup.py install for cryptography
Successfully installed PyOpenSSL-0.15.1 cffi-1.3.0 cryptography-1.1 enum34-1.0.4 idna-2.0 ipaddress-1.0.15 pyasn1-0.1.9 pycparser-2.14


$ pip install allmydata-tahoe
Collecting allmydata-tahoe
  Using cached allmydata-tahoe-1.10.2.tar.gz
Requirement already satisfied (use --upgrade to upgrade): setuptools>=0.6c6 in /home/nleast/virtualenvs/default/lib/python2.7/site-packages (from allmydata-tahoe)
Requirement already satisfied (use --upgrade to upgrade): zfec>=1.1.0 in /home/nleast/virtualenvs/default/lib/python2.7/site-packages (from allmydata-tahoe)
Requirement already satisfied (use --upgrade to upgrade): simplejson>=1.4 in /home/nleast/virtualenvs/default/lib/python2.7/site-packages (from allmydata-tahoe)
Requirement already satisfied (use --upgrade to upgrade): zope.interface!=3.6.3,!=3.6.4,>=3.6.0 in /home/nleast/virtualenvs/default/lib/python2.7/site-packages (from allmydata-tahoe)
Collecting foolscap>=0.8.0 (from allmydata-tahoe)
  Using cached foolscap-0.9.1-py2-none-any.whl
Collecting pycrypto!=2.2,!=2.4,>=2.1.0 (from allmydata-tahoe)
  Using cached pycrypto-2.6.1.tar.gz
Collecting pycryptopp>=0.6.0 (from allmydata-tahoe)
  Using cached pycryptopp-0.6.0.1206569328141510525648634803928199668821045408958.tar.gz
Collecting service-identity (from allmydata-tahoe)
  Using cached service_identity-14.0.0-py2.py3-none-any.whl
Collecting characteristic>=14.0.0 (from allmydata-tahoe)
  Using cached characteristic-14.3.0-py2.py3-none-any.whl
Requirement already satisfied (use --upgrade to upgrade): pyasn1>=0.1.8 in /home/nleast/virtualenvs/default/lib/python2.7/site-packages (from allmydata-tahoe)
Collecting pyasn1-modules>=0.0.5 (from allmydata-tahoe)
  Using cached pyasn1_modules-0.0.8-py2.py3-none-any.whl
Requirement already satisfied (use --upgrade to upgrade): Twisted>=13.0.0 in /home/nleast/virtualenvs/default/lib/python2.7/site-packages (from allmydata-tahoe)
Collecting Nevow>=0.11.1 (from allmydata-tahoe)
  Using cached Nevow-0.11.1-py27-none-any.whl
Requirement already satisfied (use --upgrade to upgrade): pyOpenSSL>=0.13 in /home/nleast/virtualenvs/default/lib/python2.7/site-packages (from allmydata-tahoe)
Requirement already satisfied (use --upgrade to upgrade): cryptography in /home/nleast/virtualenvs/default/lib/python2.7/site-packages (from allmydata-tahoe)
Requirement already satisfied (use --upgrade to upgrade): cffi>=0.8 in /home/nleast/virtualenvs/default/lib/python2.7/site-packages (from allmydata-tahoe)
Requirement already satisfied (use --upgrade to upgrade): six>=1.4.1 in /home/nleast/virtualenvs/default/lib/python2.7/site-packages (from allmydata-tahoe)
Requirement already satisfied (use --upgrade to upgrade): enum34 in /home/nleast/virtualenvs/default/lib/python2.7/site-packages (from allmydata-tahoe)
Requirement already satisfied (use --upgrade to upgrade): pycparser in /home/nleast/virtualenvs/default/lib/python2.7/site-packages (from allmydata-tahoe)
Requirement already satisfied (use --upgrade to upgrade): pyutil>=1.3.19 in /home/nleast/virtualenvs/default/lib/python2.7/site-packages (from zfec>=1.1.0->allmydata-tahoe)
Requirement already satisfied (use --upgrade to upgrade): idna>=2.0 in /home/nleast/virtualenvs/default/lib/python2.7/site-packages (from cryptography->allmydata-tahoe)
Requirement already satisfied (use --upgrade to upgrade): ipaddress in /home/nleast/virtualenvs/default/lib/python2.7/site-packages (from cryptography->allmydata-tahoe)
Requirement already satisfied (use --upgrade to upgrade): zbase32>=1.0 in /home/nleast/virtualenvs/default/lib/python2.7/site-packages (from pyutil>=1.3.19->zfec>=1.1.0->allmydata-tahoe)
Installing collected packages: characteristic, pyasn1-modules, service-identity, foolscap, pycrypto, pycryptopp, Nevow, allmydata-tahoe
  Running setup.py install for pycrypto
  Running setup.py install for pycryptopp
  Running setup.py install for allmydata-tahoe
Successfully installed Nevow-0.11.1 allmydata-tahoe-1.10.2 characteristic-14.3.0 foolscap-0.9.1 pyasn1-modules-0.0.8 pycrypto-2.6.1 pycryptopp-0.6.0.1206569328141510525648634803928199668821045408958 service-identity-14.0.0
}}}
"	defect	closed	normal	1.11.0	packaging	1.10.2	fixed	pyOpenSSL cryptography cffi build packaging		
