Automated background build in Leksah (no more Ctrl+B) ready for some testing

Hamish Mackenzie hamish at firestream.co.uk
Sun Mar 22 07:13:08 EDT 2009


Duncan pointed out we can pass ghc options using --ghc-options=.  I have
added a "Include linking in background builds" flag.  The following flags
are passed to turn off linking...
   --ghc-options=-c
   --with-ar=/usr/bin/true
   --with-ld=/usr/bin/true

I have set up the default preference as "exclude background linking" on
Windows.  I think this should solve most of the performance problems on
windows.  /usr/bin/true may result in some odd file not found errors though.

I have also fixed a bug in the way I was detecting running builds on Linux
and OSX that prevented Ctrl+B from working in some cases.

2009/3/21 Hamish Mackenzie <hamish at firestream.co.uk>

> I have pushed a patch to add background build to leksah-head.  Basically
> this works with a timer that runs every 100ms.  If there are changes made to
> any open file it....
>
>    - interrupts any running build by sending SIGINT (sadly OSX and Linux
>    only at this point)
>    - waits for the old build processes to finish
>    - saves all the modified files
>    - starts a new build
>
> This patch also changes the way errors are highlighted in the source code
>
>    - All errors are underlined at once (not just one at time)
>    - The current list of errors is not cleared until the new list is ready
>    - New error list is made available once linking starts (so you don't
>    have to wait for linking to finish jumping to warnings)
>
> *OSX (tested) and Linux (not tested)*
> As you type it sends a SIGINT to terminate the current build before waiting
> for all child processes to terminate.  Currently it does this as soon as a
> file is modified (well it checks on a 100ms timer).  This means you can hold
> up the build by typing really fast (depending on the speed of your
> computer).  If this is problematic for anyone let me know and I will add an
> option to delay the interruption until at least one compilation has
> completed (by waiting for the second line stating with '[' or 'Linking').
> *
> Windows (tested, but slow)*
> Unfortunately it does not work quite so well on Windows, mainly because the
> equivalent of SIGINT (generateConsoleCtrlEvent) does not seem to be well
> supported by the haskell tools.  In particular if you try running '*runhaskell
> Setup.lhs build*' in a console window and pressing Ctrl+C or Ctrl+Break
> you will see that 9 times out of 10 nothing happens (I mean nothing it does
> not continue building, but it does not terminate either, at least that is
> what I found).  I have a feeling fixing this is not going to be easy
> (hopefully there is a suitable haskell/windows guru who can).
>
> An alternative to using generateConsoleCtrlEvent would be to pass
> --build-to=Compile to cabal to tell it to skip the linking stage.  Duncan,
> if you get a chance can you take a look the email and updated cabal patch I
> sent on the 21st of Feb.
>
> Hamish
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://projects.haskell.org/pipermail/leksah/attachments/20090323/879f28d1/attachment.htm 


More information about the Leksah mailing list