Opened 2 years ago

Closed 2 years ago

Last modified 2 years ago

#12807 closed feature request (fixed)

GHC is too verbose by default (source/object paths)

Reported by: hsyl20 Owned by: hsyl20
Priority: normal Milestone:
Component: Compiler Version: 8.0.1
Keywords: Cc:
Operating System: Unknown/Multiple Architecture: Unknown/Multiple
Type of failure: Other Test Case:
Blocked By: Blocking:
Related Tickets: #12851 Differential Rev(s): Phab:D2679
Wiki Page:


With the default verbosity, GHC shows the path of the source file and the path of the object file (or "interpreted" in GHCi) making the lines very long as in the following example:

[133 of 159] Compiling ViperVM.Arch.Linux.Internals.Input ( src/lib/ViperVM/Arch/Linux/Internals/Input.hs, .stack-work/dist/x86_64-linux/Cabal- )
[134 of 159] Compiling ViperVM.Arch.Linux.Input ( src/lib/ViperVM/Arch/Linux/Input.hs, .stack-work/dist/x86_64-linux/Cabal- )
[135 of 159] Compiling ViperVM.System.Input ( src/lib/ViperVM/System/Input.hs, .stack-work/dist/x86_64-linux/Cabal- )
[136 of 159] Compiling ViperVM.Arch.Linux.Internals.Sound ( src/lib/ViperVM/Arch/Linux/Internals/Sound.hs, .stack-work/dist/x86_64-linux/Cabal- )
[137 of 159] Compiling ViperVM.Arch.Linux.Internals.Graphics ( src/lib/ViperVM/Arch/Linux/Internals/Graphics.hs, .stack-work/dist/x86_64-linux/Cabal- )

In most cases, I think we don't need these paths. I propose that we keep this output for the verbose mode and that we change the default behaviour to something like:

[135 of 159] Compiling ViperVM.System.Input (.hs -> .o)
[136 of 159] Compiling ViperVM.Arch.Linux.Internals.Sound (.hs -> .o)
-- GHCi
[137 of 159] Compiling ViperVM.Arch.Linux.Internals.Graphics (.hs -> interpreted)

It is also particularily nice with BackPack that uses hashes in output paths: we may not want to expose them to users by default. Example:

   [1 of 1] Including p[A=r:A]
     Instantiating p[A=r:A]
-    [1 of 2] Compiling A[sig]           ( p/A.hsig, bkp26.out/p/p-8YQRY0unRYZCev5HBjXieS/A.o )
-    [2 of 2] Compiling P                ( p/P.hs, bkp26.out/p/p-8YQRY0unRYZCev5HBjXieS/P.o )
-  [1 of 1] Compiling M                ( q/M.hs, bkp26.out/q/M.o )
+    [1 of 2] Compiling A[sig]          (.hsig -> .o)
+    [2 of 2] Compiling P               (.hs -> .o)
+  [1 of 1] Compiling M               (.hs -> .o)

Change History (6)

comment:1 Changed 2 years ago by hsyl20

Differential Rev(s): Phab:D2679
Status: newpatch

comment:2 Changed 2 years ago by simonpj

OK by me. Is there a flag to show the path? Sometimes there is doubt and being able to see is good.

comment:3 Changed 2 years ago by hsyl20

I have added one: -fshow-source-paths (I'm not sure I have followed flag conventions, nor if the name is the best for this).

It can be used instead of -v2 (or higher verbosity) which may be too verbose.

Edited: -fshow-module-paths has been replaced with -fshow-source-paths

Last edited 2 years ago by hsyl20 (previous) (diff)

comment:4 Changed 2 years ago by Ben Gamari <ben@…>

In 587dcccf/ghc:

Make default output less verbose (source/object paths)

Reviewers: simonmar, mpickering, austin, bgamari

Reviewed By: bgamari

Subscribers: mpickering, nomeata, thomie

Differential Revision:

GHC Trac Issues: #12807

comment:5 Changed 2 years ago by hsyl20

Resolution: fixed
Status: patchclosed

comment:6 Changed 2 years ago by bgamari

The decision to move ahead with this has been drawn into question. See #12851 for part two of the saga.

Note: See TracTickets for help on using tickets.