Propagation is not needed anymore, as we have more powerful apis today
than this dirty hack. See nix-shell tool and python.buildEnv function
in nixpkgs manual.
The new version of hackage2nix adds an automatic jailbreak=true attribute to
all builds that are known to fail because of unsatisfied dependency version
constraints. Of course, hackage2nix is only able to detect these problems for
the default package set -- "haskellngPackages" -- that's built with GHC 7.8.4.
It cannot know problems that might arise if you build a package with a
different version of GHC, which comes with different versions of the core
libraries. This change "fixed" 806 builds: http://hydra.cryp.to/eval/85620.
Please pay attention to possible jailbreaks when reporting build errors
upstream! If a build was run with jailbreaking enabled, the build log says
| Running jailbreak-cabal to lift version restrictions on build inputs.
at the very top. Upstream bug reports about build errors should contain that
information, i.e. the package author should know that you're building with
different (newer!) library versions than they're specifying.
Furthermore, build expressions no longer contain an explicit list of every
Cabal flag setting. Instead, we trust that Cabal figures out an appropriate
configuration at build time. This makes the build expressions more space to
adapt to different configuration at the cost of being slightly less
deterministic.
Originally, I thought that I can commit a "clean" patch -- even if it
triggers re-builds -- because those re-builds were triggered by the
ncurses patch to GHC anyway . That patch had to be reverted, though, so
now I'm rewriting this patch to avoid re-builds on Linux.
What a mess. :-(
I thought that [1] could be fixed by ensuring that ncurses is available in the
environment (because ghc exports it as a propagateBuildInput), and indeed that
change fixed *some* build failures we've had before. However, the same error
still occurs with other packages, like hledger [2] and Agda [3]. Frankly, I
have no idea why those packages fail and others don't. But clearly the fix was
inadequate, so I'm reverting commit a8076c76.
[1] https://github.com/NixOS/nixpkgs/issues/5616
[2] http://hydra.cryp.to/build/372451/nixlog/1/raw
[2] http://hydra.cryp.to/build/373161/nixlog/1/raw