#24 pip fails to install pycurl
Closed: Fixed None Opened 10 years ago by kparal.

This is what I got when I followed install instructions for libtaskotron:
https://bitbucket.org/fedoraqa/libtaskotron

(env_taskotron) kparal@medusa ~/devel/taskotron/libtaskotron (develop) $ pip install -r requirements.txt 
Downloading/unpacking PyYAML==3.10 (from -r requirements.txt (line 1))
  Downloading PyYAML-3.10.tar.gz (241kB): 241kB downloaded
  Running setup.py egg_info for package PyYAML

Downloading/unpacking dingus==0.3.4 (from -r requirements.txt (line 2))
  Downloading dingus-0.3.4.tar.gz
  Running setup.py egg_info for package dingus

Downloading/unpacking py==1.4.18 (from -r requirements.txt (line 3))
  Downloading py-1.4.18.tar.gz (190kB): 190kB downloaded
  Running setup.py egg_info for package py

Downloading/unpacking pyaml==13.07.1 (from -r requirements.txt (line 4))
  Downloading pyaml-13.07.1.tar.gz
  Running setup.py egg_info for package pyaml

Downloading/unpacking pycurl==7.19.0.2 (from -r requirements.txt (line 5))
  Downloading pycurl-7.19.0.2.tar.gz (89kB): 89kB downloaded
  Running setup.py egg_info for package pycurl
    sh: curl-config: command not found
    Traceback (most recent call last):
      File "<string>", line 16, in <module>
      File "/home/kparal/devel/taskotron/env_taskotron/build/pycurl/setup.py", line 90, in <module>
        raise Exception("`%s' not found -- please install the libcurl development files or specify --curl-config=/path/to/curl-config" % CURL_CONFIG)
    Exception: `curl-config' not found -- please install the libcurl development files or specify --curl-config=/path/to/curl-config
    Complete output from command python setup.py egg_info:
    sh: curl-config: command not found

Traceback (most recent call last):

  File "<string>", line 16, in <module>

  File "/home/kparal/devel/taskotron/env_taskotron/build/pycurl/setup.py", line 90, in <module>

    raise Exception("`%s' not found -- please install the libcurl development files or specify --curl-config=/path/to/curl-config" % CURL_CONFIG)

Exception: `curl-config' not found -- please install the libcurl development files or specify --curl-config=/path/to/curl-config

----------------------------------------
Cleaning up...
Command python setup.py egg_info failed with error code 1 in /home/kparal/devel/taskotron/env_taskotron/build/pycurl
Storing complete log in /home/kparal/.pip/pip.log

After I have installed libcurl-devel package, the problem disappeared. Either we should mention this dependency in the README, or maybe it can also be downloaded through pip somehow?


This ticket had assigned some Differential requests:
D2

Additionally, gcc needs to be installed as well:

$ pip install -r requirements.txt 
Downloading/unpacking PyYAML==3.10 (from -r requirements.txt (line 1))
  Downloading PyYAML-3.10.tar.gz (241kB): 241kB downloaded
  Running setup.py egg_info for package PyYAML

Downloading/unpacking dingus==0.3.4 (from -r requirements.txt (line 2))
  Downloading dingus-0.3.4.tar.gz
  Running setup.py egg_info for package dingus

Downloading/unpacking py==1.4.18 (from -r requirements.txt (line 3))
  Downloading py-1.4.18.tar.gz (190kB): 190kB downloaded
  Running setup.py egg_info for package py

Downloading/unpacking pyaml==13.07.1 (from -r requirements.txt (line 4))
  Downloading pyaml-13.07.1.tar.gz
  Running setup.py egg_info for package pyaml

Downloading/unpacking pycurl==7.19.0.2 (from -r requirements.txt (line 5))
  Downloading pycurl-7.19.0.2.tar.gz (89kB): 89kB downloaded
  Running setup.py egg_info for package pycurl
    Using curl-config (libcurl 7.32.0)

Downloading/unpacking pytest==2.4.2 (from -r requirements.txt (line 6))
  Downloading pytest-2.4.2.tar.gz (553kB): 553kB downloaded
  Running setup.py egg_info for package pytest

Installing collected packages: PyYAML, dingus, py, pyaml, pycurl, pytest
  Running setup.py install for PyYAML
    checking if libyaml is compilable
    gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/include/python2.7 -c build/temp.linux-x86_64-2.7/check_libyaml.c -o build/temp.linux-x86_64-2.7/check_libyaml.o
    unable to execute gcc: No such file or directory

    libyaml is not found or a compiler error: forcing --without-libyaml
    (if libyaml is installed correctly, you may need to
     specify the option --include-dirs or uncomment and
     modify the parameter include_dirs in setup.cfg)

  Running setup.py install for dingus

  Running setup.py install for py

  Running setup.py install for pyaml

  Running setup.py install for pycurl
    Using curl-config (libcurl 7.32.0)
    building 'pycurl' extension
    gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -DHAVE_CURL_SSL=1 -I/usr/include/python2.7 -c src/pycurl.c -o build/temp.linux-x86_64-2.7/src/pycurl.o
    unable to execute gcc: No such file or directory
    error: command 'gcc' failed with exit status 1
    Complete output from command /home/kparal/devel/taskotron/env_taskotron/bin/python -c "import setuptools;__file__='/home/kparal/devel/taskotron/env_taskotron/build/pycurl/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-KFxFOC-record/install-record.txt --single-version-externally-managed --install-headers /home/kparal/devel/taskotron/env_taskotron/include/site/python2.7:
    Using curl-config (libcurl 7.32.0)

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/curl

copying python/curl/__init__.py -> build/lib.linux-x86_64-2.7/curl

running build_ext

building 'pycurl' extension

creating build/temp.linux-x86_64-2.7

creating build/temp.linux-x86_64-2.7/src

gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -DHAVE_CURL_SSL=1 -I/usr/include/python2.7 -c src/pycurl.c -o build/temp.linux-x86_64-2.7/src/pycurl.o

unable to execute gcc: No such file or directory

error: command 'gcc' failed with exit status 1

----------------------------------------
Cleaning up...
Command /home/kparal/devel/taskotron/env_taskotron/bin/python -c "import setuptools;__file__='/home/kparal/devel/taskotron/env_taskotron/build/pycurl/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-KFxFOC-record/install-record.txt --single-version-externally-managed --install-headers /home/kparal/devel/taskotron/env_taskotron/include/site/python2.7 failed with error code 1 in /home/kparal/devel/taskotron/env_taskotron/build/pycurl
Storing complete log in /home/kparal/.pip/pip.log

I guess we should mention it as well. Should we have a free-form README or a spec file?

The problem seems to be that pip is not capable of compiling pycurl in a way that works with fedora's openssl and nss. I mentioned this in D2 but I've had better luck removing pycurl from requirements.txt and installing pycurl via

ln -s /usr/lib64/python2.7/site-packages/pycurl* .

into the virtualenv's site-packages, similar to how koji is 'installed'.

Once the pycurl issue is fixed, #75 becomes a non-issue.

The underlying difficulty in these tasks are why I think they're high priority. However, fixing the documentation for a snag-less installation would mitigate the high priority issues here and once that's taken care of, they can either be closed or lowered in priority

Fixed in D2, let's use system pycurl package.

Login to comment on this ticket.

Metadata