#2570 closed defect (fixed)

Unable to pip install tahoe-lafs directly without first installing PyOpenSSL

Reported by: nejucomo Owned by: daira
Priority: normal Milestone: 1.11.0
Component: packaging Version: 1.10.2
Keywords: pyOpenSSL cryptography cffi build packaging Cc:
Launchpad Bug:

Description (last modified by 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

Change History (4)

comment:1 Changed at 2015-11-16T05:35:58Z by nejucomo

  • Description modified (diff)

comment:2 Changed at 2015-12-02T02:53:11Z by daira

  • Description modified (diff)
  • Keywords pyOpenSSL cryptography cffi build packaging added
  • Version changed from 1.10.1 to 1.10.2

I believe the capitalization of [pP]yOpenSSL is a red herring. Package names should be case-insensitive.

comment:3 Changed at 2016-03-18T15:22:52Z by cypher

This issue seems to no longer persist after the great zetuptools purge.

comment:4 Changed at 2016-03-27T19:02:01Z by warner

  • Component changed from unknown to packaging
  • Milestone changed from undecided to 1.11.0
  • Resolution set to fixed
  • Status changed from new to closed

Indeed, it's been fixed. Yay!

Note: See TracTickets for help on using tickets.