<div dir="ltr">I can give more technical details on warning output: it's purely an issue of compromise between many different (and annoying) ways of displaying things. Firstly, the behavior Chris Allen is commenting: if there is a single local target package that you're building, then all of its GHC output is displayed to the console, including warnings. The dependency output is still sent to log files instead, keeping the console relatively free of output most people will not care about (general feeling I've seen is if a dependency has warnings, you don't want to see them, much less a list of all modules being compiled).<div><br></div><div>The issue is: what happens if you're building multiple local packages? There are a number of options, all of which seem to get in _someone's_ way:</div><div><br></div><div>1. What we do today: send all output to the logs</div><div>2. Spit output to the console as it occurs, which will interleave content from multiple builds</div><div>3. Save the output to a log file, and then display all of the log files to the user at the end, which would result in looking for a needle in a haystack in many cases</div><div><br></div><div>When I put together the initial code for running builds, I chose (1), which we still have today. It may be interesting to note that I did this mostly based off of my experience with cabal-install doing the same thing (whenever possible, I defaulted with cabal-install behavior, since it got many things right, and regardless is what people were used to). I tested this in the http-client repo by introducing a warning and running:</div><div><br></div><div>    <span style="color:rgb(51,51,51);font-family:consolas,"liberation mono",menlo,courier,monospace;font-size:12px;line-height:20px;white-space:pre">cabal install ./http-client ./http-client-tls/ --ghc-option -Wall</span></div><div><br></div><div>You can see the results at:</div><div><br></div><div>    <a href="https://gist.github.com/snoyberg/a50f4fc9505aa32aec835630dd749b77">https://gist.github.com/snoyberg/a50f4fc9505aa32aec835630dd749b77</a><br></div><div><br></div><div>By contrast, `stack build http-client-tls` spits out all of the warnings to the console as they happen.</div><div><br></div><div>So my recommendation for people who are warning-sensitive and using Stack:</div><div><br></div><div>1. Use the `--pedantic` flag to turn on both `-Wall -Werror`. This is doubly-good: not only will you definitely see the warnings, but you won't accidentally miss them by an interim compile. (This can easily happen if you're using the `--file-watch` flag.)</div><div>2. Build one package in your project at a time.</div><div><br></div><div>If people have ideas for other ways of handling this that I haven't listed, let's start a separate thread to discuss them.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Sep 14, 2016 at 11:26 PM, David McBride <span dir="ltr"><<a href="mailto:toad3k@gmail.com" target="_blank">toad3k@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div>That's not what I'm observering.  I intentially put -Wall and some odd code in a local copy of pipes-csv, stack clean, stack build.<br><br>/home/toad/working/pipes-csv-<wbr>1.4.0/src/Pipes/Csv.hs:216:3: Warning:<br>    A do-notation statement discarded a result of type ‘String’<br>    Suppress this warning by saying ‘_ <- getLine’<br>    or by using the flag -fno-warn-unused-do-bind<br><br></div>In another project, stack clean, stack build<br><br>pipes-csv-1.4.0: configure<br>pipes-csv-1.4.0: build<br>pipes-csv-1.4.0: copy/register<br><br></div>Nothing at all.<br><div><br></div><div>stack.yaml is basically this, but with a few extra packages.<br><br>flags: {}<br>packages:<br>- '.'<br>- '../pipes-csv-1.4.0'<br>extra-deps: []<br>resolver: lts-3.1<br><br></div><div>stack --version<br>Version 1.1.2 x86_64 hpack-0.14.0<br><br></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Sep 14, 2016 at 4:10 PM, Christopher Allen <span dir="ltr"><<a href="mailto:cma@bitemyapp.com" target="_blank">cma@bitemyapp.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I see what is meant now, but it's not really applicable. If I am<br>
co-developing a package and its dependencies, I add them as packages<br>
(not deps) to my stack.yaml and still get the warnings.<br>
<br>
Example:<br>
<br>
>From the stack.yaml for the package that uses my previous example's library:<br>
<br>
<br>
packages:<br>
- '.'<br>
- ../simple-library<br>
<br>
<br>
Then stack build'ing the project (uses-sl) that depends on<br>
simple-library which as a module with a warning:<br>
<br>
<br>
$ stack build<br>
simple-library-0.1.0.0: build<br>
Progress: 1/2<br>
--  While building package simple-library-0.1.0.0 using:<br>
      /home/callen/.stack/setup-exe-<wbr>cache/x86_64-linux/setup-Simpl<wbr>e-Cabal-1.24.0.0-ghc-8.0.1<br>
--builddir=.stack-work/dist/x8<wbr>6_64-linux/Cabal-1.24.0.0 build<br>
lib:simple-library exe:simple-library-exe --ghc-options " -ddump-hi<br>
-ddump-to-file"<br>
    Process exited with code: ExitFailure 1<br>
    Logs have been written to:<br>
/home/callen/work/uses-sl/.sta<wbr>ck-work/logs/simple-library-0.<wbr>1.0.0.log<br>
<br>
    Preprocessing library simple-library-0.1.0.0...<br>
    [1 of 1] Compiling SimpleLib        ( src/SimpleLib.hs,<br>
.stack-work/dist/x86_64-linux/<wbr>Cabal-1.24.0.0/build/SimpleLib<wbr>.o )<br>
<br>
    /home/callen/work/simple-libra<wbr>ry/src/SimpleLib.hs:7:3: warning:<br>
<span>[-Wunused-do-bind]<br>
        A do-notation statement discarded a result of type ‘[Char]’<br>
</span>        Suppress this warning by saying ‘_ <- return "hello"’<br>
<br>
<br>
<br>
One of the first things I did when figuring out Stack was to look at<br>
how Yesod used it:<br>
<a href="https://github.com/yesodweb/yesod/blob/master/stack.yaml" rel="noreferrer" target="_blank">https://github.com/yesodweb/ye<wbr>sod/blob/master/stack.yaml</a><br>
<div><div><br>
On Wed, Sep 14, 2016 at 2:56 PM, David McBride <<a href="mailto:toad3k@gmail.com" target="_blank">toad3k@gmail.com</a>> wrote:<br>
> The rule of thumb seems to be, if you do a stack build and it decides to<br>
> build multiple packages, it hides this log info.<br>
><br>
> I understand why it does that, I should be able to build lens without<br>
> worrying about tons of spurious output, but at the same time it is common<br>
> for me to have an entire tree of packages I'm developing and it often<br>
> obscures errors that are happening in my own packages.  At the very least,<br>
> if it is only building local packages, I'd very much like to see that<br>
> output.<br>
><br>
> On Wed, Sep 14, 2016 at 3:42 PM, Patrick Pelletier<br>
> <<a href="mailto:code@funwithsoftware.org" target="_blank">code@funwithsoftware.org</a>> wrote:<br>
>><br>
>> On 9/14/16 12:21 PM, Christopher Allen wrote:<br>
>>><br>
>>> What are you talking about?<br>
>>><br>
>>> $ stack build<br>
>>> simple-library-0.1.0.0: unregistering (local file changes: src/Lib.hs)<br>
>>> simple-library-0.1.0.0: build<br>
>>> Preprocessing library simple-library-0.1.0.0...<br>
>>> [1 of 1] Compiling Lib              ( src/Lib.hs,<br>
>>> .stack-work/dist/x86_64-linux/<wbr>Cabal-1.24.0.0/build/Lib.o )<br>
>>><br>
>>> /home/callen/work/simple-libra<wbr>ry/src/Lib.hs:7:3: warning:<br>
>>> [-Wunused-do-bind]<br>
>>>      A do-notation statement discarded a result of type ‘[Char]’<br>
>>>      Suppress this warning by saying ‘_ <- return "woot"’<br>
>>> Preprocessing executable 'simple-library-exe' for<br>
>>> simple-library-0.1.0.0...<br>
>><br>
>><br>
>> Weird.  That's not how it works for me:<br>
>><br>
>> whiteandnerdy:normalize ppelleti$ stack build<br>
>> normalization-insensitive-2.0: unregistering (local file changes:<br>
>> Data/Unicode/NormalizationInse<wbr>nsitive.hs<br>
>> Data/Unicode/NormalizationInse<wbr>nsitive/Internal.hs)<br>
>> normalization-insensitive-2.0: configure<br>
>> normalization-insensitive-2.0: build<br>
>> normalization-insensitive-2.0: copy/register<br>
>> photos-0.1.0.0: configure<br>
>> photos-0.1.0.0: build<br>
>> photos-0.1.0.0: copy/register<br>
>> Completed 2 action(s).<br>
>> whiteandnerdy:normalize ppelleti$ cat<br>
>> .stack-work/logs/normalization<wbr>-insensitive-2.0.log<br>
>> Configuring normalization-insensitive-2.0.<wbr>..<br>
>> Preprocessing library normalization-insensitive-2.0.<wbr>..<br>
>> [1 of 3] Compiling Data.Unicode.NormalizationInse<wbr>nsitive.Internal (<br>
>> Data/Unicode/NormalizationInse<wbr>nsitive/Internal.hs,<br>
>> .stack-work/dist/x86_64-osx/Ca<wbr>bal-1.22.5.0/build/Data/Unicod<wbr>e/NormalizationInsensitive/Int<wbr>ernal.o<br>
>> )<br>
>><br>
>> Data/Unicode/NormalizationInse<wbr>nsitive/Internal.hs:30:1: Warning:<br>
>>     The import of ‘Data.Bool’ is redundant<br>
>>       except perhaps to import instances from ‘Data.Bool’<br>
>>     To import instances alone, use: import Data.Bool()<br>
>><br>
>> Data/Unicode/NormalizationInse<wbr>nsitive/Internal.hs:38:1: Warning:<br>
>>     The import of ‘otherwise, &&, <=, +’<br>
>>     from module ‘Prelude’ is redundant<br>
>><br>
>> Data/Unicode/NormalizationInse<wbr>nsitive/Internal.hs:57:1: Warning:<br>
>>     Module ‘Data.ByteString.UTF8.Normaliz<wbr>e’ is deprecated:<br>
>>       Convert ByteString to Text and then normalize<br>
>><br>
>> Data/Unicode/NormalizationInse<wbr>nsitive/Internal.hs:135:1: Warning:<br>
>>     Top-level binding with no type signature: mode :: NormalizationMode<br>
>><br>
>> Data/Unicode/NormalizationInse<wbr>nsitive/Internal.hs:143:17: Warning:<br>
>>     In the use of ‘B.normalize’<br>
>>     (imported from Data.ByteString.UTF8.Normalize<wbr>):<br>
>>     Deprecated: "Convert ByteString to Text and then normalize"<br>
>><br>
>> Data/Unicode/NormalizationInse<wbr>nsitive/Internal.hs:147:33: Warning:<br>
>>     In the use of ‘B.normalize’<br>
>>     (imported from Data.ByteString.UTF8.Normalize<wbr>):<br>
>>     Deprecated: "Convert ByteString to Text and then normalize"<br>
>> [2 of 3] Compiling Data.Unicode.NormalizationInse<wbr>nsitive.Unsafe (<br>
>> Data/Unicode/NormalizationInse<wbr>nsitive/Unsafe.hs,<br>
>> .stack-work/dist/x86_64-osx/Ca<wbr>bal-1.22.5.0/build/Data/Unicod<wbr>e/NormalizationInsensitive/Uns<wbr>afe.o<br>
>> )<br>
>> [3 of 3] Compiling Data.Unicode.NormalizationInse<wbr>nsitive (<br>
>> Data/Unicode/NormalizationInse<wbr>nsitive.hs,<br>
>> .stack-work/dist/x86_64-osx/Ca<wbr>bal-1.22.5.0/build/Data/Unicod<wbr>e/NormalizationInsensitive.o<br>
>> )<br>
>><br>
>> Data/Unicode/NormalizationInse<wbr>nsitive.hs:25:31: Warning:<br>
>>     ‘normalize’ is exported by ‘Normalizable(normalize)’ and ‘normalize’<br>
>> In-place registering normalization-insensitive-2.0.<wbr>..<br>
>> Installing library in<br>
>><br>
>> /Users/ppelleti/programming/ha<wbr>skell/normalize/.stack-work/in<wbr>stall/x86_64-osx/lts-6.1/7.10.<wbr>3/lib/x86_64-osx-ghc-7.10.3/<wbr>normalization-insensitive-2.0-<wbr>KLVtcrPtbow6nG8kRB6WPM<br>
>> Registering normalization-insensitive-2.0.<wbr>..<br>
>> whiteandnerdy:normalize ppelleti$<br>
>><br>
>> I hadn't even been aware of these warnings in the package I was<br>
>> developing, until Harendra Kumar pointed them out to me, after I had<br>
>> uploaded a candidate to Hackage.<br>
>><br>
>> --Patrick<br>
>><br>
>><br>
>> ______________________________<wbr>_________________<br>
>> Haskell-Cafe mailing list<br>
>> To (un)subscribe, modify options or view archives go to:<br>
>> <a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bi<wbr>n/mailman/listinfo/haskell-caf<wbr>e</a><br>
>> Only members subscribed via the mailman list are allowed to post.<br>
><br>
><br>
<br>
<br>
<br>
</div></div><div><div>--<br>
Chris Allen<br>
Currently working on <a href="http://haskellbook.com" rel="noreferrer" target="_blank">http://haskellbook.com</a><br>
</div></div></blockquote></div><br></div>
</div></div><br>______________________________<wbr>_________________<br>
Haskell-Cafe mailing list<br>
To (un)subscribe, modify options or view archives go to:<br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-<wbr>bin/mailman/listinfo/haskell-<wbr>cafe</a><br>
Only members subscribed via the mailman list are allowed to post.<br></blockquote></div><br></div>