"Failed building wheel for brotlipy" error message when install using dev.sh

Long before, I always install mitmproxy using pip. Think like some kind of stable
sudo -H pip install mitmproxy.

But it always give me 0.17 version. We know that mitmproxy master is updated to 0.18. I want to check if this version fixed the Facebook cannot logged in or Gmail cookie disabled error. So I install from master clone.

Steps to reproduce the problem:

I am using LinuxMint 18, I had virtualenv installed.

  1. I clone the repo: git clone https://github.com/mitmproxy/mitmproxy
  2. cd mitmproxy
  3. Run the dev.sh from terminal
    sudo -H ./dev.sh
What is the expected behavior?

It will install mitmproxy properly.

What went wrong?

The installation run for a short time, but it got an error “Failed building wheel for brotlipy”.
This is the full terminal output:
$ ./dev.sh

  • PYVERSION=

  • VENV=venv

  • echo Creating dev environment in venv using Python
    Creating dev environment in venv using Python

  • python -m virtualenv venv --always-copy
    New python executable in /home/hynguyen/mitmproxy/venv/bin/python
    Installing setuptools, pip, wheel…done.

  • . venv/bin/activate

  • deactivate nondestructive

  • unset -f pydoc

  • [ -z ]

  • [ -z ]

  • [ -n ]

  • [ -n ]

  • [ -z ]

  • unset VIRTUAL_ENV

  • [ ! nondestructive = nondestructive ]

  • VIRTUAL_ENV=/home/hynguyen/mitmproxy/venv

  • export VIRTUAL_ENV

  • _OLD_VIRTUAL_PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

  • PATH=/home/hynguyen/mitmproxy/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

  • export PATH

  • [ -z ]

  • [ -z ]

  • _OLD_VIRTUAL_PS1=$

  • [ x != x ]

  • basename /home/hynguyen/mitmproxy/venv

  • PS1=(venv) $

  • export PS1

  • alias pydoc

  • [ -n ]

  • [ -n ]

  • pip install -U pip setuptools
    Requirement already up-to-date: pip in ./venv/lib/python2.7/site-packages
    Requirement already up-to-date: setuptools in ./venv/lib/python2.7/site-packages

  • pip install -r requirements.txt
    Ignoring lxml: markers u"sys_platform == ‘win32’ and python_version == ‘3.5’" don’t match your environment
    Obtaining file:///home/hynguyen/mitmproxy (from -r requirements.txt (line 2))
    Obtaining file:///home/hynguyen/mitmproxy/release (from -r requirements.txt (line 3))
    Collecting backports.ssl_match_hostname<3.6,>=3.5.0.1 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading backports.ssl_match_hostname-3.5.0.1.tar.gz
    Collecting blinker<1.5,>=1.4 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading blinker-1.4.tar.gz (111kB)
    100% |████████████████████████████████| 112kB 231kB/s
    Collecting click<7.0,>=6.2 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading click-6.6.tar.gz (283kB)
    100% |████████████████████████████████| 286kB 1.8MB/s
    Collecting certifi>=2015.11.20.1 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading certifi-2016.8.2-py2.py3-none-any.whl (381kB)
    100% |████████████████████████████████| 389kB 617kB/s
    Collecting configargparse<0.11,>=0.10 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading ConfigArgParse-0.10.0.tar.gz
    Collecting construct<2.6,>=2.5.2 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading construct-2.5.2-py2.py3-none-any.whl (72kB)
    100% |████████████████████████████████| 81kB 1.6MB/s
    Collecting cryptography<1.5,>=1.3 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading cryptography-1.4.tar.gz (399kB)
    100% |████████████████████████████████| 409kB 324kB/s
    Collecting cssutils<1.1,>=1.0.1 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading cssutils-1.0.1-py2-none-any.whl (292kB)
    100% |████████████████████████████████| 296kB 569kB/s
    Collecting Flask<0.12,>=0.10.1 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading Flask-0.11.1-py2.py3-none-any.whl (80kB)
    100% |████████████████████████████████| 81kB 814kB/s
    Collecting h2<3,>=2.4.0 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading h2-2.4.0-py2.py3-none-any.whl (54kB)
    100% |████████████████████████████████| 61kB 1.0MB/s
    Collecting html2text<=2016.5.29,>=2016.1.8 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading html2text-2016.5.29.tar.gz (46kB)
    100% |████████████████████████████████| 51kB 2.0MB/s
    Collecting hyperframe<5,>=4.0.1 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading hyperframe-4.0.1-py2.py3-none-any.whl
    Collecting jsbeautifier<1.7,>=1.6.3 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading jsbeautifier-1.6.3.tar.gz (49kB)
    100% |████████████████████████████████| 51kB 2.2MB/s
    Collecting lxml<=3.6.0,>=3.5.0 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading lxml-3.6.0.tar.gz (3.7MB)
    100% |████████████████████████████████| 3.7MB 269kB/s
    Collecting Pillow<3.4,>=3.2 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading Pillow-3.3.0-cp27-cp27mu-manylinux1_x86_64.whl (5.5MB)
    100% |████████████████████████████████| 5.5MB 216kB/s
    Collecting passlib<1.7,>=1.6.5 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading passlib-1.6.5-py2.py3-none-any.whl (317kB)
    100% |████████████████████████████████| 327kB 598kB/s
    Collecting pyasn1<0.2,>=0.1.9 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading pyasn1-0.1.9-py2.py3-none-any.whl
    Collecting pyOpenSSL<17.0,>=16.0 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading pyOpenSSL-16.0.0-py2.py3-none-any.whl (45kB)
    100% |████████████████████████████████| 51kB 933kB/s
    Collecting pyparsing<2.2,>=2.1.3 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading pyparsing-2.1.5-py2.py3-none-any.whl (42kB)
    100% |████████████████████████████████| 51kB 2.8MB/s
    Collecting pyperclip<1.6,>=1.5.22 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading pyperclip-1.5.27.zip
    Collecting requests<2.11,>=2.9.1 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading requests-2.10.0-py2.py3-none-any.whl (506kB)
    100% |████████████████████████████████| 512kB 620kB/s
    Collecting six<1.11,>=1.10 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading six-1.10.0-py2.py3-none-any.whl
    Collecting tornado<4.5,>=4.3 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading tornado-4.4.1.tar.gz (456kB)
    100% |████████████████████████████████| 460kB 677kB/s
    Collecting urwid<1.4,>=1.3.1 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading urwid-1.3.1.tar.gz (588kB)
    100% |████████████████████████████████| 593kB 634kB/s
    Collecting watchdog<0.9,>=0.8.3 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading watchdog-0.8.3.tar.gz (83kB)
    100% |████████████████████████████████| 92kB 4.2MB/s
    Collecting brotlipy<0.4,>=0.3.0 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading brotlipy-0.3.0.tar.gz (492kB)
    100% |████████████████████████████████| 501kB 678kB/s
    Collecting enum34<2,>=1.0.4 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading enum34-1.1.6-py2-none-any.whl
    Collecting ipaddress<1.1,>=1.0.15 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading ipaddress-1.0.16-py27-none-any.whl
    Collecting typing==3.5.2.2 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading typing-3.5.2.2.tar.gz (51kB)
    100% |████████████████████████████████| 51kB 2.7MB/s
    Collecting tox<3,>=2.3 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading tox-2.3.1-py2.py3-none-any.whl (40kB)
    100% |████████████████████████████████| 40kB 4.0MB/s
    Collecting mock<2.1,>=2.0 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading mock-2.0.0-py2.py3-none-any.whl (56kB)
    100% |████████████████████████████████| 61kB 346kB/s
    Collecting pytest<3,>=2.8.7 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading pytest-2.9.2-py2.py3-none-any.whl (162kB)
    100% |████████████████████████████████| 163kB 796kB/s
    Collecting pytest-cov<3,>=2.2.1 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading pytest_cov-2.3.0-py2.py3-none-any.whl
    Collecting pytest-timeout<2,>=1.0.0 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading pytest_timeout-1.0.0-py2.py3-none-any.whl
    Collecting pytest-xdist<2,>=1.14 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading pytest_xdist-1.14-py2.py3-none-any.whl
    Collecting sphinx<1.5,>=1.3.5 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading Sphinx-1.4.5-py2.py3-none-any.whl (1.6MB)
    100% |████████████████████████████████| 1.6MB 430kB/s
    Collecting sphinx-autobuild<0.7,>=0.5.2 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading sphinx_autobuild-0.6.0-py2-none-any.whl
    Collecting sphinxcontrib-documentedlist<0.5,>=0.4.0 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading sphinxcontrib-documentedlist-0.4.tar.gz
    Collecting sphinx_rtd_theme<0.2,>=0.1.9 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading sphinx_rtd_theme-0.1.9-py2-none-any.whl (693kB)
    100% |████████████████████████████████| 696kB 376kB/s
    Collecting beautifulsoup4<4.6,>=4.4.1 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading beautifulsoup4-4.5.1-py2-none-any.whl (83kB)
    100% |████████████████████████████████| 92kB 1.9MB/s
    Collecting harparser<0.3,>=0.2 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading harparser-0.2.tar.gz
    Collecting pytz<=2016.6.1,>=2015.07.0 (from mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading pytz-2016.6.1-py2.py3-none-any.whl (481kB)
    100% |████████████████████████████████| 481kB 620kB/s
    Collecting twine<1.8,>=1.6.5 (from mitmproxy-rtool==1.0->-r requirements.txt (line 3))
    Downloading twine-1.7.4-py2.py3-none-any.whl
    Collecting virtualenv<15.1,>=14.0.5 (from mitmproxy-rtool==1.0->-r requirements.txt (line 3))
    Downloading virtualenv-15.0.2-py2.py3-none-any.whl (1.8MB)
    100% |████████████████████████████████| 1.8MB 484kB/s
    Requirement already satisfied (use --upgrade to upgrade): wheel<0.30,>=0.29.0 in ./venv/lib/python2.7/site-packages (from mitmproxy-rtool==1.0->-r requirements.txt (line 3))
    Collecting pysftp!=0.2.9,<0.3,>=0.2.8 (from mitmproxy-rtool==1.0->-r requirements.txt (line 3))
    Downloading pysftp-0.2.8.tar.gz
    Collecting idna>=2.0 (from cryptography<1.5,>=1.3->mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading idna-2.1-py2.py3-none-any.whl (54kB)
    100% |████████████████████████████████| 61kB 3.5MB/s
    Requirement already satisfied (use --upgrade to upgrade): setuptools>=11.3 in ./venv/lib/python2.7/site-packages (from cryptography<1.5,>=1.3->mitmproxy==0.18->-r requirements.txt (line 2))
    Collecting cffi>=1.4.1 (from cryptography<1.5,>=1.3->mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading cffi-1.7.0-cp27-cp27mu-manylinux1_x86_64.whl (383kB)
    100% |████████████████████████████████| 389kB 1.8MB/s
    Collecting itsdangerous>=0.21 (from Flask<0.12,>=0.10.1->mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading itsdangerous-0.24.tar.gz (46kB)
    100% |████████████████████████████████| 51kB 353kB/s
    Collecting Werkzeug>=0.7 (from Flask<0.12,>=0.10.1->mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading Werkzeug-0.11.10-py2.py3-none-any.whl (306kB)
    100% |████████████████████████████████| 307kB 763kB/s
    Collecting Jinja2>=2.4 (from Flask<0.12,>=0.10.1->mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading Jinja2-2.8-py2.py3-none-any.whl (263kB)
    100% |████████████████████████████████| 266kB 1.6MB/s
    Collecting hpack<3,>=2.2 (from h2<3,>=2.4.0->mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading hpack-2.3.0-py2.py3-none-any.whl
    Collecting singledispatch (from tornado<4.5,>=4.3->mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading singledispatch-3.4.0.3-py2.py3-none-any.whl
    Collecting backports_abc>=0.4 (from tornado<4.5,>=4.3->mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading backports_abc-0.4-py2.py3-none-any.whl
    Collecting PyYAML>=3.10 (from watchdog<0.9,>=0.8.3->mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading PyYAML-3.11.zip (371kB)
    100% |████████████████████████████████| 378kB 697kB/s
    Collecting argh>=0.24.1 (from watchdog<0.9,>=0.8.3->mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading argh-0.26.2-py2.py3-none-any.whl
    Collecting pathtools>=0.1.1 (from watchdog<0.9,>=0.8.3->mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading pathtools-0.1.2.tar.gz
    Collecting py>=1.4.17 (from tox<3,>=2.3->mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading py-1.4.31-py2.py3-none-any.whl (81kB)
    100% |████████████████████████████████| 92kB 1.8MB/s
    Collecting pluggy<0.4.0,>=0.3.0 (from tox<3,>=2.3->mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading pluggy-0.3.1-py2.py3-none-any.whl
    Collecting funcsigs>=1; python_version < “3.3” (from mock<2.1,>=2.0->mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading funcsigs-1.0.2-py2.py3-none-any.whl
    Collecting pbr>=0.11 (from mock<2.1,>=2.0->mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading pbr-1.10.0-py2.py3-none-any.whl (96kB)
    100% |████████████████████████████████| 102kB 2.5MB/s
    Collecting coverage>=3.7.1 (from pytest-cov<3,>=2.2.1->mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading coverage-4.2.tar.gz (359kB)
    100% |████████████████████████████████| 368kB 626kB/s
    Collecting execnet>=1.1 (from pytest-xdist<2,>=1.14->mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading execnet-1.4.1-py2.py3-none-any.whl (40kB)
    100% |████████████████████████████████| 40kB 1.5MB/s
    Collecting docutils>=0.11 (from sphinx<1.5,>=1.3.5->mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading docutils-0.12.tar.gz (1.6MB)
    100% |████████████████████████████████| 1.6MB 388kB/s
    Collecting Pygments>=2.0 (from sphinx<1.5,>=1.3.5->mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading Pygments-2.1.3-py2.py3-none-any.whl (755kB)
    100% |████████████████████████████████| 757kB 594kB/s
    Collecting imagesize (from sphinx<1.5,>=1.3.5->mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading imagesize-0.7.1-py2.py3-none-any.whl
    Collecting babel!=2.0,>=1.3 (from sphinx<1.5,>=1.3.5->mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading Babel-2.3.4-py2.py3-none-any.whl (7.1MB)
    100% |████████████████████████████████| 7.1MB 170kB/s
    Collecting snowballstemmer>=1.1 (from sphinx<1.5,>=1.3.5->mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading snowballstemmer-1.2.1-py2.py3-none-any.whl (64kB)
    100% |████████████████████████████████| 71kB 2.1MB/s
    Collecting alabaster<0.8,>=0.7 (from sphinx<1.5,>=1.3.5->mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading alabaster-0.7.9-py2.py3-none-any.whl
    Collecting port-for==0.3.1 (from sphinx-autobuild<0.7,>=0.5.2->mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading port-for-0.3.1.tar.gz
    Collecting livereload>=2.3.0 (from sphinx-autobuild<0.7,>=0.5.2->mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading livereload-2.4.1-py2-none-any.whl
    Collecting pkginfo>=1.0 (from twine<1.8,>=1.6.5->mitmproxy-rtool==1.0->-r requirements.txt (line 3))
    Downloading pkginfo-1.3.2-py2.py3-none-any.whl
    Collecting requests-toolbelt>=0.5.1 (from twine<1.8,>=1.6.5->mitmproxy-rtool==1.0->-r requirements.txt (line 3))
    Downloading requests_toolbelt-0.7.0-py2.py3-none-any.whl (52kB)
    100% |████████████████████████████████| 61kB 3.0MB/s
    Collecting clint (from twine<1.8,>=1.6.5->mitmproxy-rtool==1.0->-r requirements.txt (line 3))
    Downloading clint-0.5.1.tar.gz
    Collecting paramiko>=1.7.7 (from pysftp!=0.2.9,<0.3,>=0.2.8->mitmproxy-rtool==1.0->-r requirements.txt (line 3))
    Downloading paramiko-2.0.2-py2.py3-none-any.whl (171kB)
    100% |████████████████████████████████| 174kB 824kB/s
    Collecting pycparser (from cffi>=1.4.1->cryptography<1.5,>=1.3->mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading pycparser-2.14.tar.gz (223kB)
    100% |████████████████████████████████| 225kB 547kB/s
    Collecting MarkupSafe (from Jinja2>=2.4->Flask<0.12,>=0.10.1->mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading MarkupSafe-0.23.tar.gz
    Collecting apipkg>=1.4 (from execnet>=1.1->pytest-xdist<2,>=1.14->mitmproxy==0.18->-r requirements.txt (line 2))
    Downloading apipkg-1.4-py2.py3-none-any.whl
    Collecting args (from clint->twine<1.8,>=1.6.5->mitmproxy-rtool==1.0->-r requirements.txt (line 3))
    Downloading args-0.1.0.tar.gz
    Building wheels for collected packages: backports.ssl-match-hostname, blinker, click, configargparse, cryptography, html2text, jsbeautifier, lxml, pyperclip, tornado, urwid, watchdog, brotlipy, typing, sphinxcontrib-documentedlist, harparser, pysftp, itsdangerous, PyYAML, pathtools, coverage, docutils, port-for, clint, pycparser, MarkupSafe, args
    Running setup.py bdist_wheel for backports.ssl-match-hostname … done
    Stored in directory: /home/hynguyen/.cache/pip/wheels/5d/72/36/b2a31507b613967b728edc33378a5ff2ada0f62855b93c5ae1
    Running setup.py bdist_wheel for blinker … done
    Stored in directory: /home/hynguyen/.cache/pip/wheels/7b/8a/eb/5a4f4444f366c515073db8a129c92d4727ad945e5e64b9e8bd
    Running setup.py bdist_wheel for click … done
    Stored in directory: /home/hynguyen/.cache/pip/wheels/b0/6d/8c/cf5ca1146e48bc7914748bfb1dbf3a40a440b8b4f4f0d952dd
    Running setup.py bdist_wheel for configargparse … done
    Stored in directory: /home/hynguyen/.cache/pip/wheels/1e/2a/b6/4a95a72c4f9caf9d2a8873487ea7a65f7e46a1133a75df9856
    Running setup.py bdist_wheel for cryptography … done
    Stored in directory: /home/hynguyen/.cache/pip/wheels/f6/6c/21/11ec069285a52d7fa8c735be5fc2edfb8b24012c0f78f93d20
    Running setup.py bdist_wheel for html2text … done
    Stored in directory: /home/hynguyen/.cache/pip/wheels/b6/98/50/7105032ddc028d1386bab8840a642d9c3667cda36703f368aa
    Running setup.py bdist_wheel for jsbeautifier … done
    Stored in directory: /home/hynguyen/.cache/pip/wheels/eb/ab/f1/99897a8659c1289dc9fbf546870e4095d299089d9e8dcff441
    Running setup.py bdist_wheel for lxml … done
    Stored in directory: /home/hynguyen/.cache/pip/wheels/6c/eb/a1/e4ff54c99630e3cc6ec659287c4fd88345cd78199923544412
    Running setup.py bdist_wheel for pyperclip … done
    Stored in directory: /home/hynguyen/.cache/pip/wheels/0b/fe/d7/1ab1ec7a91dc707d04b872214f6ce617f1b04a027de12fd4fe
    Running setup.py bdist_wheel for tornado … done
    Stored in directory: /home/hynguyen/.cache/pip/wheels/c2/65/99/727ea73b981e0ef1fb8ab678ecf86f39c809230f5301ac3a40
    Running setup.py bdist_wheel for urwid … done
    Stored in directory: /home/hynguyen/.cache/pip/wheels/e7/bb/9d/d7f7fcc9b3aeae20cf4685667635002415629e6395ff2dda7d
    Running setup.py bdist_wheel for watchdog … done
    Stored in directory: /home/hynguyen/.cache/pip/wheels/3c/9c/be/e82ae5a37c19baf8abe88623d1f47d2d502bed7b54d4f34740
    Running setup.py bdist_wheel for brotlipy … error
    Complete output from command /home/hynguyen/mitmproxy/venv/bin/python -u -c “import setuptools, tokenize;file=’/tmp/pip-build-hMw2KF/brotlipy/setup.py’;exec(compile(getattr(tokenize, ‘open’, open)(file).read().replace(’\r\n’, ‘\n’), file, ‘exec’))” bdist_wheel -d /tmp/tmpkKWdYTpip-wheel- --python-tag cp27:
    running bdist_wheel
    running build
    running build_py
    creating build
    creating build/lib.linux-x86_64-2.7
    creating build/lib.linux-x86_64-2.7/brotli
    copying src/brotli/build.py -> build/lib.linux-x86_64-2.7/brotli
    copying src/brotli/init.py -> build/lib.linux-x86_64-2.7/brotli
    copying src/brotli/brotli.py -> build/lib.linux-x86_64-2.7/brotli
    running build_clib
    building ‘libbrotli’ library
    creating build/temp.linux-x86_64-2.7
    creating build/temp.linux-x86_64-2.7/libbrotli
    creating build/temp.linux-x86_64-2.7/libbrotli/dec
    creating build/temp.linux-x86_64-2.7/libbrotli/enc
    creating build/temp.linux-x86_64-2.7/src
    creating build/temp.linux-x86_64-2.7/src/brotli
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Ilibbrotli/enc -Ilibbrotli/dec -Isrc/brotli -c libbrotli/dec/bit_reader.c -o build/temp.linux-x86_64-2.7/libbrotli/dec/bit_reader.o
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Ilibbrotli/enc -Ilibbrotli/dec -Isrc/brotli -c libbrotli/dec/decode.c -o build/temp.linux-x86_64-2.7/libbrotli/dec/decode.o
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Ilibbrotli/enc -Ilibbrotli/dec -Isrc/brotli -c libbrotli/dec/huffman.c -o build/temp.linux-x86_64-2.7/libbrotli/dec/huffman.o
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Ilibbrotli/enc -Ilibbrotli/dec -Isrc/brotli -c libbrotli/dec/state.c -o build/temp.linux-x86_64-2.7/libbrotli/dec/state.o
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Ilibbrotli/enc -Ilibbrotli/dec -Isrc/brotli -c libbrotli/dec/streams.c -o build/temp.linux-x86_64-2.7/libbrotli/dec/streams.o
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Ilibbrotli/enc -Ilibbrotli/dec -Isrc/brotli -c libbrotli/dec/dictionary.c -o build/temp.linux-x86_64-2.7/libbrotli/dec/dictionary.o
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Ilibbrotli/enc -Ilibbrotli/dec -Isrc/brotli -c libbrotli/enc/backward_references.cc -o build/temp.linux-x86_64-2.7/libbrotli/enc/backward_references.o
    x86_64-linux-gnu-gcc: error trying to exec ‘cc1plus’: execvp: No such file or directory
    error: command ‘x86_64-linux-gnu-gcc’ failed with exit status 1


    Failed building wheel for brotlipy
    Running setup.py clean for brotlipy
    Running setup.py bdist_wheel for typing … done
    Stored in directory: /home/hynguyen/.cache/pip/wheels/08/ed/5d/698ff5d6a6e070db3bd5e534046859fca5419ab6d98a24426c
    Running setup.py bdist_wheel for sphinxcontrib-documentedlist … done
    Stored in directory: /home/hynguyen/.cache/pip/wheels/ca/b4/c6/84e0823c7a785d63f0381999c475b1a9344136e1d096b94a24
    Running setup.py bdist_wheel for harparser … done
    Stored in directory: /home/hynguyen/.cache/pip/wheels/d6/7e/ee/27e0bc014fa82a2c0a9329c3c5839af734467febe9eed32ffc
    Running setup.py bdist_wheel for pysftp … done
    Stored in directory: /home/hynguyen/.cache/pip/wheels/d9/20/09/e208ec04d5afd34431e0ec71c093e152f0aa9a7dae3095be59
    Running setup.py bdist_wheel for itsdangerous … done
    Stored in directory: /home/hynguyen/.cache/pip/wheels/fc/a8/66/24d655233c757e178d45dea2de22a04c6d92766abfb741129a
    Running setup.py bdist_wheel for PyYAML … done
    Stored in directory: /home/hynguyen/.cache/pip/wheels/4a/bf/14/d79994d19a59d4f73efdafb8682961f582d45ed6b459420346
    Running setup.py bdist_wheel for pathtools … done
    Stored in directory: /home/hynguyen/.cache/pip/wheels/60/0d/2a/ffe065d190b580be6af9a862c68ed6a8a89c1778bd5c7ba7b8
    Running setup.py bdist_wheel for coverage … done
    Stored in directory: /home/hynguyen/.cache/pip/wheels/6f/54/a5/e7629c41b30061b18f0ccbe4be643ed4cf5329f7b2459cf9ae
    Running setup.py bdist_wheel for docutils … done
    Stored in directory: /home/hynguyen/.cache/pip/wheels/db/de/bd/b99b1e12d321fbc950766c58894c6576b1a73ae3131b29a151
    Running setup.py bdist_wheel for port-for … done
    Stored in directory: /home/hynguyen/.cache/pip/wheels/59/4e/68/d3a42868015e73913b1da097bf0cacfbd9b2261dc7f5796eda
    Running setup.py bdist_wheel for clint … done
    Stored in directory: /home/hynguyen/.cache/pip/wheels/aa/65/4a/a0bceb0a6bee518b1dace4c803f24c4ac8febe55bdca0f14ed
    Running setup.py bdist_wheel for pycparser … done
    Stored in directory: /home/hynguyen/.cache/pip/wheels/9b/f4/2e/d03e949a551719a1ffcb659f2c63d8444f4df12e994ce52112
    Running setup.py bdist_wheel for MarkupSafe … done
    Stored in directory: /home/hynguyen/.cache/pip/wheels/a3/fa/dc/0198eed9ad95489b8a4f45d14dd5d2aee3f8984e46862c5748
    Running setup.py bdist_wheel for args … done
    Stored in directory: /home/hynguyen/.cache/pip/wheels/0a/e0/66/35419f9f9ee41099a3631f0f308b9604bd1ffeabc066d69070
    Successfully built backports.ssl-match-hostname blinker click configargparse cryptography html2text jsbeautifier lxml pyperclip tornado urwid watchdog typing sphinxcontrib-documentedlist harparser pysftp itsdangerous PyYAML pathtools coverage docutils port-for clint pycparser MarkupSafe args
    Failed to build brotlipy
    Installing collected packages: backports.ssl-match-hostname, blinker, click, certifi, configargparse, six, construct, idna, pyasn1, enum34, ipaddress, pycparser, cffi, cryptography, cssutils, itsdangerous, Werkzeug, MarkupSafe, Jinja2, Flask, hyperframe, hpack, h2, html2text, jsbeautifier, lxml, Pillow, passlib, pyOpenSSL, pyparsing, pyperclip, requests, singledispatch, backports-abc, tornado, urwid, PyYAML, argh, pathtools, watchdog, brotlipy, typing, py, virtualenv, pluggy, tox, funcsigs, pbr, mock, pytest, coverage, pytest-cov, pytest-timeout, apipkg, execnet, pytest-xdist, docutils, Pygments, imagesize, pytz, babel, snowballstemmer, alabaster, sphinx, port-for, livereload, sphinx-autobuild, sphinxcontrib-documentedlist, sphinx-rtd-theme, beautifulsoup4, harparser, mitmproxy, pkginfo, requests-toolbelt, args, clint, twine, paramiko, pysftp, mitmproxy-rtool
    Running setup.py install for brotlipy … error
    Complete output from command /home/hynguyen/mitmproxy/venv/bin/python -u -c “import setuptools, tokenize;file=’/tmp/pip-build-hMw2KF/brotlipy/setup.py’;exec(compile(getattr(tokenize, ‘open’, open)(file).read().replace(’\r\n’, ‘\n’), file, ‘exec’))” install --record /tmp/pip-72_vTx-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/hynguyen/mitmproxy/venv/include/site/python2.7/brotlipy:
    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/brotli
    copying src/brotli/build.py -> build/lib.linux-x86_64-2.7/brotli
    copying src/brotli/init.py -> build/lib.linux-x86_64-2.7/brotli
    copying src/brotli/brotli.py -> build/lib.linux-x86_64-2.7/brotli
    running build_clib
    building ‘libbrotli’ library
    creating build/temp.linux-x86_64-2.7
    creating build/temp.linux-x86_64-2.7/libbrotli
    creating build/temp.linux-x86_64-2.7/libbrotli/dec
    creating build/temp.linux-x86_64-2.7/libbrotli/enc
    creating build/temp.linux-x86_64-2.7/src
    creating build/temp.linux-x86_64-2.7/src/brotli
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Ilibbrotli/enc -Ilibbrotli/dec -Isrc/brotli -c libbrotli/dec/bit_reader.c -o build/temp.linux-x86_64-2.7/libbrotli/dec/bit_reader.o
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Ilibbrotli/enc -Ilibbrotli/dec -Isrc/brotli -c libbrotli/dec/decode.c -o build/temp.linux-x86_64-2.7/libbrotli/dec/decode.o
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Ilibbrotli/enc -Ilibbrotli/dec -Isrc/brotli -c libbrotli/dec/huffman.c -o build/temp.linux-x86_64-2.7/libbrotli/dec/huffman.o
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Ilibbrotli/enc -Ilibbrotli/dec -Isrc/brotli -c libbrotli/dec/state.c -o build/temp.linux-x86_64-2.7/libbrotli/dec/state.o
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Ilibbrotli/enc -Ilibbrotli/dec -Isrc/brotli -c libbrotli/dec/streams.c -o build/temp.linux-x86_64-2.7/libbrotli/dec/streams.o
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Ilibbrotli/enc -Ilibbrotli/dec -Isrc/brotli -c libbrotli/dec/dictionary.c -o build/temp.linux-x86_64-2.7/libbrotli/dec/dictionary.o
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Ilibbrotli/enc -Ilibbrotli/dec -Isrc/brotli -c libbrotli/enc/backward_references.cc -o build/temp.linux-x86_64-2.7/libbrotli/enc/backward_references.o
    x86_64-linux-gnu-gcc: error trying to exec ‘cc1plus’: execvp: No such file or directory
    error: command ‘x86_64-linux-gnu-gcc’ failed with exit status 1


Command “/home/hynguyen/mitmproxy/venv/bin/python -u -c “import setuptools, tokenize;file=’/tmp/pip-build-hMw2KF/brotlipy/setup.py’;exec(compile(getattr(tokenize, ‘open’, open)(file).read().replace(’\r\n’, ‘\n’), file, ‘exec’))” install --record /tmp/pip-72_vTx-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/hynguyen/mitmproxy/venv/include/site/python2.7/brotlipy” failed with error code 1 in /tmp/pip-build-hMw2KF/brotlipy/

Any other comments? What have you tried so far?

I tried to reinstall virtualenv, update pip to latest version 8.1.2, or run the dev.sh with sudo -H but its keeping happen.


Mitmproxy Version: 0.18, clone from master
Operating System: LinuxMint 18 (base on Ubuntu 16.04)

I findoud this is because missing g++.
Solution is install g++ package:
sudo apt-get install g++

Thanks for the report. This is fixed on http://docs.mitmproxy.org/en/latest/ now, and will be part of http://docs.mitmproxy.org/en/stable/ with the next release :slight_smile: