Repository: pypa/pip

Issue:
pip install hangs with interactive setup.py setups
Try:

```
pip install egenix-pyopenssl
```

with Python 2.7 to see what I mean.

The setup.py in the packages asks for confirmation and pip no longer seems to support this (it did with earlier pip versions). Instead, the pip process simply hangs.



Discussion:
pip 1.5.6 doesn't have this issue.

This is most likely a result of the changes to silence output and make it so that the invocation of `setup.py` doesn't get to "take over" the stdout/stderr/stdin of the pip process itself. Ultimately those things were removed largely to present a better user experience (spamming people with random distutils warnings and such was a persistent source of confusion).

I'm surprised it's hanging though, I would have expected it to just bomb out when it couldn't read anything more from stdin, though I'm not sure if that would be a bug in pip or your `setup.py`.

Just for completeness, here's the results of doing this with pip 1.5.6:

``` console
$ pip install egenix-pyopenssl
Downloading/unpacking egenix-pyopenssl
  Downloading egenix-pyopenssl-0.13.8.zip (78kB): 78kB downloaded
  Running setup.py (path:/Users/dstufft/.virtualenvs/tmp-31d8628ad43eed9/build/egenix-pyopenssl/setup.py) egg_info for package egenix-pyopenssl
    ------------------------------------------------------------------------
    Cryptography Download Request
    =============================

    The file you are about to download from the eGenix.com server in
    Germany (the "Software") contains or links to code using cryptography
    and can be classified as 5D002a under the German Ausfuhrliste. Due to
    export restrictions imposed on such code, we have to ask you to read,
    approve and confirm the following terms and conditions. Please note
    that all downloads will be logged to comply with export regulations.

    File URL:
    https://www.egenix.com/cryptodownload/?file=egenix-pyopenssl-0.13.8.zip&confirm=1&action=download

    Export Control Restrictions
    ---------------------------

    You acknowledge that the Software is subject to the export control
    laws and regulations of Germany and the European Union ("EU") and may
    include technical algorithms and information that is subject to export
    restrictions imposed by German or EU law.

    You hereby confirm that you will not download, export, re-export or
    make available the Software, directly or indirectly, either to:

     * any countries that are subject to German and/or EU export
       restrictions, or

     * any end user (including yourself) who you know or have reason to
       believe will utilize them in the design, development or production
       of nuclear, chemical or biological weapons, or utilize them in a
       military, paramilitary, police or intelligence context, or

     * any end user (including yourself) who has been prohibited from
       participating in German and/or EU export transactions by the German
       and/or EU export control authorities.

    For more information on export control, please refer to the German
    BAFA [1] and EU Common Foreign & Security Policy [2]. Please also
    consult your national authorities on any legal restrictions that may
    apply to download and use of software containing cryptography.

    [1] http://www.ausfuhrkontrolle.info/bafa/en/export_control/index.html
    [2] http://eeas.europa.eu/cfsp/index_en.htm

    Confirmation
    ------------

    Please confirm that you have read, understood and agree to comply to
    the above terms and conditions.

    Thank you.

    ------------------------------------------------------------------------
    Please confirm the above terms by entering "ok":
```

I'll admit that prompting a user during the install isn't something that I've ever really thought about. I'm not sure that I'd consider it currently "supported" (in the sense that there are any tests or any consideration given to it, not that you can't technically do it). I'm not sure that supporting a free for all ability to prompt is a good idea in general, it assumes some level of interactivity on your install which breaks a major use case of pip.

Can you raise a distutils-sig thread? This is going to come down to trying to decide what the "interface" of setup.py is (in particular, whether or not it can assume to have control over stdout/stdin/stderr and a user present to interact with them. I've never personally considered that part of the API "contract" but maybe others have? Nailing down the API is an ongoing effort.

After some more debugging, I found that the cause is pip not writing the output to stdout. Blindly confirming the question does cause pip to proceed with the installation, but not even pip -vv causes the output to written to the terminal in time (it is written to the terminal after entering the "ok"), which is a bit surprising since we're writing to sys.stdout.

Note that we do have built in an option to do the confirmation using an environment variable, but it would be good to:
- be able to detect that the user cannot see the setup.py output
- be able to still force setup.py output, regardless of the pip redirection

We could then at least tell people to set the environment variable and then fail the installation.

Shouldn't pip just close stdin? That would make this sort of code in setup.py fail right away.

On 28.04.2015 18:26, Ionel Cristian Mărieș wrote:

> Shouldn't pip just close stdin? That would make this sort of code in setup.py fail right away.

I don't see how that would help.

On one hand you're putting effort into making pip look nice
when used interactively, on the other hand you'd prevent any
user interaction with the package's setup.py.

BTW: It's not unusual to have packages interact with the
user during installation as you can see when e.g. installing
Postfix Debian/Ubuntu packages.

## 

Marc-Andre Lemburg

On Tue, Apr 28, 2015 at 7:35 PM, Marc-Andre Lemburg <
notifications@github.com> wrote:

> BTW: It's not unusual to have packages interact with the
> user during installation as you can see when e.g. installing
> Postfix Debian/Ubuntu packages.

​For some context here, yum works similarly to pip6, and output is captured
(interactive post-install is a bad practice with rpm). On the other hand,
Debian has support for interactive prompts​ that goes beyond the terminal
(gui with choices and so on, via debconf).

The point was that getting an error is way better than getting stuck. Of
course, this is in the context of not allowing interactive installs.

Personally, my instinct says that an interactive setup.py isn't something we particularly want to support. I have never encountered an interactive setup.py myself though, so it's hard to know what uses people make of the capability. Allowing setup.py control of stdin/stdout means that pip loses the ability to reduce clutter in the install output, which is something we've been doing a lot of work on recently (and IMO, the results are a huge improvement, that I'd be reluctant to lose).

I'm not too keen on the "please accept the license" style of use that triggered this. If there's a wheel available, the license acceptance won't be processed, for example. But equally, I don't know of any good alternative to the current approach. Maybe the package metadata should include a "print this text and wait for confirmation" item - it could probably be a metadata extension.

I agree with @dstufft, this should probably be discussed on distutils-sig.

On 28.04.2015 18:51, Ionel Cristian Mărieș wrote:

> On Tue, Apr 28, 2015 at 7:35 PM, Marc-Andre Lemburg <
> notifications@github.com> wrote:
> 
> > BTW: It's not unusual to have packages interact with the
> > user during installation as you can see when e.g. installing
> > Postfix Debian/Ubuntu packages.
> 
> ​For some context here, yum works similarly to pip6, and output is captured
> (interactive post-install is a bad practice with rpm). On the other hand,
> Debian has support for interactive prompts​ that goes beyond the terminal
> (gui with choices and so on, via debconf).
> 
> The point was that getting an error is way better than getting stuck. Of
> course, this is in the context of not allowing interactive installs.

Agreed, an error is definitely better.

I also believe that silencing all messages and warnings during
installation is not a good idea, since packages may well not
install correctly or not in the intended way without the user knowing
(not because the package doesn't report this, but because pip
doesn't show these messages).

A way to make the user experience better is by adding more
structure to the output by e.g. adding headlines and sections.
In the same way make works. A user who doesn't care can then
use the -q option to create less verbose output - again in
the same way make does.

## 

Marc-Andre Lemburg

Just to clarify:
- pip does send the stdin input to the process running the setup.py script.
- The feature that's not working anymore is getting regular print output from the setup.py script sent back to the console before the command finishes.

So the question here is not so much whether or not to accept input, but rather whether or not to show setup.py output to the user without caching and filtering per default.

IMO, that's a regression not only because of things like the egenix-pyopenssl use case not working anymore, but also because it leaves the user without any feedback about the progress of the command currently running, e.g. try running "pip install numpy" - the process just sits there without any feedback, even though the system is compiling lots of stuff in the background.

> I also believe that silencing all messages and warnings during
> installation is not a good idea, since packages may well not
> install correctly or not in the intended way without the user knowing
> (not because the package doesn't report this, but because pip
> doesn't show these messages).

I would be more inclined to agree with this if setup.py was less wordy by
default. In particular, packages that use 2to3 generate multiple screenfuls
of text that is essentially useless to the user.

Note that the "may not install correctly" argument is (or should be!) a red
herring, as a failed install should result in the setup.py invocation
ending in an error, which causes pip to display all of the captured output.
If a package fails in its setup.py and pip _doesn't_ report the output,
that's a pip bug and should be reported (if a setup.py installation fails
but exits with a success code, though, that's a bug in the setup.py and
should be reported to the project).

As a way forward, I would suggest:
1. Projects can provide wheels, which allows the setup.py output to be seen
   and dealt with on the build machine. This is obviously only a Windows/OSX
   solution at present.
2. Work should be done to improve the options for setup.py to provide
   cleaner output. This is a discussion for distutils-sig, but I'm thinking in
   terms of
   2a. New setuptools APIs to provide categorised output - maybe by using
   the logging module,
   2b. Deprecation of direct use of stdin/stdout in setup.py in favour of
   the new setuptools APIs.
   2c. (Possibly) Additional options for pip to control the level of
   setup.py output.

I am -1 on removing the improvements to pip that suppressed setup.py output
for a successful build.

> IMO, that's a regression not only because of things like the
> egenix-pyopenssl use case not working anymore, but also because it leaves
> the user without any feedback about the progress of the command currently
> running, e.g. try running "pip install numpy" - the process just sits there
> without any feedback, even though the system is compiling lots of stuff in
> the background.

Personally I don't view it as a regression, but as a deliberate change to
improve the user experience. It has its limitations, but these are mostly
due to setup.py limitations (hence my suggestions for improving things at
that end before revisiting the issue in pip).

On 28.04.2015 20:52, Paul Moore wrote:

> Note that the "may not install correctly" argument is (or should be!) a red
> herring, as a failed install should result in the setup.py invocation
> ending in an error, which causes pip to display all of the captured output.
> If a package fails in its setup.py and pip _doesn't_ report the output,
> that's a pip bug and should be reported (if a setup.py installation fails
> but exits with a success code, though, that's a bug in the setup.py and
> should be reported to the project).

I should have been clearer in what I meant: As example, it is well possible
that an extension includes optional parts which only get installed
in case e.g. certain libraries are available on the system.

In such a setting, the extension would print a warning to the
console stating that it hasn't built the optional part. This warning
is not displayed to the user using the latest pip.

Similarly, the setup.py may chose a compiler, library or specific
setting during the compile step which the user wasn't aware of,
e.g. use clang instead of gcc, compile without optimization,
use a pure Python version instead of a C extension because the
C extension cannot be compiled, etc.

Again, the installation of the package would succeed, but not necessarily
be what the user really wants or expects.

> As a way forward, I would suggest:
> 1. Projects can provide wheels, which allows the setup.py output to be seen
>    and dealt with on the build machine. This is obviously only a Windows/OSX
>    solution at present.
> 2. Work should be done to improve the options for setup.py to provide
>    cleaner output. This is a discussion for distutils-sig, but I'm thinking in
>    terms of
>    2a. New setuptools APIs to provide categorised output - maybe by using
>    the logging module,
>    2b. Deprecation of direct use of stdin/stdout in setup.py in favour of
>    the new setuptools APIs.
>    2c. (Possibly) Additional options for pip to control the level of
>    setup.py output.
> 
> I am -1 on removing the improvements to pip that suppressed setup.py output
> for a successful build.

See above.

Note that these things have been hashed out over decades for e.g.
make's output. It is easily possible to reduce the verbosity,
but default is to display every to the user, since the output
during the compile may well include important notices or
warnings and helps a lot in detecting problems early.

If a user knows what to expect, she can use "make -q" to silence
most of the less important details.

distutils has a logging mechanism to filter messages by
importance (see distutils.log). Why don't you use it's levels
instead of filtering the complete stdout output away ? The
interfaces are all there, they just need to get used. It's
even possible to replace the distutils lob interface with
the stdlib logging module (the code was implemented to
make this possible, but it never happened).

Note that egenix-pyopenssl only writes directly to sys.stdout
because previous pip versions already filtered the distutils
log output away or prevented in from being displayed right
away by buffering it. The standard distutils log mechanism
doesn't do this. We'd really like to not have to write
hacks to work around pip issues, if possible.

## 

Marc-Andre Lemburg

+1 @malemburg

This issue is causing me a headache too via another use case.

IMO there ought to at least be a way to turn this behavior off on a per package basis (via setup.py?) rather than just sweeping all messages (spammy and vital) under the carpet and hoping that nothing too important got concealed from the user.

I agree completely with @malemburg, this is a poor default choice and at the very least should be configurable by a package via its own setup.py. I just ran into this for scipy:

```
$ pip install scipy
Collecting scipy
  Using cached scipy-0.16.1.tar.gz
Building wheels for collected packages: scipy
 Running setup.py bdist_wheel for scipy
<silence>
```

That will sit there for at least 10 minutes with zero output. Most users will simply hit Ctrl-C.

A minimal and quick improvement would be to print some `.......` to stdout so something appears to be moving under the hood. And show the user a message saying `"Build in progress, for build output see /tmp/somefilename"`.

And the concern about `2to3` probably isn't super relevant anymore. Most packages I know have dropped it in favor of a single codebase supporting Python 2.x and 3.x a long time ago.

EDIT: and if `2to3` noise is really such a big deal, why not filter it out and pass everything else through to stdout. Can't be that hard.

A few more things that occurred to me:
- Downloading a wheel/sdist does show a progress bar. So the design assumption seems to be that building/installing is much faster than downloading. Which is of course not going to be true as soon as you have compiled extensions.
- More and more packages provide wheels, in which case the output will be clean. So yet another reason not to worry about build noise.
- Saner build systems will be less noisy than distutils and may report their own progress. For example, here is Bento's output (critical config, progress in # of files and relevant build warnings only):

::

```
$ ../Bento/bentomaker build -i -j
['../Bento/bentomaker', 'build', '-i', '-j']
Running from scipy source directory.
Checking for 'c_bgxlc' (c compiler)      : not found 
Checking for 'gcc' (c compiler)          : /usr/bin/gcc 
Checking for program python              : ['/usr/bin/python'] 
Checking for python version              : (2, 7, 6, 'final', 0) 
...
[  47/1071] f2py: scipy/optimize/cobyla/cobyla.pyf -> build/scipy/optimize/cobyla/_cobylamodule.c
[  48/1071] f2py: build/scipy/linalg/fblas.pyf -> build/scipy/linalg/_fblasmodule.c
[  49/1071] f2py: scipy/interpolate/src/fitpack.pyf -> build/scipy/interpolate/src/dfitpackmodule.c
[  50/1071] f2py: scipy/stats/statlib.pyf -> build/scipy/stats/statlibmodule.c
[  51/1071] f2py_fortran: scipy/integrate/tests/banded5x5.f -> build/scipy/integrate/tests/_test_odeint_bandedmodule.c
... 
```

Well I mean, the verbosity of `pip install` on success cases was a pain point for people, particularly when it would indicate an error that wasn't actually an error which caused a lot of confusion. The main pain point being that people couldn't tell the difference between the output of the `setup.py` and the output of pip itself. There wasn't a whole lot we could do around that either because the output of basically every `setup.py` was way more voluminous than what pip produced so it easilly drowned out everything else. This was also a problem because it meant people would miss warnings printed onto their console as well because it would just scroll past in a sea of crap nobody actually cared about.

I don't think we're likely to re-enable the printing of the output of the build command, it's just way too varied, especially in the context of multiple different build commands that is currently being discussed, and I don't see any outcome except for returning back to the confusion it presented in the first case.

As far as why download has a progress bar and building doesn't, the answer is basically because we don't really have a sane way of doing it. We don't have any way for the build system to report progress back to pip so we can tell whether or not it's actually doing anything or not or how far it's progressed. The best we could do is use a spinner that just sits there and spins... but I'm not sure that's really any better since if the `setup.py` has hung it'll sit there and spin still which means people won't have any confidence that it means anything except we're waiting on the `setup.py`. I'm not opposed to it though, our progress tooling has a spinner built into it, though we'll need to switch our subprocess interface around so that instead of blocking on the subprocess call we poll it for the process to be done. That being said, I wouldn't be opposed to adding a spinner to it if people think it'd be less confusing.

For the record though, the main reason I left this ticket open is I wanted to close `sys.stdin` on the subprocess so an interactive `setup.py` like this just fails immediately instead of hang forever.

On 02.11.2015 15:04, Donald Stufft wrote:

> Well I mean, the verbosity of `pip install` on success cases was a pain point for people, particularly when it would indicate an error that wasn't actually an error which caused a lot of confusion. The main pain point being that people couldn't tell the difference between the output of the `setup.py` and the output of pip itself. There wasn't a whole lot we could do around that either because the output of basically every `setup.py` was way more voluminous than what pip produced so it easilly drowned out everything else. This was also a problem because it meant people would miss warnings printed onto their console as well because it would just scroll past in a sea of crap nobody actually cared about.

You do know that setup.py has a way of defining verbosity to increase
or reduce the output volume, right ?

Cutting away important messages such as which libraries were used to
build an extension, which options are enabled/disabled based on the
installed libs, or failure to compile an option part of an extension
is not something I'd call "crap nobody actually cared about".

Not showing this output will make the user experience worse,
not better, since people will have a hard time debugging the reasons
why their installation is not working correctly.

It's not even possible for users to assess the hidden output after the
fact, because it's being sent to /dev/null and there's no option to bring
it back or display it to the user, AFAIK.

This is really poor UI design, IMO.

## 

Marc-Andre Lemburg
http://www.malemburg.com/

> Cutting away important messages such as which libraries were used to
> build an extension, which options are enabled/disabled based on the
> installed libs, or failure to compile an option part of an extension
> is not something I'd call "crap nobody actually cared about".

While in principle I agree with you, the feedback we got from pip users was that they genuinely didn't want to see the output being produced. It's not so much the failure case, where the output is "merely" unhelpfully verbose, but the success case, where it's genuinely not of interest.

I don't particularly defend our users' preference for hiding the data (even though as a user I agree with it) but it was the feedback we got, and we took the decision we did because of it.

> This is really poor UI design, IMO.

Maybe you're right. The history is that pip's UI design has never been that good (arguably because setuptools/distutils didn't really offer what pip needed to manage it well as a subprocess, but the reason why is not really important). We're slowly improving it as best we can, but it's not simple to do so, particularly given the conflicting demands of the various parts of our user base.

Suggestions (or better yet, code ;-)) are always welcome, but should take into account what pip users have said they want (which is minimal output by default in the success case).

> You do know that setup.py has a way of defining verbosity to increase
> or reduce the output volume, right ?

Yes I am. I'm also aware it's practically useless. Here's the output of a very basic `setup.py` being invoked with `-q`:

``` console
$ python setup.py install --single-version-externally-managed -q --record /dev/null
running install
running build
running build_py
package init file 'warehouse/migrations/__init__.py' not found (or not a regular file)
running egg_info
writing warehouse.egg-info/PKG-INFO
writing entry points to warehouse.egg-info/entry_points.txt
writing top-level names to warehouse.egg-info/top_level.txt
writing dependency_links to warehouse.egg-info/dependency_links.txt
writing requirements to warehouse.egg-info/requires.txt
reading manifest file 'warehouse.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no previously-included files found matching 'requirements.txt'
warning: no previously-included files found matching 'requirements-dev.txt'
warning: no previously-included files found matching 'requirements-deploy.txt'
warning: no previously-included files found matching 'babel.cfg'
warning: no previously-included files found matching 'Makefile'
warning: no previously-included files found matching 'Gulpfile.js'
warning: no previously-included files found matching 'package.json'
warning: no previously-included files found matching '.dockerignore'
warning: no previously-included files found matching 'Dockerfile'
warning: no previously-included files found matching 'docker-compose.yml'
warning: no previously-included files found matching 'Procfile'
warning: no previously-included files found matching 'runtime.txt'
warning: no previously-included files found matching 'uwsgi.ini'
no previously-included directories found matching 'bin'
no previously-included directories found matching 'vcl'
no previously-included directories found matching '.travis'
no previously-included directories found matching 'dev'
no previously-included directories found matching 'docs/_build'
no previously-included directories found matching 'tasks'
writing manifest file 'warehouse.egg-info/SOURCES.txt'
running install_lib
creating /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse
copying build/lib/warehouse/__about__.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse
copying build/lib/warehouse/__init__.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse
copying build/lib/warehouse/__main__.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse
creating /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/accounts
copying build/lib/warehouse/accounts/__init__.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/accounts
copying build/lib/warehouse/accounts/auth_policy.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/accounts
copying build/lib/warehouse/accounts/forms.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/accounts
copying build/lib/warehouse/accounts/interfaces.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/accounts
copying build/lib/warehouse/accounts/models.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/accounts
copying build/lib/warehouse/accounts/services.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/accounts
copying build/lib/warehouse/accounts/views.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/accounts
copying build/lib/warehouse/aws.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse
creating /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cache
copying build/lib/warehouse/cache/__init__.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cache
copying build/lib/warehouse/cache/http.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cache
creating /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cache/origin
copying build/lib/warehouse/cache/origin/__init__.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cache/origin
copying build/lib/warehouse/cache/origin/fastly.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cache/origin
copying build/lib/warehouse/cache/origin/interfaces.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cache/origin
copying build/lib/warehouse/celery.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse
creating /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/classifiers
copying build/lib/warehouse/classifiers/__init__.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/classifiers
copying build/lib/warehouse/classifiers/models.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/classifiers
creating /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cli
copying build/lib/warehouse/cli/__init__.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cli
creating /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cli/db
copying build/lib/warehouse/cli/db/__init__.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cli/db
copying build/lib/warehouse/cli/db/branches.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cli/db
copying build/lib/warehouse/cli/db/current.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cli/db
copying build/lib/warehouse/cli/db/downgrade.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cli/db
copying build/lib/warehouse/cli/db/heads.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cli/db
copying build/lib/warehouse/cli/db/history.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cli/db
copying build/lib/warehouse/cli/db/merge.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cli/db
copying build/lib/warehouse/cli/db/revision.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cli/db
copying build/lib/warehouse/cli/db/show.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cli/db
copying build/lib/warehouse/cli/db/stamp.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cli/db
copying build/lib/warehouse/cli/db/upgrade.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cli/db
creating /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cli/search
copying build/lib/warehouse/cli/search/__init__.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cli/search
copying build/lib/warehouse/cli/search/reindex.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cli/search
copying build/lib/warehouse/cli/shell.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cli
copying build/lib/warehouse/config.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse
copying build/lib/warehouse/csrf.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse
copying build/lib/warehouse/db.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse
copying build/lib/warehouse/filters.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse
copying build/lib/warehouse/forms.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse
creating /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/i18n
copying build/lib/warehouse/i18n/__init__.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/i18n
copying build/lib/warehouse/i18n/filters.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/i18n
copying build/lib/warehouse/i18n/translations.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/i18n
creating /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/legacy
copying build/lib/warehouse/legacy/__init__.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/legacy
copying build/lib/warehouse/legacy/action_routing.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/legacy
creating /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/legacy/api
copying build/lib/warehouse/legacy/api/__init__.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/legacy/api
copying build/lib/warehouse/legacy/api/json.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/legacy/api
copying build/lib/warehouse/legacy/api/pypi.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/legacy/api
copying build/lib/warehouse/legacy/api/simple.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/legacy/api
copying build/lib/warehouse/legacy/api/xmlrpc.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/legacy/api
copying build/lib/warehouse/legacy/tables.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/legacy
copying build/lib/warehouse/logging.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse
creating /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations
copying build/lib/warehouse/migrations/env.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations
copying build/lib/warehouse/migrations/script.py.mako -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations
creating /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions
copying build/lib/warehouse/migrations/versions/10cb17aea73_default_hosting_mode_to_pypi_only.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions
copying build/lib/warehouse/migrations/versions/111d8fc0443_use_enums_instead_of_text.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions
copying build/lib/warehouse/migrations/versions/116be7c87e1_add_a_sitemap_bucket_column_to_user.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions
copying build/lib/warehouse/migrations/versions/128a0ead322_add_primary_key_roles.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions
copying build/lib/warehouse/migrations/versions/1ce6d45d7ef_readd_the_unique_constraint_on_pep426_.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions
copying build/lib/warehouse/migrations/versions/1f002cab0a7_add_size_signature_and_docs.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions
copying build/lib/warehouse/migrations/versions/20f4dbe11e9_normalize_function.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions
copying build/lib/warehouse/migrations/versions/23a3c4ffe5d_relax_normalization_rules.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions
copying build/lib/warehouse/migrations/versions/283c68f2ab2_initial_migration.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions
copying build/lib/warehouse/migrations/versions/28a7e805fd0_drop_denormalized_normalized_name_field.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions
copying build/lib/warehouse/migrations/versions/312040efcfe_default_upload_time_to_now.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions
copying build/lib/warehouse/migrations/versions/3af8d0006ba_normalize_runs_of_characters_to_a_.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions
copying build/lib/warehouse/migrations/versions/41abd35caa3_add_index_on_release_created.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions
copying build/lib/warehouse/migrations/versions/41e9207fbe5_remove_the_description_html_column.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions
copying build/lib/warehouse/migrations/versions/49b93c346db_merge_1f002cab0a7_and_28a7e805fd0.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions
copying build/lib/warehouse/migrations/versions/4ec0adada10_add_function_to_convert_string_to_bucket.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions
copying build/lib/warehouse/migrations/versions/5345b1bc8b9_add_a_sitemap_bucket_column_to_project.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions
copying build/lib/warehouse/migrations/versions/57b1053998d_merge_41e9207fbe5_and_1ce6d45d7ef.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions
copying build/lib/warehouse/migrations/versions/5988e3e8d2e_add_primary_key_to_release_files.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions
copying build/lib/warehouse/migrations/versions/5ff0c99c94_add_primary_key_to_dependency.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions
copying build/lib/warehouse/migrations/versions/91508cc5c2_add_pep_426_normalize_index.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions
copying build/lib/warehouse/migrations/versions/9177113533_add_a_column_to_specify_a_project_.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions
creating /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/packaging
copying build/lib/warehouse/packaging/__init__.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/packaging
copying build/lib/warehouse/packaging/interfaces.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/packaging
copying build/lib/warehouse/packaging/models.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/packaging
copying build/lib/warehouse/packaging/search.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/packaging
copying build/lib/warehouse/packaging/services.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/packaging
copying build/lib/warehouse/packaging/views.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/packaging
copying build/lib/warehouse/raven.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse
copying build/lib/warehouse/redirects.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse
copying build/lib/warehouse/routes.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse
copying build/lib/warehouse/search.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse
copying build/lib/warehouse/sessions.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse
creating /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/sitemap
copying build/lib/warehouse/sitemap/__init__.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/sitemap
copying build/lib/warehouse/sitemap/models.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/sitemap
copying build/lib/warehouse/sitemap/views.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/sitemap
creating /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/static
creating /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/static/css
copying build/lib/warehouse/static/css/normalize-db1aae18.css -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/static/css
copying build/lib/warehouse/static/css/normalize.css -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/static/css
copying build/lib/warehouse/static/css/style-696bf423.css -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/static/css
copying build/lib/warehouse/static/css/style.css -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/static/css
creating /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/static/images
copying build/lib/warehouse/static/images/logo.png -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/static/images
copying build/lib/warehouse/static/images/search-icon.png -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/static/images
copying build/lib/warehouse/static/manifest.json -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/static
creating /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/static/sass
copying build/lib/warehouse/static/sass/_comments.scss -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/static/sass
copying build/lib/warehouse/static/sass/_flash.scss -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/static/sass
copying build/lib/warehouse/static/sass/_header.scss -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/static/sass
copying build/lib/warehouse/static/sass/_project.scss -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/static/sass
copying build/lib/warehouse/static/sass/_search-bar.scss -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/static/sass
copying build/lib/warehouse/static/sass/_stats.scss -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/static/sass
copying build/lib/warehouse/static/sass/_utils.scss -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/static/sass
creating /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/static/sass/base
copying build/lib/warehouse/static/sass/base/_base.scss -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/static/sass/base
copying build/lib/warehouse/static/sass/base/_buttons.scss -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/static/sass/base
copying build/lib/warehouse/static/sass/base/_forms.scss -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/static/sass/base
copying build/lib/warehouse/static/sass/base/_grid-settings.scss -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/static/sass/base
copying build/lib/warehouse/static/sass/base/_lists.scss -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/static/sass/base
copying build/lib/warehouse/static/sass/base/_tables.scss -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/static/sass/base
copying build/lib/warehouse/static/sass/base/_typography.scss -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/static/sass/base
copying build/lib/warehouse/static/sass/base/_variables.scss -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/static/sass/base
copying build/lib/warehouse/static/sass/style.scss -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/static/sass
creating /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/templates
creating /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/templates/accounts
copying build/lib/warehouse/templates/accounts/login.html -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/templates/accounts
copying build/lib/warehouse/templates/accounts/logout.html -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/templates/accounts
copying build/lib/warehouse/templates/accounts/profile.html -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/templates/accounts
copying build/lib/warehouse/templates/base.html -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/templates
creating /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/templates/includes
copying build/lib/warehouse/templates/includes/current-user-indicator.html -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/templates/includes
copying build/lib/warehouse/templates/index.html -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/templates
creating /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/templates/legacy
creating /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/templates/legacy/api
creating /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/templates/legacy/api/simple
copying build/lib/warehouse/templates/legacy/api/simple/detail.html -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/templates/legacy/api/simple
copying build/lib/warehouse/templates/legacy/api/simple/index.html -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/templates/legacy/api/simple
creating /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/templates/packaging
copying build/lib/warehouse/templates/packaging/detail.html -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/templates/packaging
creating /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/templates/packaging/includes
copying build/lib/warehouse/templates/packaging/includes/project-stats.html -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/templates/packaging/includes
copying build/lib/warehouse/templates/robots.txt -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/templates
creating /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/templates/sitemap
copying build/lib/warehouse/templates/sitemap/bucket.xml -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/templates/sitemap
copying build/lib/warehouse/templates/sitemap/index.xml -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/templates/sitemap
creating /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/translations
creating /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/translations/en
creating /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/translations/en/LC_MESSAGES
copying build/lib/warehouse/translations/en/LC_MESSAGES/warehouse.po -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/translations/en/LC_MESSAGES
copying build/lib/warehouse/translations/warehouse.pot -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/translations
creating /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/utils
copying build/lib/warehouse/utils/__init__.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/utils
copying build/lib/warehouse/utils/attrs.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/utils
copying build/lib/warehouse/utils/crypto.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/utils
copying build/lib/warehouse/utils/gravatar.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/utils
copying build/lib/warehouse/utils/http.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/utils
copying build/lib/warehouse/utils/static.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/utils
copying build/lib/warehouse/utils/wsgi.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/utils
copying build/lib/warehouse/views.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse
copying build/lib/warehouse/wsgi.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/__about__.py to __about__.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/__init__.py to __init__.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/__main__.py to __main__.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/accounts/__init__.py to __init__.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/accounts/auth_policy.py to auth_policy.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/accounts/forms.py to forms.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/accounts/interfaces.py to interfaces.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/accounts/models.py to models.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/accounts/services.py to services.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/accounts/views.py to views.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/aws.py to aws.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cache/__init__.py to __init__.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cache/http.py to http.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cache/origin/__init__.py to __init__.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cache/origin/fastly.py to fastly.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cache/origin/interfaces.py to interfaces.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/celery.py to celery.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/classifiers/__init__.py to __init__.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/classifiers/models.py to models.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cli/__init__.py to __init__.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cli/db/__init__.py to __init__.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cli/db/branches.py to branches.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cli/db/current.py to current.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cli/db/downgrade.py to downgrade.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cli/db/heads.py to heads.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cli/db/history.py to history.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cli/db/merge.py to merge.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cli/db/revision.py to revision.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cli/db/show.py to show.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cli/db/stamp.py to stamp.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cli/db/upgrade.py to upgrade.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cli/search/__init__.py to __init__.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cli/search/reindex.py to reindex.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/cli/shell.py to shell.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/config.py to config.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/csrf.py to csrf.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/db.py to db.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/filters.py to filters.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/forms.py to forms.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/i18n/__init__.py to __init__.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/i18n/filters.py to filters.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/i18n/translations.py to translations.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/legacy/__init__.py to __init__.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/legacy/action_routing.py to action_routing.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/legacy/api/__init__.py to __init__.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/legacy/api/json.py to json.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/legacy/api/pypi.py to pypi.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/legacy/api/simple.py to simple.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/legacy/api/xmlrpc.py to xmlrpc.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/legacy/tables.py to tables.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/logging.py to logging.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/env.py to env.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions/10cb17aea73_default_hosting_mode_to_pypi_only.py to 10cb17aea73_default_hosting_mode_to_pypi_only.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions/111d8fc0443_use_enums_instead_of_text.py to 111d8fc0443_use_enums_instead_of_text.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions/116be7c87e1_add_a_sitemap_bucket_column_to_user.py to 116be7c87e1_add_a_sitemap_bucket_column_to_user.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions/128a0ead322_add_primary_key_roles.py to 128a0ead322_add_primary_key_roles.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions/1ce6d45d7ef_readd_the_unique_constraint_on_pep426_.py to 1ce6d45d7ef_readd_the_unique_constraint_on_pep426_.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions/1f002cab0a7_add_size_signature_and_docs.py to 1f002cab0a7_add_size_signature_and_docs.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions/20f4dbe11e9_normalize_function.py to 20f4dbe11e9_normalize_function.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions/23a3c4ffe5d_relax_normalization_rules.py to 23a3c4ffe5d_relax_normalization_rules.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions/283c68f2ab2_initial_migration.py to 283c68f2ab2_initial_migration.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions/28a7e805fd0_drop_denormalized_normalized_name_field.py to 28a7e805fd0_drop_denormalized_normalized_name_field.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions/312040efcfe_default_upload_time_to_now.py to 312040efcfe_default_upload_time_to_now.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions/3af8d0006ba_normalize_runs_of_characters_to_a_.py to 3af8d0006ba_normalize_runs_of_characters_to_a_.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions/41abd35caa3_add_index_on_release_created.py to 41abd35caa3_add_index_on_release_created.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions/41e9207fbe5_remove_the_description_html_column.py to 41e9207fbe5_remove_the_description_html_column.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions/49b93c346db_merge_1f002cab0a7_and_28a7e805fd0.py to 49b93c346db_merge_1f002cab0a7_and_28a7e805fd0.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions/4ec0adada10_add_function_to_convert_string_to_bucket.py to 4ec0adada10_add_function_to_convert_string_to_bucket.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions/5345b1bc8b9_add_a_sitemap_bucket_column_to_project.py to 5345b1bc8b9_add_a_sitemap_bucket_column_to_project.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions/57b1053998d_merge_41e9207fbe5_and_1ce6d45d7ef.py to 57b1053998d_merge_41e9207fbe5_and_1ce6d45d7ef.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions/5988e3e8d2e_add_primary_key_to_release_files.py to 5988e3e8d2e_add_primary_key_to_release_files.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions/5ff0c99c94_add_primary_key_to_dependency.py to 5ff0c99c94_add_primary_key_to_dependency.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions/91508cc5c2_add_pep_426_normalize_index.py to 91508cc5c2_add_pep_426_normalize_index.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/migrations/versions/9177113533_add_a_column_to_specify_a_project_.py to 9177113533_add_a_column_to_specify_a_project_.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/packaging/__init__.py to __init__.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/packaging/interfaces.py to interfaces.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/packaging/models.py to models.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/packaging/search.py to search.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/packaging/services.py to services.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/packaging/views.py to views.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/raven.py to raven.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/redirects.py to redirects.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/routes.py to routes.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/search.py to search.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/sessions.py to sessions.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/sitemap/__init__.py to __init__.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/sitemap/models.py to models.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/sitemap/views.py to views.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/utils/__init__.py to __init__.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/utils/attrs.py to attrs.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/utils/crypto.py to crypto.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/utils/gravatar.py to gravatar.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/utils/http.py to http.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/utils/static.py to static.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/utils/wsgi.py to wsgi.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/views.py to views.cpython-35.pyc
byte-compiling /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/wsgi.py to wsgi.cpython-35.pyc
running install_egg_info
Copying warehouse.egg-info to /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse-15.0.dev0-py3.5.egg-info
running install_scripts
Installing warehouse script to /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/bin
writing list of installed files to '/dev/null'
```

This gets worse if the project has files that don't successfully byte compile on the current version of Python (for instance, if they have 2.x or 3.x only files that get installed but which have syntax errors on the current version of Python). We attempted to reduce the verbosity of this by filtering the output lines against a regex... but it's not really reliable to do that and it commonly broke down on byte-compile errors because they look exactly like actual errors.

I challenge you to point out even a single line in that output that an end user should care about, and that's when it's run with `-q` (which doesn't actually do much by default, both with and without has the same output).

But OK, so `-q` is pretty much useless, maybe we can just present stderr to the end user and let that pass through? Well, except distutils/setuptools is completely bonkers on that front too, here's what you get on stderr by default (again with `-q`):

``` console
$ python setup.py install --single-version-externally-managed --record /dev/null > /dev/null
package init file 'warehouse/migrations/__init__.py' not found (or not a regular file)
warning: no previously-included files found matching 'requirements.txt'
warning: no previously-included files found matching 'requirements-dev.txt'
warning: no previously-included files found matching 'requirements-deploy.txt'
warning: no previously-included files found matching 'babel.cfg'
warning: no previously-included files found matching 'Makefile'
warning: no previously-included files found matching 'Gulpfile.js'
warning: no previously-included files found matching 'package.json'
warning: no previously-included files found matching '.dockerignore'
warning: no previously-included files found matching 'Dockerfile'
warning: no previously-included files found matching 'docker-compose.yml'
warning: no previously-included files found matching 'Procfile'
warning: no previously-included files found matching 'runtime.txt'
warning: no previously-included files found matching 'uwsgi.ini'
no previously-included directories found matching 'bin'
no previously-included directories found matching 'vcl'
no previously-included directories found matching '.travis'
no previously-included directories found matching 'dev'
no previously-included directories found matching 'docs/_build'
no previously-included directories found matching 'tasks'
```

Great, still a bunch of crap nobody actually cares about.

> Cutting away important messages such as which libraries were used to
> build an extension, which options are enabled/disabled based on the
> installed libs, or failure to compile an option part of an extension
> is not something I'd call "crap nobody actually cared about".
> 
> Not showing this output will make the user experience worse,
> not better, since people will have a hard time debugging the reasons
> why their installation is not working correctly.

A better way to handle this is for these projects to record what options are enabled/disabled, what libraries they compiled against, and things of that nature and present it as a something that can be inspected from the installed distribution. Perhaps something like `python -m foo.compileopts` or something. The reason this is better is because it persists past the time when the project is actually being built which may be days, months, or even years ago from when the person is attempting to debug why something doesn't work. This is even more true now than it used to be thanks to the automatic Wheel cache in pip which means that someone could have built say, Pillow, without PNG support 6 months ago and are attempting to figure out now why they can't interact with PNGs. Showing them that information 6 months ago doesn't help them today, but Pillow providing a way to see what options it was compiled with does.

I believe that even when these projects were able to output information on to stdout/stderr that most users simply didn't see it because a `pip install` on any moderately sized project would simply produce pages and pages of output with 99% of it being useless noise.

On 02.11.2015 15:44, Paul Moore wrote:

> > Cutting away important messages such as which libraries were used to
> > build an extension, which options are enabled/disabled based on the
> > installed libs, or failure to compile an option part of an extension
> > is not something I'd call "crap nobody actually cared about".
> 
> While in principle I agree with you, the feedback we got from pip users was that they genuinely didn't want to see the output being produced. It's not so much the failure case, where the output is "merely" unhelpfully verbose, but the success case, where it's genuinely not of interest.
> 
> I don't particularly defend our users' preference for hiding the data (even though as a user I agree with it) but it was the feedback we got, and we took the decision we did because of it.

Defaulting to low verbosity is fine, as long as it's possible
to adjust the verbosity level and also possible to check a log
will the output after pip install has run (in both the success and
error case).

pip users may not be aware that a packages makes decisions for
them during the install and needs to inform them about those
choices.

Examples: setup.py might find an old OpenSSL lib version due
to missing include path setups and then build against this,
opening up the user to vulnerabilities, or it may leave out
building a sub-package because it cannot find the needed include
files or tools to build them.

Since you're interfacing to the build process via command line
rather than using distutils, you could define an text output format
for the build process to use which pip can then parse and display
correctly. Alternatively, the log data could be sent to an XML
file via a setup.py option.

> > This is really poor UI design, IMO.
> 
> Maybe you're right. The history is that pip's UI design has never been that good (arguably because setuptools/distutils didn't really offer what pip needed to manage it well as a subprocess, but the reason why is not really important). We're slowly improving it as best we can, but it's not simple to do so, particularly given the conflicting demands of the various parts of our user base.
> 
> Suggestions (or better yet, code ;-)) are always welcome, but should take into account what pip users have said they want (which is minimal output by default in the success case).

See above.

## 

Marc-Andre Lemburg
http://www.malemburg.com/

Note: Adding more `-q` does make it better, in this case for the simple example above, it devolves into the stderr case. So here's a more complex example using multiple `-q`:

``` console
$ python setup.py install -qqqqqqq --single-version-externally-managed --record /dev/null
running install
running build
running build_py
creating build
creating build/lib.macosx-10.11-x86_64-3.5
creating build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/__init__.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/_binary.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/_util.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/BdfFontFile.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/BmpImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/BufrStubImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/ContainerIO.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/CurImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/DcxImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/EpsImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/ExifTags.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/features.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/FitsStubImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/FliImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/FontFile.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/FpxImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/GbrImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/GdImageFile.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/GifImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/GimpGradientFile.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/GimpPaletteFile.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/GribStubImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/Hdf5StubImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/IcnsImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/IcoImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/Image.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/ImageChops.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/ImageCms.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/ImageColor.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/ImageDraw.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/ImageDraw2.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/ImageEnhance.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/ImageFile.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/ImageFilter.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/ImageFont.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/ImageGrab.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/ImageMath.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/ImageMode.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/ImageMorph.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/ImageOps.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/ImagePalette.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/ImagePath.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/ImageQt.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/ImageSequence.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/ImageShow.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/ImageStat.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/ImageTk.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/ImageTransform.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/ImageWin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/ImImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/ImtImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/IptcImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/Jpeg2KImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/JpegImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/JpegPresets.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/McIdasImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/MicImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/MpegImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/MpoImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/MspImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/OleFileIO.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/PaletteFile.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/PalmImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/PcdImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/PcfFontFile.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/PcxImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/PdfImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/PixarImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/PngImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/PpmImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/PsdImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/PSDraw.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/PyAccess.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/SgiImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/SpiderImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/SunImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/TarIO.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/TgaImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/TiffImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/TiffTags.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/WalImageFile.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/WebPImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/WmfImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/XbmImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/XpmImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
copying PIL/XVThumbImagePlugin.py -> build/lib.macosx-10.11-x86_64-3.5/PIL
running egg_info
writing dependency_links to Pillow.egg-info/dependency_links.txt
writing top-level names to Pillow.egg-info/top_level.txt
writing Pillow.egg-info/PKG-INFO
reading manifest file 'Pillow.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'Pillow.egg-info/SOURCES.txt'
copying PIL/OleFileIO-README.md -> build/lib.macosx-10.11-x86_64-3.5/PIL
running build_ext
--- using frameworks at /System/Library/Frameworks
building 'PIL._imaging' extension
creating build/temp.macosx-10.11-x86_64-3.5
creating build/temp.macosx-10.11-x86_64-3.5/libImaging
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c _imaging.c -o build/temp.macosx-10.11-x86_64-3.5/_imaging.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c outline.c -o build/temp.macosx-10.11-x86_64-3.5/outline.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/Bands.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/Bands.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/ConvertYCbCr.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/ConvertYCbCr.o
_imaging.c:488:7: warning: variable 'r' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
                if (PyLong_Check(color)) {
                    ^~~~~~~~~~~~~~~~~~~
/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m/longobject.h:15:9: note: expanded from macro 'PyLong_Check'
        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m/object.h:666:35: note: expanded from macro 'PyType_FastSubclass'
#define PyType_FastSubclass(t,f)  PyType_HasFeature(t,f)
                                  ^~~~~~~~~~~~~~~~~~~~~~
/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m/object.h:664:33: note: expanded from macro 'PyType_HasFeature'
#define PyType_HasFeature(t,f)  (((t)->tp_flags & (f)) != 0)
                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
_imaging.c:498:7: note: uninitialized use occurs here
                if (r == -1 && PyErr_Occurred())
                    ^
_imaging.c:488:3: note: remove the 'if' if its condition is always true
                if (PyLong_Check(color)) {
                ^~~~~~~~~~~~~~~~~~~~~~~~~
_imaging.c:477:10: note: initialize the variable 'r' to silence this warning
    int r, g, b, a;
         ^
          = 0
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c path.c -o build/temp.macosx-10.11-x86_64-3.5/path.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/Copy.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/Copy.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/BitDecode.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/BitDecode.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/Crc32.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/Crc32.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/Blend.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/Blend.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/Crop.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/Crop.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/Access.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/Access.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/Chops.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/Chops.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/Dib.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/Dib.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/Draw.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/Draw.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/AlphaComposite.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/AlphaComposite.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/Convert.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/Convert.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/Resample.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/Resample.o
1 warning generated.
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c decode.c -o build/temp.macosx-10.11-x86_64-3.5/decode.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/Filter.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/Filter.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/Effects.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/Effects.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c encode.c -o build/temp.macosx-10.11-x86_64-3.5/encode.o
encode.c:57:43: warning: comparison of constant 0 with boolean expression is always false [-Wtautological-constant-out-of-range-compare]
    if(!PyType_Ready(&ImagingEncoderType) < 0)
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/EpsEncode.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/EpsEncode.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/FliDecode.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/FliDecode.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/GifEncode.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/GifEncode.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/File.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/File.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/Geometry.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/Geometry.o
1 warning generated.
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c map.c -o build/temp.macosx-10.11-x86_64-3.5/map.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/Fill.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/Fill.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c display.c -o build/temp.macosx-10.11-x86_64-3.5/display.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/HexDecode.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/HexDecode.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/LzwDecode.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/LzwDecode.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/Offset.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/Offset.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/Histo.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/Histo.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/Matrix.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/Matrix.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/Pack.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/Pack.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/JpegDecode.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/JpegDecode.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/ModeFilter.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/ModeFilter.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/MspDecode.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/MspDecode.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/JpegEncode.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/JpegEncode.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/GetBBox.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/GetBBox.o
libImaging/JpegEncode.c:233:37: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long') [-Wsign-compare]
        if (context->rawExifLen + 5 >  context->destination.pub.free_in_buffer){
            ~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/PackDecode.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/PackDecode.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/Negative.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/Negative.o
1 warning generated.
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/Quant.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/Quant.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/GifDecode.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/GifDecode.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/Palette.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/Palette.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/PcxDecode.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/PcxDecode.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/PcxEncode.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/PcxEncode.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/RawEncode.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/RawEncode.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/Paste.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/Paste.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/Point.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/Point.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/Storage.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/Storage.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/RankFilter.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/RankFilter.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/SunRleDecode.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/SunRleDecode.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/QuantOctree.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/QuantOctree.o
libImaging/QuantOctree.c:188:20: warning: comparison of integers of different signs: 'unsigned int' and 'int' [-Wsign-compare]
   if (cube->rBits > rBits) {
       ~~~~~~~~~~~ ^ ~~~~~
libImaging/QuantOctree.c:195:20: warning: comparison of integers of different signs: 'unsigned int' and 'int' [-Wsign-compare]
   if (cube->gBits > gBits) {
       ~~~~~~~~~~~ ^ ~~~~~
libImaging/QuantOctree.c:202:20: warning: comparison of integers of different signs: 'unsigned int' and 'int' [-Wsign-compare]
   if (cube->bBits > bBits) {
       ~~~~~~~~~~~ ^ ~~~~~
libImaging/QuantOctree.c:209:20: warning: comparison of integers of different signs: 'unsigned int' and 'int' [-Wsign-compare]
   if (cube->aBits > aBits) {
       ~~~~~~~~~~~ ^ ~~~~~
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/TgaRleDecode.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/TgaRleDecode.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/RawDecode.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/RawDecode.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/UnpackYCC.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/UnpackYCC.o
4 warnings generated.
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/QuantHash.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/QuantHash.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/Unpack.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/Unpack.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/ZipEncode.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/ZipEncode.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/UnsharpMask.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/UnsharpMask.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/QuantHeap.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/QuantHeap.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/TiffDecode.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/TiffDecode.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/XbmDecode.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/XbmDecode.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/PcdDecode.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/PcdDecode.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/XbmEncode.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/XbmEncode.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/Incremental.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/Incremental.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/BoxBlur.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/BoxBlur.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/ZipDecode.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/ZipDecode.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/Jpeg2KDecode.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/Jpeg2KDecode.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_LIBJPEG -DHAVE_LIBZ -DHAVE_LIBTIFF -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c libImaging/Jpeg2KEncode.c -o build/temp.macosx-10.11-x86_64-3.5/libImaging/Jpeg2KEncode.o
Building using 4 processes
clang -bundle -undefined dynamic_lookup -L/usr/local/opt/openssl/lib -L/Users/dstufft/.pyenv/versions/3.5.0/lib build/temp.macosx-10.11-x86_64-3.5/_imaging.o build/temp.macosx-10.11-x86_64-3.5/decode.o build/temp.macosx-10.11-x86_64-3.5/encode.o build/temp.macosx-10.11-x86_64-3.5/map.o build/temp.macosx-10.11-x86_64-3.5/display.o build/temp.macosx-10.11-x86_64-3.5/outline.o build/temp.macosx-10.11-x86_64-3.5/path.o build/temp.macosx-10.11-x86_64-3.5/libImaging/Access.o build/temp.macosx-10.11-x86_64-3.5/libImaging/AlphaComposite.o build/temp.macosx-10.11-x86_64-3.5/libImaging/Resample.o build/temp.macosx-10.11-x86_64-3.5/libImaging/Bands.o build/temp.macosx-10.11-x86_64-3.5/libImaging/BitDecode.o build/temp.macosx-10.11-x86_64-3.5/libImaging/Blend.o build/temp.macosx-10.11-x86_64-3.5/libImaging/Chops.o build/temp.macosx-10.11-x86_64-3.5/libImaging/Convert.o build/temp.macosx-10.11-x86_64-3.5/libImaging/ConvertYCbCr.o build/temp.macosx-10.11-x86_64-3.5/libImaging/Copy.o build/temp.macosx-10.11-x86_64-3.5/libImaging/Crc32.o build/temp.macosx-10.11-x86_64-3.5/libImaging/Crop.o build/temp.macosx-10.11-x86_64-3.5/libImaging/Dib.o build/temp.macosx-10.11-x86_64-3.5/libImaging/Draw.o build/temp.macosx-10.11-x86_64-3.5/libImaging/Effects.o build/temp.macosx-10.11-x86_64-3.5/libImaging/EpsEncode.o build/temp.macosx-10.11-x86_64-3.5/libImaging/File.o build/temp.macosx-10.11-x86_64-3.5/libImaging/Fill.o build/temp.macosx-10.11-x86_64-3.5/libImaging/Filter.o build/temp.macosx-10.11-x86_64-3.5/libImaging/FliDecode.o build/temp.macosx-10.11-x86_64-3.5/libImaging/Geometry.o build/temp.macosx-10.11-x86_64-3.5/libImaging/GetBBox.o build/temp.macosx-10.11-x86_64-3.5/libImaging/GifDecode.o build/temp.macosx-10.11-x86_64-3.5/libImaging/GifEncode.o build/temp.macosx-10.11-x86_64-3.5/libImaging/HexDecode.o build/temp.macosx-10.11-x86_64-3.5/libImaging/Histo.o build/temp.macosx-10.11-x86_64-3.5/libImaging/JpegDecode.o build/temp.macosx-10.11-x86_64-3.5/libImaging/JpegEncode.o build/temp.macosx-10.11-x86_64-3.5/libImaging/LzwDecode.o build/temp.macosx-10.11-x86_64-3.5/libImaging/Matrix.o build/temp.macosx-10.11-x86_64-3.5/libImaging/ModeFilter.o build/temp.macosx-10.11-x86_64-3.5/libImaging/MspDecode.o build/temp.macosx-10.11-x86_64-3.5/libImaging/Negative.o build/temp.macosx-10.11-x86_64-3.5/libImaging/Offset.o build/temp.macosx-10.11-x86_64-3.5/libImaging/Pack.o build/temp.macosx-10.11-x86_64-3.5/libImaging/PackDecode.o build/temp.macosx-10.11-x86_64-3.5/libImaging/Palette.o build/temp.macosx-10.11-x86_64-3.5/libImaging/Paste.o build/temp.macosx-10.11-x86_64-3.5/libImaging/Quant.o build/temp.macosx-10.11-x86_64-3.5/libImaging/QuantOctree.o build/temp.macosx-10.11-x86_64-3.5/libImaging/QuantHash.o build/temp.macosx-10.11-x86_64-3.5/libImaging/QuantHeap.o build/temp.macosx-10.11-x86_64-3.5/libImaging/PcdDecode.o build/temp.macosx-10.11-x86_64-3.5/libImaging/PcxDecode.o build/temp.macosx-10.11-x86_64-3.5/libImaging/PcxEncode.o build/temp.macosx-10.11-x86_64-3.5/libImaging/Point.o build/temp.macosx-10.11-x86_64-3.5/libImaging/RankFilter.o build/temp.macosx-10.11-x86_64-3.5/libImaging/RawDecode.o build/temp.macosx-10.11-x86_64-3.5/libImaging/RawEncode.o build/temp.macosx-10.11-x86_64-3.5/libImaging/Storage.o build/temp.macosx-10.11-x86_64-3.5/libImaging/SunRleDecode.o build/temp.macosx-10.11-x86_64-3.5/libImaging/TgaRleDecode.o build/temp.macosx-10.11-x86_64-3.5/libImaging/Unpack.o build/temp.macosx-10.11-x86_64-3.5/libImaging/UnpackYCC.o build/temp.macosx-10.11-x86_64-3.5/libImaging/UnsharpMask.o build/temp.macosx-10.11-x86_64-3.5/libImaging/XbmDecode.o build/temp.macosx-10.11-x86_64-3.5/libImaging/XbmEncode.o build/temp.macosx-10.11-x86_64-3.5/libImaging/ZipDecode.o build/temp.macosx-10.11-x86_64-3.5/libImaging/ZipEncode.o build/temp.macosx-10.11-x86_64-3.5/libImaging/TiffDecode.o build/temp.macosx-10.11-x86_64-3.5/libImaging/Incremental.o build/temp.macosx-10.11-x86_64-3.5/libImaging/Jpeg2KDecode.o build/temp.macosx-10.11-x86_64-3.5/libImaging/Jpeg2KEncode.o build/temp.macosx-10.11-x86_64-3.5/libImaging/BoxBlur.o -L/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib -L/usr/local/lib -L/usr/local/Cellar/freetype/2.6_1/lib -L/usr/lib -ljpeg -lz -ltiff -o build/lib.macosx-10.11-x86_64-3.5/PIL/_imaging.cpython-35m-darwin.so
building 'PIL._imagingft' extension
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c _imagingft.c -o build/temp.macosx-10.11-x86_64-3.5/_imagingft.o
_imagingft.c:400:27: warning: comparison of integers of different signs: 'int' and 'unsigned int' [-Wsign-compare]
            for (y = 0; y < glyph->bitmap.rows; y++) {
                        ~ ^ ~~~~~~~~~~~~~~~~~~
_imagingft.c:419:27: warning: comparison of integers of different signs: 'int' and 'unsigned int' [-Wsign-compare]
            for (y = 0; y < glyph->bitmap.rows; y++) {
                        ~ ^ ~~~~~~~~~~~~~~~~~~
2 warnings generated.
Building using 4 processes
clang -bundle -undefined dynamic_lookup -L/usr/local/opt/openssl/lib -L/Users/dstufft/.pyenv/versions/3.5.0/lib build/temp.macosx-10.11-x86_64-3.5/_imagingft.o -L/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib -L/usr/local/lib -L/usr/local/Cellar/freetype/2.6_1/lib -L/usr/lib -lfreetype -o build/lib.macosx-10.11-x86_64-3.5/PIL/_imagingft.cpython-35m-darwin.so
building 'PIL._webp' extension
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -DHAVE_WEBPMUX -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c _webp.c -o build/temp.macosx-10.11-x86_64-3.5/_webp.o
Building using 4 processes
clang -bundle -undefined dynamic_lookup -L/usr/local/opt/openssl/lib -L/Users/dstufft/.pyenv/versions/3.5.0/lib build/temp.macosx-10.11-x86_64-3.5/_webp.o -L/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib -L/usr/local/lib -L/usr/local/Cellar/freetype/2.6_1/lib -L/usr/lib -lwebp -lwebpmux -lwebpdemux -o build/lib.macosx-10.11-x86_64-3.5/PIL/_webp.cpython-35m-darwin.so
building 'PIL._imagingtk' extension
creating build/temp.macosx-10.11-x86_64-3.5/Tk
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c _imagingtk.c -o build/temp.macosx-10.11-x86_64-3.5/_imagingtk.o -framework Tcl -framework Tk
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c Tk/tkImaging.c -o build/temp.macosx-10.11-x86_64-3.5/Tk/tkImaging.o -framework Tcl -framework Tk
clang: warning: -framework Tcl: 'linker' input unused
clang: warning: -framework Tk: 'linker' input unused
clang: warning: -framework Tcl: 'linker' input unused
clang: warning: -framework Tk: 'linker' input unused
Building using 4 processes
clang -bundle -undefined dynamic_lookup -L/usr/local/opt/openssl/lib -L/Users/dstufft/.pyenv/versions/3.5.0/lib build/temp.macosx-10.11-x86_64-3.5/_imagingtk.o build/temp.macosx-10.11-x86_64-3.5/Tk/tkImaging.o -L/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib -L/usr/local/lib -L/usr/local/Cellar/freetype/2.6_1/lib -L/usr/lib -o build/lib.macosx-10.11-x86_64-3.5/PIL/_imagingtk.cpython-35m-darwin.so -framework Tcl -framework Tk
building 'PIL._imagingmath' extension
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c _imagingmath.c -o build/temp.macosx-10.11-x86_64-3.5/_imagingmath.o
Building using 4 processes
clang -bundle -undefined dynamic_lookup -L/usr/local/opt/openssl/lib -L/Users/dstufft/.pyenv/versions/3.5.0/lib build/temp.macosx-10.11-x86_64-3.5/_imagingmath.o -L/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib -L/usr/local/lib -L/usr/local/Cellar/freetype/2.6_1/lib -L/usr/lib -o build/lib.macosx-10.11-x86_64-3.5/PIL/_imagingmath.cpython-35m-darwin.so
building 'PIL._imagingmorph' extension
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/System/Library/Frameworks/Tcl.framework/Versions/8.5/Headers -I/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers -I/usr/local/Cellar/freetype/2.6_1/include/freetype2 -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/Pillow-3.0.0/libImaging -I/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/include -I/usr/local/include -I/usr/local/Cellar/freetype/2.6_1/include -I/usr/include -I/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m -c _imagingmorph.c -o build/temp.macosx-10.11-x86_64-3.5/_imagingmorph.o
Building using 4 processes
clang -bundle -undefined dynamic_lookup -L/usr/local/opt/openssl/lib -L/Users/dstufft/.pyenv/versions/3.5.0/lib build/temp.macosx-10.11-x86_64-3.5/_imagingmorph.o -L/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib -L/usr/local/lib -L/usr/local/Cellar/freetype/2.6_1/lib -L/usr/lib -o build/lib.macosx-10.11-x86_64-3.5/PIL/_imagingmorph.cpython-35m-darwin.so
--------------------------------------------------------------------
PIL SETUP SUMMARY
--------------------------------------------------------------------
version      Pillow 3.0.0
platform     darwin 3.5.0 (default, Oct  8 2015, 21:08:25)
             [GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.72)]
--------------------------------------------------------------------
--- TKINTER support available
--- JPEG support available
*** OPENJPEG (JPEG2000) support not available
--- ZLIB (PNG/ZIP) support available
--- LIBTIFF support available
--- FREETYPE2 support available
*** LITTLECMS2 support not available
--- WEBP support available
--- WEBPMUX support available
--------------------------------------------------------------------
To add a missing option, make sure you have the required
library, and set the corresponding ROOT variable in the
setup.py script.

To check the build, run the selftest.py script.

running build_scripts
creating build/scripts-3.5
copying Scripts/createfontdatachunk.py -> build/scripts-3.5
copying and adjusting Scripts/enhancer.py -> build/scripts-3.5
copying and adjusting Scripts/explode.py -> build/scripts-3.5
copying and adjusting Scripts/gifmaker.py -> build/scripts-3.5
copying and adjusting Scripts/painter.py -> build/scripts-3.5
copying and adjusting Scripts/pilconvert.py -> build/scripts-3.5
copying and adjusting Scripts/pildriver.py -> build/scripts-3.5
copying and adjusting Scripts/pilfile.py -> build/scripts-3.5
copying and adjusting Scripts/pilfont.py -> build/scripts-3.5
copying and adjusting Scripts/pilprint.py -> build/scripts-3.5
copying and adjusting Scripts/player.py -> build/scripts-3.5
copying and adjusting Scripts/thresholder.py -> build/scripts-3.5
copying and adjusting Scripts/viewer.py -> build/scripts-3.5
changing mode of build/scripts-3.5/createfontdatachunk.py from 644 to 755
changing mode of build/scripts-3.5/enhancer.py from 644 to 755
changing mode of build/scripts-3.5/explode.py from 644 to 755
changing mode of build/scripts-3.5/gifmaker.py from 644 to 755
changing mode of build/scripts-3.5/painter.py from 644 to 755
changing mode of build/scripts-3.5/pilconvert.py from 644 to 755
changing mode of build/scripts-3.5/pildriver.py from 644 to 755
changing mode of build/scripts-3.5/pilfile.py from 644 to 755
changing mode of build/scripts-3.5/pilfont.py from 644 to 755
changing mode of build/scripts-3.5/pilprint.py from 644 to 755
changing mode of build/scripts-3.5/player.py from 644 to 755
changing mode of build/scripts-3.5/thresholder.py from 644 to 755
changing mode of build/scripts-3.5/viewer.py from 644 to 755
running install_lib
copying build/lib.macosx-10.11-x86_64-3.5/PIL/_imaging.cpython-35m-darwin.so -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/PIL
copying build/lib.macosx-10.11-x86_64-3.5/PIL/_imagingft.cpython-35m-darwin.so -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/PIL
copying build/lib.macosx-10.11-x86_64-3.5/PIL/_imagingmath.cpython-35m-darwin.so -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/PIL
copying build/lib.macosx-10.11-x86_64-3.5/PIL/_imagingmorph.cpython-35m-darwin.so -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/PIL
copying build/lib.macosx-10.11-x86_64-3.5/PIL/_imagingtk.cpython-35m-darwin.so -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/PIL
copying build/lib.macosx-10.11-x86_64-3.5/PIL/_webp.cpython-35m-darwin.so -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/PIL
running install_egg_info
removing '/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/Pillow-3.0.0-py3.5.egg-info' (and everything under it)
Copying Pillow.egg-info to /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/Pillow-3.0.0-py3.5.egg-info
running install_scripts
copying build/scripts-3.5/enhancer.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/bin
copying build/scripts-3.5/explode.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/bin
copying build/scripts-3.5/gifmaker.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/bin
copying build/scripts-3.5/painter.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/bin
copying build/scripts-3.5/pilconvert.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/bin
copying build/scripts-3.5/pildriver.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/bin
copying build/scripts-3.5/pilfile.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/bin
copying build/scripts-3.5/pilfont.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/bin
copying build/scripts-3.5/pilprint.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/bin
copying build/scripts-3.5/player.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/bin
copying build/scripts-3.5/thresholder.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/bin
copying build/scripts-3.5/viewer.py -> /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/bin
changing mode of /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/bin/createfontdatachunk.py to 755
changing mode of /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/bin/enhancer.py to 755
changing mode of /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/bin/explode.py to 755
changing mode of /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/bin/gifmaker.py to 755
changing mode of /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/bin/painter.py to 755
changing mode of /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/bin/pilconvert.py to 755
changing mode of /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/bin/pildriver.py to 755
changing mode of /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/bin/pilfile.py to 755
changing mode of /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/bin/pilfont.py to 755
changing mode of /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/bin/pilprint.py to 755
changing mode of /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/bin/player.py to 755
changing mode of /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/bin/thresholder.py to 755
changing mode of /Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/bin/viewer.py to 755
writing list of installed files to '/dev/null'
```

The "nice" thing about this is that the extraneous crap from `setup.py` actually pushes the useful information 3-4 pages up on a fairly reasonable terminal size.

On 02.11.2015 15:47, Donald Stufft wrote:

> > You do know that setup.py has a way of defining verbosity to increase
> > or reduce the output volume, right ?
> 
> Yes I am. I'm also aware it's practically useless. Here's the output of a very basic `setup.py` being invoked with `-q`:
> 
> ``` console
> $ python setup.py install --single-version-externally-managed -q --record /dev/null
> ```

You need to pass -q to setup.py, not the command you're running.

Try:

python setup.py -q install ...

## 

Marc-Andre Lemburg
http://www.malemburg.com/

> Defaulting to low verbosity is fine, as long as it's possible
> to adjust the verbosity level and also possible to check a log
> will the output after pip install has run (in both the success and
> error case).

You can adjust the verbosity level using `-v` to pip which will allow the output of `setup.py` to be part of the stream without any filtering. For awhile we had the full output of every command logged but we ended up removing that because it was causing churn in the cache directory which helped contribute to systems which detected if they needed to re-persist the cache directory based on if anything changed in that directory to have unneeded cache churn.

``` console
$ python setup.py -qqqqqqqq install -qqqqqqq --single-version-externally-managed --record /dev/null
package init file 'warehouse/migrations/__init__.py' not found (or not a regular file)
warning: no previously-included files found matching 'requirements.txt'
warning: no previously-included files found matching 'requirements-dev.txt'
warning: no previously-included files found matching 'requirements-deploy.txt'
warning: no previously-included files found matching 'babel.cfg'
warning: no previously-included files found matching 'Makefile'
warning: no previously-included files found matching 'Gulpfile.js'
warning: no previously-included files found matching 'package.json'
warning: no previously-included files found matching '.dockerignore'
warning: no previously-included files found matching 'Dockerfile'
warning: no previously-included files found matching 'docker-compose.yml'
warning: no previously-included files found matching 'Procfile'
warning: no previously-included files found matching 'runtime.txt'
warning: no previously-included files found matching 'uwsgi.ini'
no previously-included directories found matching 'bin'
no previously-included directories found matching 'vcl'
no previously-included directories found matching '.travis'
no previously-included directories found matching 'dev'
no previously-included directories found matching 'docs/_build'
no previously-included directories found matching 'tasks'
```

That's still a page full of stuff that nobody cares about and is completely useless.

Here's what the output looks like if you have a file in it that for 2.x when you're installing into 3.x (or the other way too):

``` console
$ python setup.py -qqqqqqqq install -qqqqqqq --single-version-externally-managed --record /dev/null
package init file 'warehouse/migrations/__init__.py' not found (or not a regular file)
warning: no previously-included files found matching 'requirements.txt'
warning: no previously-included files found matching 'requirements-dev.txt'
warning: no previously-included files found matching 'requirements-deploy.txt'
warning: no previously-included files found matching 'babel.cfg'
warning: no previously-included files found matching 'Makefile'
warning: no previously-included files found matching 'Gulpfile.js'
warning: no previously-included files found matching 'package.json'
warning: no previously-included files found matching '.dockerignore'
warning: no previously-included files found matching 'Dockerfile'
warning: no previously-included files found matching 'docker-compose.yml'
warning: no previously-included files found matching 'Procfile'
warning: no previously-included files found matching 'runtime.txt'
warning: no previously-included files found matching 'uwsgi.ini'
no previously-included directories found matching 'bin'
no previously-included directories found matching 'vcl'
no previously-included directories found matching '.travis'
no previously-included directories found matching 'dev'
no previously-included directories found matching 'docs/_build'
no previously-included directories found matching 'tasks'
  File "/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/invalid_syntax.py", line 1
    raise Exception, "Bar"
                   ^
SyntaxError: invalid syntax
```

This install was completely successful, the error there is only an error during byte compile and can safely be ignored... but how is someone supposed to know that from the output? This was a constant source of confusion for people.

Even for the Pillow case, it does mean that the informational stuff shows up on the first page but it still shows stuff that is unlikely to be useful for anyone but the maintainers of Pillow:

``` console
$ python setup.py -qqqqqqqq install -qqqqqqq --single-version-externally-managed --record /dev/null
--- using frameworks at /System/Library/Frameworks
Building using 4 processes
_imaging.c:488:7: warning: variable 'r' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
                if (PyLong_Check(color)) {
                    ^~~~~~~~~~~~~~~~~~~
/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m/longobject.h:15:9: note: expanded from macro 'PyLong_Check'
        PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m/object.h:666:35: note: expanded from macro 'PyType_FastSubclass'
#define PyType_FastSubclass(t,f)  PyType_HasFeature(t,f)
                                  ^~~~~~~~~~~~~~~~~~~~~~
/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m/object.h:664:33: note: expanded from macro 'PyType_HasFeature'
#define PyType_HasFeature(t,f)  (((t)->tp_flags & (f)) != 0)
                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
_imaging.c:498:7: note: uninitialized use occurs here
                if (r == -1 && PyErr_Occurred())
                    ^
_imaging.c:488:3: note: remove the 'if' if its condition is always true
                if (PyLong_Check(color)) {
                ^~~~~~~~~~~~~~~~~~~~~~~~~
_imaging.c:477:10: note: initialize the variable 'r' to silence this warning
    int r, g, b, a;
         ^
          = 0
1 warning generated.
encode.c:57:43: warning: comparison of constant 0 with boolean expression is always false
      [-Wtautological-constant-out-of-range-compare]
    if(!PyType_Ready(&ImagingEncoderType) < 0)
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~
1 warning generated.
libImaging/JpegEncode.c:233:37: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long')
      [-Wsign-compare]
        if (context->rawExifLen + 5 >  context->destination.pub.free_in_buffer){
            ~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 warning generated.
libImaging/QuantOctree.c:188:20: warning: comparison of integers of different signs: 'unsigned int' and 'int' [-Wsign-compare]
   if (cube->rBits > rBits) {
       ~~~~~~~~~~~ ^ ~~~~~
libImaging/QuantOctree.c:195:20: warning: comparison of integers of different signs: 'unsigned int' and 'int' [-Wsign-compare]
   if (cube->gBits > gBits) {
       ~~~~~~~~~~~ ^ ~~~~~
libImaging/QuantOctree.c:202:20: warning: comparison of integers of different signs: 'unsigned int' and 'int' [-Wsign-compare]
   if (cube->bBits > bBits) {
       ~~~~~~~~~~~ ^ ~~~~~
libImaging/QuantOctree.c:209:20: warning: comparison of integers of different signs: 'unsigned int' and 'int' [-Wsign-compare]
   if (cube->aBits > aBits) {
       ~~~~~~~~~~~ ^ ~~~~~
4 warnings generated.
Building using 4 processes
_imagingft.c:400:27: warning: comparison of integers of different signs: 'int' and 'unsigned int' [-Wsign-compare]
            for (y = 0; y < glyph->bitmap.rows; y++) {
                        ~ ^ ~~~~~~~~~~~~~~~~~~
_imagingft.c:419:27: warning: comparison of integers of different signs: 'int' and 'unsigned int' [-Wsign-compare]
            for (y = 0; y < glyph->bitmap.rows; y++) {
                        ~ ^ ~~~~~~~~~~~~~~~~~~
2 warnings generated.
Building using 4 processes
Building using 4 processes
clangclang: : warning: warning: -framework Tcl: 'linker' input unused-framework Tcl: 'linker' input unused

clangclang: : warningwarning: : -framework Tk: 'linker' input unused-framework Tk: 'linker' input unused

Building using 4 processes
Building using 4 processes
--------------------------------------------------------------------
PIL SETUP SUMMARY
--------------------------------------------------------------------
version      Pillow 3.0.0
platform     darwin 3.5.0 (default, Oct  8 2015, 21:08:25)
             [GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.72)]
--------------------------------------------------------------------
--- TKINTER support available
--- JPEG support available
*** OPENJPEG (JPEG2000) support not available
--- ZLIB (PNG/ZIP) support available
--- LIBTIFF support available
--- FREETYPE2 support available
*** LITTLECMS2 support not available
--- WEBP support available
--- WEBPMUX support available
--------------------------------------------------------------------
To add a missing option, make sure you have the required
library, and set the corresponding ROOT variable in the
setup.py script.

To check the build, run the selftest.py script.
```

It's easy to look at something like that Pillow example and just sort of ignore the fact that there is a good chunk of stuff there that most people just won't care about or even the "simple" example that has a page full of stuff. However, when you're installing a number of projects like you will with any moderately complex project each page of output produced by these things add up and it's really easy for even minimal output to end up with 10-30 pages of output where the vast bulk of it simply isn't useful at all or worse, is outright confusing.

If we were a GUI we could hide the build log under a collapsed thing for each thing we installed which would make it way easier, but we're not. Reducing the amount of pointless output is important to a lot of our users and since showing it only helps if you're building the thing right now, not if you're re-using the wheel you built a month ago, I think this is better solved by libraries providing more insight against the installed item than by increasing the verbosity of pip by default.

That being said, it's possible that pip _could_ store the output of the `setup.py` invocation in the installation metadata... but it's not entirely trivial to do since in the wheel build case we won't have that until after the wheel is built. So we'd need to then open the wheel and add a file to it. This would ruin the ability for the wheel file to be deterministic though (which isn't currently possible, but it's an oft requested feature).

Why would you store the build log inside the wheel or install? A tmpfile will do just fine. 

I understand the default chosen. There are still more users of pure-Python packages/stacks than those with (significant amounts of) compiled code. And those installs almost always work, so OK to hide by default.

`pip install -v` also helps. I actually tried `-v` and decided that it didn't work because of the long time `pip` takes to get started (~3 min on my machine for scipy, hence my attempt at fixing that last night....).

You're OK with a progress indicator, so that's the easiest one down. Now for the other one: what do you think about allowing a package to toggle `pip`s behavior on this? Maybe a simple key in `setup.cfg`? Probably easier to do than storing the build log somewhere (and no concern about disk pollution).

> Why would you store the build log inside the wheel or install? A tmpfile will do just fine.

A temp file goes away, with cached Wheels you may be debugging something that was built days/weeks/months ago long past that time that temp file has been cleaned. It seems silly to say that the installation that happens _right now_ from that build is the only one that will need the ability to debug the build. Using PIL as an example again, I might not have cared if I got PNG today because I was only manipulating JPEG, but a month from now I might want to be interacting with PNG and that temporary file is gone.

> You're OK with a progress indicator, so that's the easiest one down. Now for the other one: what do you think about allowing a package to toggle pips behavior on this? Maybe a simple key in `setup.cfg`? Probably easier to do than storing the build log somewhere (and no concern about disk pollution).

It feels like the wrong solution TBH. It still doesn't solve anything beyond the initial build. I'm not sure why a solution that only covers things if people immediately notice it is better than projects exposing what options they were compiled with at runtime somehow. This seems to be a common pattern in C stuff already where they do things like:

``` console
$ openssl version -a
OpenSSL 1.0.2d 9 Jul 2015
built on: reproducible build, date unspecified
platform: darwin64-x86_64-cc
options:  bn(64,64) rc4(ptr,int) des(idx,cisc,16,int) idea(int) blowfish(idx)
compiler: clang -I. -I.. -I../include  -fPIC -fno-common -DOPENSSL_PIC -DZLIB_SHARED -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -arch x86_64 -O3 -DL_ENDIAN -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
OPENSSLDIR: "/usr/local/etc/openssl"
```

or

``` console
$ python -m sysconfig
Platform: "macosx-10.11-x86_64"
Python version: "3.5"
Current installation scheme: "posix_prefix"

Paths:
    data = "/Users/dstufft/.pyenv/versions/3.5.0"
    include = "/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m"
    platinclude = "/Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m"
    platlib = "/Users/dstufft/.pyenv/versions/3.5.0/lib/python3.5/site-packages"
    platstdlib = "/Users/dstufft/.pyenv/versions/3.5.0/lib/python3.5"
    purelib = "/Users/dstufft/.pyenv/versions/3.5.0/lib/python3.5/site-packages"
    scripts = "/Users/dstufft/.pyenv/versions/3.5.0/bin"
    stdlib = "/Users/dstufft/.pyenv/versions/3.5.0/lib/python3.5"

Variables:
    ABIFLAGS = "m"
    AC_APPLE_UNIVERSAL_BUILD = "0"
    AIX_GENUINE_CPLUSPLUS = "0"
    AR = "ar"
    ARFLAGS = "rc"
    ASDLGEN = "python ./Parser/asdl_c.py"
    ASDLGEN_FILES = "./Parser/asdl.py ./Parser/asdl_c.py"
    AST_ASDL = "./Parser/Python.asdl"
    AST_C = "Python/Python-ast.c"
    AST_C_DIR = "Python"
    AST_H = "Include/Python-ast.h"
    AST_H_DIR = "Include"
    BASECFLAGS = "-Wno-unused-result -Wsign-compare -Wunreachable-code"
    BASECPPFLAGS = ""
    BASEMODLIBS = ""
    BINDIR = "/Users/dstufft/.pyenv/versions/3.5.0/bin"
    BINLIBDEST = "/Users/dstufft/.pyenv/versions/3.5.0/lib/python3.5"
    ...
```

I know that Conda is gaining some popularity in the scientific world. They only support installing from already compiled modules afaik, do they report to you what the compile time options were during install? If not why is it important that pip does it while building (but not when installed from a binary dist).

First, note that numpy for example does what you suggest already:

```
$ python -c "import numpy; numpy.show_config()"
lapack_opt_info:
    libraries = ['lapack', 'f77blas', 'cblas', 'atlas']
    library_dirs = ['/usr/lib/atlas-base/atlas', '/usr/lib/atlas-base']
    define_macros = [('NO_ATLAS_INFO', -1)]
    language = f77
    include_dirs = ['/usr/include/atlas']
openblas_lapack_info:
  NOT AVAILABLE
atlas_3_10_blas_threads_info:
  NOT AVAILABLE
atlas_threads_info:
  NOT AVAILABLE
atlas_3_10_threads_info:
  NOT AVAILABLE
atlas_blas_info:
    libraries = ['f77blas', 'cblas', 'atlas']
    library_dirs = ['/usr/lib/atlas-base']
    define_macros = [('HAVE_CBLAS', None), ('NO_ATLAS_INFO', -1)]
    language = c
    include_dirs = ['/usr/include/atlas']
...
...
```

But there are multiple problems with relying on just that:
1. It doesn't cover everything. I ask users for build logs regularly (and yes, sometimes they may need to re-build to obtain them).
2. It's a lot more effort for each project to implement, so in practice is going to happen slowly (if ever).
3. A whole lot of stuff simply won't be available. For projects that rely on `numpy.distutils`, they somehow need to coerce `numpy.distutils` to give them back compile flags etc. Good luck with that. Same for `setuptools` I expect. 

> I know that Conda is gaining some popularity in the scientific world. They only support installing from already compiled modules afaik, do they report to you what the compile time options were during install? If not why is it important that pip does it while building (but not when installed from a binary dist).

Don't think there's a reporting mechanism, but for those binaries it's much easier because build recipes for them can be inspected.

It's also not just about reporting options. There's _a lot of stuff_ in a build log that's very valuable. What about which compilers that were selected? Exact Cython version used? Compile flags that came from Python itself? Warnings about API/ABI incompatibility? I can go on, but I hope it's clear that just implementing some reporting thingy isn't the solution to everything.

> A temp file goes away, with cached Wheels you may be debugging something that was built days/weeks/months ago long past that time that temp file has been cleaned. It seems silly to say that the installation that happens right now from that build is the only one that will need the ability to debug the build.

You could keep temp files in some rotating store - keep the last N.

Inserting stuff in wheels is going to give problems I'd expect. What about wheels that are later uploaded somewhere? 

> It feels like the wrong solution TBH. It still doesn't solve anything beyond the initial build.

Do you have any idea how important that initial build is for scientific projects? Distribution and install is easy in comparison. So even a partial solution helps a lot. It's also trivial to implement, so why not do this _and_ encourage projects to add some `show_config` type thing.

regarding progress indication: my thought would be that if the build is slow, then put up a spinner, and update the spinner each time there's some text printed by the child process? it wouldn't be a panacea because some slow builds might sit for a long time without printing anything, but at least that is under the control of the code being built.

```
class SpinnerTee(object):
    # A file proxy that calls spinner.update() whenever data is written
    # (but limited by max_updates_per_second)
    def __init__(self, real_output_file, max_updates_per_second, spinner):
        self._real_output_file = real_output_file
        self._max_updates_per_second = max_updates_per_second
        self._spinner = spinner
        self._last_update = -1

    def write(self, data):
        now = time.time()
        if now - self._last_update > (1 / max_updates_per_second):
            self._spinner.update()
            self._last_update = now
        self._real_output_file.write(data)

    def close(self):
        self._real_output_file.close()
```

Biggest issue would be build systems that turn on output buffering when their stdout is not a terminal so that output writes get batched up and only delivered once every 4096 bytes, but that could be fixed within setuptools or within the setup.py of individual projects like scipy that have slow builds and get complaints from impatient users.

Correction: it looks like the solution to the buffering issue would just be for pip to run `python -u setup.py ...` instead of `python setup.py ...`.

On 02.11.2015 16:38, Donald Stufft wrote:

> ``` console
> $ python setup.py -qqqqqqqq install -qqqqqqq --single-version-externally-managed --record /dev/null
> package init file 'warehouse/migrations/__init__.py' not found (or not a regular file)
> warning: no previously-included files found matching 'requirements.txt'
> warning: no previously-included files found matching 'requirements-dev.txt'
> warning: no previously-included files found matching 'requirements-deploy.txt'
> warning: no previously-included files found matching 'babel.cfg'
> warning: no previously-included files found matching 'Makefile'
> warning: no previously-included files found matching 'Gulpfile.js'
> warning: no previously-included files found matching 'package.json'
> warning: no previously-included files found matching '.dockerignore'
> warning: no previously-included files found matching 'Dockerfile'
> warning: no previously-included files found matching 'docker-compose.yml'
> warning: no previously-included files found matching 'Procfile'
> warning: no previously-included files found matching 'runtime.txt'
> warning: no previously-included files found matching 'uwsgi.ini'
> no previously-included directories found matching 'bin'
> no previously-included directories found matching 'vcl'
> no previously-included directories found matching '.travis'
> no previously-included directories found matching 'dev'
> no previously-included directories found matching 'docs/_build'
> no previously-included directories found matching 'tasks'
> ```
> 
> That's still a page full of stuff that nobody cares about and is completely useless.

Is it ?

At least some of those warnings and errors point to problems
with your MANIFEST.in file (or the lack of having such a file
and distutils assuming some defaults).

> Here's what the output looks like if you have a file in it that for 2.x when you're installing into 3.x (or the other way too):
> 
> ``` console
> $ python setup.py -qqqqqqqq install -qqqqqqq --single-version-externally-managed --record /dev/null
> package init file 'warehouse/migrations/__init__.py' not found (or not a regular file)
> warning: no previously-included files found matching 'requirements.txt'
> warning: no previously-included files found matching 'requirements-dev.txt'
> warning: no previously-included files found matching 'requirements-deploy.txt'
> warning: no previously-included files found matching 'babel.cfg'
> warning: no previously-included files found matching 'Makefile'
> warning: no previously-included files found matching 'Gulpfile.js'
> warning: no previously-included files found matching 'package.json'
> warning: no previously-included files found matching '.dockerignore'
> warning: no previously-included files found matching 'Dockerfile'
> warning: no previously-included files found matching 'docker-compose.yml'
> warning: no previously-included files found matching 'Procfile'
> warning: no previously-included files found matching 'runtime.txt'
> warning: no previously-included files found matching 'uwsgi.ini'
> no previously-included directories found matching 'bin'
> no previously-included directories found matching 'vcl'
> no previously-included directories found matching '.travis'
> no previously-included directories found matching 'dev'
> no previously-included directories found matching 'docs/_build'
> no previously-included directories found matching 'tasks'
>   File "/Users/dstufft/.virtualenvs/tmp-8474a91e5e17e69/lib/python3.5/site-packages/warehouse/invalid_syntax.py", line 1
>     raise Exception, "Bar"
>                    ^
> SyntaxError: invalid syntax
> ```
> 
> This install was completely successful, the error there is only an error during byte compile and can safely be ignored... but how is someone supposed to know that from the output? This was a constant source of confusion for people.

By looking at it and seeing that Python 2 syntax is not being accepted
by Python 3 ?!

The above may also well be a genuine error in the application,
e.g. you may be trying to install Python 2 software with
Python 3.

> Even for the Pillow case, it does mean that the informational stuff shows up on the first page but it still shows stuff that is unlikely to be useful for anyone but the maintainers of Pillow:
> 
> ``` console
> $ python setup.py -qqqqqqqq install -qqqqqqq --single-version-externally-managed --record /dev/null
> ```

BTW: You only need a single -q, since this sets .verbosity to 0.

> --- using frameworks at /System/Library/Frameworks

This is useful information.

> Building using 4 processes
> _imaging.c:488:7: warning: variable 'r' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
>                 if (PyLong_Check(color)) {
>                     ^~~~~~~~~~~~~~~~~~~
> /Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m/longobject.h:15:9: note: expanded from macro 'PyLong_Check'
>         PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LONG_SUBCLASS)
>         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m/object.h:666:35: note: expanded from macro 'PyType_FastSubclass'
> #define PyType_FastSubclass(t,f)  PyType_HasFeature(t,f)
>                                   ^~~~~~~~~~~~~~~~~~~~~~
> /Users/dstufft/.pyenv/versions/3.5.0/include/python3.5m/object.h:664:33: note: expanded from macro 'PyType_HasFeature'
> #define PyType_HasFeature(t,f)  (((t)->tp_flags & (f)) != 0)
>                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
> _imaging.c:498:7: note: uninitialized use occurs here
>                 if (r == -1 && PyErr_Occurred())
>                     ^
> _imaging.c:488:3: note: remove the 'if' if its condition is always true
>                 if (PyLong_Check(color)) {
>                 ^~~~~~~~~~~~~~~~~~~~~~~~~
> _imaging.c:477:10: note: initialize the variable 'r' to silence this warning
>     int r, g, b, a;
>          ^
>           = 0
> 1 warning generated.
> encode.c:57:43: warning: comparison of constant 0 with boolean expression is always false
>       [-Wtautological-constant-out-of-range-compare]
>     if(!PyType_Ready(&ImagingEncoderType) < 0)
>        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~
> 1 warning generated.
> libImaging/JpegEncode.c:233:37: warning: comparison of integers of different signs: 'int' and 'size_t' (aka 'unsigned long')
>       [-Wsign-compare]
>         if (context->rawExifLen + 5 >  context->destination.pub.free_in_buffer){
>             ~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 1 warning generated.
> libImaging/QuantOctree.c:188:20: warning: comparison of integers of different signs: 'unsigned int' and 'int' [-Wsign-compare]
>    if (cube->rBits > rBits) {
>        ~~~~~~~~~~~ ^ ~~~~~
> libImaging/QuantOctree.c:195:20: warning: comparison of integers of different signs: 'unsigned int' and 'int' [-Wsign-compare]
>    if (cube->gBits > gBits) {
>        ~~~~~~~~~~~ ^ ~~~~~
> libImaging/QuantOctree.c:202:20: warning: comparison of integers of different signs: 'unsigned int' and 'int' [-Wsign-compare]
>    if (cube->bBits > bBits) {
>        ~~~~~~~~~~~ ^ ~~~~~
> libImaging/QuantOctree.c:209:20: warning: comparison of integers of different signs: 'unsigned int' and 'int' [-Wsign-compare]
>    if (cube->aBits > aBits) {
>        ~~~~~~~~~~~ ^ ~~~~~
> 4 warnings generated.
> Building using 4 processes
> _imagingft.c:400:27: warning: comparison of integers of different signs: 'int' and 'unsigned int' [-Wsign-compare]
>             for (y = 0; y < glyph->bitmap.rows; y++) {
>                         ~ ^ ~~~~~~~~~~~~~~~~~~
> _imagingft.c:419:27: warning: comparison of integers of different signs: 'int' and 'unsigned int' [-Wsign-compare]
>             for (y = 0; y < glyph->bitmap.rows; y++) {
>                         ~ ^ ~~~~~~~~~~~~~~~~~~
> 2 warnings generated.

These warnings may well hint at problems when running the
application and could cause a crash or unexpected output.

Maintainers should be made aware of these warnings.

> Building using 4 processes
> Building using 4 processes
> clangclang: : warning: warning: -framework Tcl: 'linker' input unused-framework Tcl: 'linker' input unused
> 
> clangclang: : warningwarning: : -framework Tk: 'linker' input unused-framework Tk: 'linker' input unused

Again, this is something to report to the maintainers. That
way they can document or fix the warning in the setup.py output.

> Building using 4 processes
> 
> ## Building using 4 processes
> 
> ## PIL SETUP SUMMARY
> 
> version      Pillow 3.0.0
> platform     darwin 3.5.0 (default, Oct  8 2015, 21:08:25)
> 
> ##              [GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.72)]
> 
> --- TKINTER support available
> --- JPEG support available
> **\* OPENJPEG (JPEG2000) support not available
> --- ZLIB (PNG/ZIP) support available
> --- LIBTIFF support available
> --- FREETYPE2 support available
> **\* LITTLECMS2 support not available
> --- WEBP support available
> 
> ## --- WEBPMUX support available
> 
> To add a missing option, make sure you have the required
> library, and set the corresponding ROOT variable in the
> setup.py script.
> 
> To check the build, run the selftest.py script.
> 
> ```
> 
> It's easy to look at something like that Pillow example and just sort of ignore the fact that there is a good chunk of stuff there that most people just won't care about or even the "simple" example that has a page full of stuff. However, when you're installing a number of projects like you will with any moderately complex project each page of output produced by these things add up and it's really easy for even minimal output to end up with 10-30 pages of output where the vast bulk of it simply isn't useful at all or worse, is outright confusing.
> 
> If we were a GUI we could hide the build log under a collapsed thing for each thing we installed which would make it way easier, but we're not. Reducing the amount of pointless output is important to a lot of our users and since showing it only helps if you're building the thing right now, not if you're re-using the wheel you built a month ago, I think this is better solved by libraries providing more insight against the installed item than by increasing the verbosity of pip by default.
> ```

I think the answer to all this needs to be more nuanced. On/off is
not the right way to approach this. If a build script needs
to report important information to the user, this should be
possible, either by using special syntax for the output or by
signaling it in some other way.

The full log then provides the necessary audit information for
later debugging or finding out why certain things failed to
build.

In the above -q examples, (most, if not all) output to stdout is
silenced. What you are seeing on the console is mostly stderr
output generated by the compiler and warnings issued using
log.warn() from inside distutils.

> That being said, it's possible that pip _could_ store the output of the `setup.py` invocation in the installation metadata... but it's not entirely trivial to do since in the wheel build case we won't have that until after the wheel is built. So we'd need to then open the wheel and add a file to it. This would ruin the ability for the wheel file to be deterministic though (which isn't currently possible, but it's an oft requested feature).

Why not store the log alongside the wheel file in the
cache and have pip output the log using e.g.
"pip audit somepackage" ?

## 

Marc-Andre Lemburg
http://www.malemburg.com/

On Tue, Nov 3, 2015 at 12:42 PM, Marc-Andre Lemburg <
notifications@github.com> wrote:

> > no previously-included directories found matching '.travis'
> > no previously-included directories found matching 'dev'
> > no previously-included directories found matching 'docs/_build'
> > no previously-included directories found matching 'tasks'
> > 
> > ```
> > 
> > That's still a page full of stuff that nobody cares about and is
> > completely useless.
> > ```
> 
> Is it ?
> 
> At least some of those warnings and errors point to problems
> with your MANIFEST.in file (or the lack of having such a file
> and distutils assuming some defaults).

The excludes/prunes will create spurious warnings at least. The idea is
that you exclude stuff you usually have in development, but that stuff
don't exist in the temp dir pip creates - thus spurious warnings.​

> ^
> 
> > SyntaxError: invalid syntax
> > 
> > ```
> > 
> > This install was completely successful, the error there is only an error
> > during byte compile and can safely be ignored... but how is someone
> > supposed to know that from the output? This was a constant source of
> > confusion for people.
> > ```
> 
> By looking at it and seeing that Python 2 syntax is not being accepted
> by Python 3 ?!
> 
> The above may also well be a genuine error in the application,
> e.g. you may be trying to install Python 2 software with
> Python 3.

​I actually have this problem in one of my packages - I have a module​ with
some py3 specific code (that is only imported on py3 - I want to use
yieldfrom if it's available) and people have actually complained about the
weird warning.

On 03.11.2015 12:43, Ionel Cristian Mărieș wrote:

> > ^
> > 
> > > SyntaxError: invalid syntax
> > > 
> > > ```
> > > 
> > > This install was completely successful, the error there is only an error
> > > during byte compile and can safely be ignored... but how is someone
> > > supposed to know that from the output? This was a constant source of
> > > confusion for people.
> > > ```
> > 
> > By looking at it and seeing that Python 2 syntax is not being accepted
> > by Python 3 ?!
> > 
> > The above may also well be a genuine error in the application,
> > e.g. you may be trying to install Python 2 software with
> > Python 3.
> 
> ​I actually have this problem in one of my packages - I have a module​ with
> some py3 specific code (that is only imported on py3 - I want to use
> yieldfrom if it's awailable) and people have actually complained about the
> weird warning.

I think this should be addressed by fixing distutils to optionally
detect and ignore such SyntaxErrors in a set of files. This could
then be enabled via setup.cfg. It's a separate issues from the
one at hand, though.

## 

Marc-Andre Lemburg
http://www.malemburg.com/

> It's a separate issues from the one at hand, though.

It's not really though. The underlying reason why pip no longer shows the build logs by default is because we have no control over what the build system ouputs and pretty much no matter what we do to try and differentiate them if it's output by default people will assume it's pip giving the error and will get confused about what it means. That particular thing is just one particularly annoying example of the underlying problem.

Shoving things into a temporary file is something that could be done and just outputting the location of that temporary file saying something like: "See /tmp/whatever.log to view build log". I don't think it's unreasonable though I worry it's not as good of a solution as something that is more persistent than a temporary file since a built wheel might still be being used days, weeks, months or even years later. There are other questions too of course like how do we ensure we don't just fill up the temporary directory over time since we won't be cleaning up the temporary files at the end of the execution, but those really just need someone to sit down and figure it out.

On 04.11.2015 01:28, Donald Stufft wrote:

> > It's a separate issues from the one at hand, though.
> 
> It's not really though. The underlying reason why pip no longer shows the build logs by default is because we have no control over what the build system ouputs and pretty much no matter what we do to try and differentiate them if it's output by default people will assume it's pip giving the error and will get confused about what it means. That particular thing is just one particularly annoying example of the underlying problem.

I think you seeing this all black and white. There's actually
a lot of grey in there :-)

First of all, pip should make it clear that the output is generated
by the build process, so that users can see where the messages are
generated.

Then, we would need to solve the issues with standard distutils
commands such as the SyntaxError which a maintainer could easily
flag as false positive in setup.cfg.

And finally, to make interaction of pip with the build process easier,
there should be a clear definition of how important messages that
do need to be seen by the user should look like, so that
pip can parse and then highlight them.

Now all this is going to take a while to implement, so starting
with first recording the logs in a central place is a good short
term solution.

> Shoving things into a temporary file is something that could be done and just outputting the location of that temporary file saying something like: "See /tmp/whatever.log to view build log". I don't think it's unreasonable though I worry it's not as good of a solution as something that is more persistent than a temporary file since a built wheel might still be being used days, weeks, months or even years later. There are other questions too of course like how do we ensure we don't just fill up the temporary directory over time since we won't be cleaning up the temporary files at the end of the execution, but those really just need someone to sit down and figure it out.

I usually put all build logs into gzipped files in a subdir
of the product build area (and keep them there, since they don't
take up much space and are useful for auditing purposes).
In case of pip, this would probably be the cache dir where
it puts the wheel files.

pip could also remove older build logs in case it rebuilds
a wheel so that it never stores more than one build log per
wheel.

## 

Marc-Andre Lemburg
http://www.malemburg.com/

I just ran across a similar issue when writing a `setup.py` script that asks for user confirmation to install an optional component. I have a build option to automate the confirmation, but the filtering (and delayed printing) of `sys.stdout` was a head scratcher until I found this thread. 

It seems unlikely that `pip` will be modified to allow a prompt to be displayed for user input, and in my case it would be preferable to close `sys.stdin` on the subprocess.

@kadrlica: I agree that `pip` showing output by default isn't going to happen, so closing `sys.stdin` for harm reduction seems like a good idea to me too. Probably the next step is for someone (maybe you?) to submit a PR that does this.

By closing sys.stdin you'd make it impossible to report back _anything_ from the setup.py install process, including debug information, build information, install choices made by the install command, etc.

How can that be considered "harm reduction" ? You'd be breaking "setup.py install" even more.

What you will probably regard as "enhanced user experience" again, is, in reality, a user nightmare in every single case something in the build and install process doesn't work out as planned. You can easily end up with a target system that is missing important parts, is slow because a C extension failed to build or using wrong libraries - with no way to detect these errors early by e.g. parsing the log files for indications of things going wrong.

I'm confused. Why would closing sys.stdin affect output/reporting?

On 27.06.2016 09:59, Paul Moore wrote:

> I'm confused. Why would closing sys.stdin affect output/reporting?

Oh, sorry, not enough coffee yet... I read "sys.stdout". Closing
sys.stdin is probably fine if you don't allow accepting user
input anyway.

## 

Marc-Andre Lemburg
http://www.malemburg.com/

Commenting to add this to my watch list.
@pradyunsg may be a nice one to add to your GSoC proposal.

> Commenting to add this to my watch list.

Note there's a "subscribe" button in the right sidebar for watching an issue, no need to comment.
@rgommers Thanks. That's what I meant by "watch list". I forgot that watch the verb already had a use. I guess I could have phrased it better...

I've commented on issues I am interested in, and then I use the search to see what issues I've commented on already.

I know about the subscribe button. :)
@rgommers 
There's no way to list issues you are subscribed to.
Coming around to this now...

---

> I agree with @dstufft, this should probably be discussed on distutils-sig.

I couldn't find any discussion about this in the archives.

> Shouldn't pip just close stdin?

I guess so... Is this how we want to do this?
"Running setup.py bdist_wheel for numpy: still running" takes forever. 

Google led me here. Am I in the right place? What's the problem in a summary?
@dogopupper not really. The numpy issue tracker would be the right place. Please provide the whole build log there, because this is not enough info to help you.

Resolving patch:
diff --git a/src/pip/_internal/utils/misc.py b/src/pip/_internal/utils/misc.py
--- a/src/pip/_internal/utils/misc.py
+++ b/src/pip/_internal/utils/misc.py
@@ -678,9 +678,10 @@ def call_subprocess(cmd, show_stdout=True, cwd=None,
         env.pop(name, None)
     try:
         proc = subprocess.Popen(
-            cmd, stderr=subprocess.STDOUT, stdin=None, stdout=stdout,
-            cwd=cwd, env=env,
+            cmd, stderr=subprocess.STDOUT, stdin=subprocess.PIPE,
+            stdout=stdout, cwd=cwd, env=env,
         )
+        proc.stdin.close()
     except Exception as exc:
         logger.critical(
             "Error %s while executing command %s", exc, command_desc,


Test patch:
diff --git a/tests/unit/test_utils.py b/tests/unit/test_utils.py
--- a/tests/unit/test_utils.py
+++ b/tests/unit/test_utils.py
@@ -23,8 +23,8 @@
 from pip._internal.utils.glibc import check_glibc_version
 from pip._internal.utils.hashes import Hashes, MissingHashes
 from pip._internal.utils.misc import (
-    egg_link_path, ensure_dir, get_installed_distributions, get_prog,
-    normalize_path, rmtree, untar_file, unzip_file,
+    call_subprocess, egg_link_path, ensure_dir, get_installed_distributions,
+    get_prog, normalize_path, rmtree, untar_file, unzip_file,
 )
 from pip._internal.utils.packaging import check_dist_requires_python
 from pip._internal.utils.temp_dir import TempDirectory
@@ -612,3 +612,15 @@ def test_get_prog(self, monkeypatch, argv, executable, expected):
             executable
         )
         assert get_prog() == expected
+
+
+def test_call_subprocess_works_okay_when_just_given_nothing():
+    try:
+        call_subprocess([sys.executable, '-c', 'print("Hello")'])
+    except Exception:
+        assert False, "Expected subprocess call to succeed"
+
+
+def test_call_subprocess_closes_stdin():
+    with pytest.raises(InstallationError):
+        call_subprocess([sys.executable, '-c', 'input()'])