notice and similar functions generate interleaved output when used concurrently.
This is due to the use of hPutStrLn.
It makes writing Cabal hooks that do things in parallel a pain.
It also makes straceing cabal very annoying because it pollutes the outuput.
As a solution, we should use something like say, that prints the entire contents in one go and ensures no interleaved output.