
Friends With the new build system I get this kind of output HC [stage 1] compiler/stage2/build/SPARC/AddrMode.o HC [stage 1] compiler/stage2/build/CmmContFlowOpt.o HC [stage 1] compiler/stage2/build/CmmImplementSwitchPlans.o AR libraries/Cabal/Cabal/dist-install/build/libHSCabal-1.23.0.0-752LrSyTT7YLYxOzpNXfM5.a C:\fp\HP-2014-2.0.0.0\mingw\bin\ar.exe: creating libraries/Cabal/Cabal/dist-install/build/libHSCabal-1.23.0.0-752LrSyTT7YLYxOzpNXfM5.a LD libraries/Cabal/Cabal/dist-install/build/HSCabal-1.23.0.0-752LrSyTT7YLYxOzpNXfM5.o HC [stage 1] utils/ghc-cabal/dist-install/build/Main.o WARNING: file compiler\specialise\Specialise.hs, line 724 But I have no idea which module caused the WARNING, nor do I have a command-line to copy/paste to reproduce it. (With the old module-at-a-time system I could copy/paste the command line for the specific module.) Is there a way to * make things sequential so I can tell which warnings from which module * get a command line to copy/paste to compile that module? Thanks Simon

On Tue, Jul 21, 2015 at 4:21 PM, Simon Peyton Jones
Friends
With the new build system I get this kind of output
HC [stage 1] compiler/stage2/build/SPARC/AddrMode.o
HC [stage 1] compiler/stage2/build/CmmContFlowOpt.o
HC [stage 1] compiler/stage2/build/CmmImplementSwitchPlans.o
AR libraries/Cabal/Cabal/dist-install/build/libHSCabal-1.23.0.0-752LrSyTT7YLYxOzpNXfM5.a
C:\fp\HP-2014-2.0.0.0\mingw\bin\ar.exe: creating libraries/Cabal/Cabal/dist-install/build/libHSCabal-1.23.0.0-752LrSyTT7YLYxOzpNXfM5.a
LD libraries/Cabal/Cabal/dist-install/build/HSCabal-1.23.0.0-752LrSyTT7YLYxOzpNXfM5.o
HC [stage 1] utils/ghc-cabal/dist-install/build/Main.o
*WARNING*: file compiler\specialise\Specialise.hs, line 724
I assume this is when you run validate?
But I have no idea which module caused the WARNING, nor do I have a command-line to copy/paste to reproduce it. (With the old module-at-a-time system I could copy/paste the command line for the specific module.)
Is there a way to
· make things sequential so I can tell which warnings from which module
make -j1, which is make's default, but validate invokes make with -j2 or higher (depending on how many CPUs it thinks your system has).
· get a command line to copy/paste to compile that module?
validate sets the GHC build system variable V=0 in mk/are-validating.mk. You can override it from the make command line with make V=1. So, you can run "make V=1" to restart the build serially and with the command to build each file displayed. Note that serial make may build modules in a different order than parallel make, so it may take a while for make to get around to building the module that failed. Regards, Reid Barton

What Reid said is correct. I just changed validate back to use V=1 though,
since it seems like a better default. From
https://ghc.haskell.org/trac/ghc/wiki/Design/BuildSystem:
"The build system should clearly report what it's doing (and sometimes
why), without being too verbose. It should emit actual command lines as
much as possible, so that they can be inspected and cut & pasted. "
You can run `./validate --quiet` to get the previous behavior.
To make things sequential: you can use `CPUS=1 ./validate`.
On Tue, Jul 21, 2015 at 11:16 PM, Reid Barton
On Tue, Jul 21, 2015 at 4:21 PM, Simon Peyton Jones
wrote:
Friends
With the new build system I get this kind of output
HC [stage 1] compiler/stage2/build/SPARC/AddrMode.o
HC [stage 1] compiler/stage2/build/CmmContFlowOpt.o
HC [stage 1] compiler/stage2/build/CmmImplementSwitchPlans.o
AR libraries/Cabal/Cabal/dist-install/build/libHSCabal-1.23.0.0-752LrSyTT7YLYxOzpNXfM5.a
C:\fp\HP-2014-2.0.0.0\mingw\bin\ar.exe: creating libraries/Cabal/Cabal/dist-install/build/libHSCabal-1.23.0.0-752LrSyTT7YLYxOzpNXfM5.a
LD libraries/Cabal/Cabal/dist-install/build/HSCabal-1.23.0.0-752LrSyTT7YLYxOzpNXfM5.o
HC [stage 1] utils/ghc-cabal/dist-install/build/Main.o
*WARNING*: file compiler\specialise\Specialise.hs, line 724
I assume this is when you run validate?
But I have no idea which module caused the WARNING, nor do I have a command-line to copy/paste to reproduce it. (With the old module-at-a-time system I could copy/paste the command line for the specific module.)
Is there a way to
· make things sequential so I can tell which warnings from which module
make -j1, which is make's default, but validate invokes make with -j2 or higher (depending on how many CPUs it thinks your system has).
· get a command line to copy/paste to compile that module?
validate sets the GHC build system variable V=0 in mk/are-validating.mk. You can override it from the make command line with make V=1.
So, you can run "make V=1" to restart the build serially and with the command to build each file displayed. Note that serial make may build modules in a different order than parallel make, so it may take a while for make to get around to building the module that failed.
Regards, Reid Barton
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

Fantastic, thanks.
Might you add info on what “validate” understands to https://ghc.haskell.org/trac/ghc/wiki/TestingPatches?
And ditto the V flags to
https://ghc.haskell.org/trac/ghc/wiki/Building/Hacking
Simon
From: Thomas Miedema [mailto:thomasmiedema@gmail.com]
Sent: 21 July 2015 22:33
To: Reid Barton
Cc: Simon Peyton Jones; ghc-devs@haskell.org
Subject: Re: build system
What Reid said is correct. I just changed validate back to use V=1 though, since it seems like a better default. From https://ghc.haskell.org/trac/ghc/wiki/Design/BuildSystem:
"The build system should clearly report what it's doing (and sometimes why), without being too verbose. It should emit actual command lines as much as possible, so that they can be inspected and cut & pasted. "
You can run `./validate --quiet` to get the previous behavior.
To make things sequential: you can use `CPUS=1 ./validate`.
On Tue, Jul 21, 2015 at 11:16 PM, Reid Barton

On Tue, Jul 21, 2015 at 11:36 PM, Simon Peyton Jones
Fantastic, thanks.
Might you add info on what “validate” understands to https://ghc.haskell.org/trac/ghc/wiki/TestingPatches?
Done. There is also `./validate --help`.
And ditto the V flags to
Ok, but I put it on this page instead: https://ghc.haskell.org/trac/ghc/wiki/Building/Using#Buildconfiguration https://ghc.haskell.org/trac/ghc/wiki/Building/Using#Verbosebuild The `V=0` option is also discoverable from the `mk/build.mk.sample` file.

Thank you!
From: Thomas Miedema [mailto:thomasmiedema@gmail.com]
Sent: 21 July 2015 23:04
To: Simon Peyton Jones
Cc: Reid Barton; ghc-devs@haskell.org
Subject: Re: build system
On Tue, Jul 21, 2015 at 11:36 PM, Simon Peyton Jones

Oh yes, I keep forgetting that. So many variables..
How about we remove the possibility to set CPUS, and only keep THREADS (but
still set it to the number of processors+1 by default).
On Wed, Jul 22, 2015 at 12:14 AM, Ian Lynagh
On Tue, Jul 21, 2015 at 11:32:55PM +0200, Thomas Miedema wrote:
To make things sequential: you can use `CPUS=1 ./validate`.
You need "THREADS=1 ./validate".
CPUS=1 would use 2 threads.
Thanks Ian
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
participants (4)
-
Ian Lynagh
-
Reid Barton
-
Simon Peyton Jones
-
Thomas Miedema