id,summary,reporter,owner,description,type,status,priority,milestone,component,version,resolution,keywords,cc,os,architecture,failure,difficulty,testcase,blockedby,blocking,related
3542,ghc-cabal deadlocks,igloo,,"Trying to build an OS X installer is currently deadlocking when
{{{
inplace/bin/ghc-cabal install /Users/ian/ghc/6.12-branch/val/dest/Users/ian/ghc/6.12-branch/val/inst/lib/ghc-6.12.0.20090925/ghc-stage2 /Users/ian/ghc/6.12-branch/val/dest/Users/ian/ghc/6.12-branch/val/inst/lib/ghc-6.12.0.20090925/ghc-pkg /Users/ian/ghc/6.12-branch/val/dest/Users/ian/ghc/6.12-branch/val/inst/lib/ghc-6.12.0.20090925 compiler stage2 /Users/ian/ghc/6.12-branch/val/dest /Users/ian/ghc/6.12-branch/val/inst /Users/ian/ghc/6.12-branch/val/inst/lib/ghc-6.12.0.20090925 /Users/ian/ghc/6.12-branch/val/inst/share/doc/ghc/html/libraries
}}}
runs:
{{{
/Users/ian/ghc/6.12-branch/val/dest/Users/ian/ghc/6.12-branch/val/inst/lib/ghc-6.12.0.20090925/ghc-pkg --global-conf /Users/ian/ghc/6.12-branch/val/dest/Users/ian/ghc/6.12-branch/val/inst/lib/ghc-6.12.0.20090925/package.conf.d --force update - --global
}}}

Linking `ghc-cabal` with `-threaded` fixes the problem. I believe the problem is that when we are using a `DESTDIR` we get a large amount of warnings (more than a buffer full) like:
{{{
ghc-6.12.0.20090925: file AsmCodeGen.hi is missing (ignoring)
}}}
so Cabal's `Distribution.Simple.Utils.rawSystemStdin`:
{{{
      _ <- forkIO $ do _ <- evaluate (length err); return ()
      _ <- forkIO $ do _ <- evaluate (length out); return ()

      -- push all the input
      hPutStr inh input
      hClose inh

      -- wait for the program to terminate
      exitcode <- waitForProcess pid
      unless (exitcode == ExitSuccess) (die err)
}}}
deadlocks unless it is compiled with `-threaded`, as the forked evaluate threads don't get a chance to run.

The simple fix is to link with `-threaded`, but I'm not sure that we want to assume that `-threaded` works - especially as it needs to work in the bootstrapping compiler.

Can we eliminate calls to this, and any other problematic, functions?
",bug,closed,high,6.12.1,Build System,6.10.4,fixed,,,Unknown/Multiple,Unknown/Multiple,,Unknown,,,,
