diff --git a/pkgs/development/tools/documentation/haddock/boot.nix b/pkgs/development/tools/documentation/haddock/boot.nix new file mode 100644 index 00000000000..edaaac47330 --- /dev/null +++ b/pkgs/development/tools/documentation/haddock/boot.nix @@ -0,0 +1,34 @@ +{cabal, gmp}: + +cabal.mkDerivation (self : { + pname = "haddock"; + version = "0.9"; + name = self.fname; + sha256 = "beefd4a6da577978e7a79cabba60970accc5cd48fbb04c424a6b36ace3a9f8d0"; + extraBuildInputs = [gmp]; + meta = { + description = "a tool for automatically generating documentation from annotated Haskell source code"; + }; + + # we are using this for booting, and ghc-6.4.2 doesn't have full + # Cabal support, therefore we have to override some things: + configurePhase = '' + sed -i -e 's|cabal-version:.*$|cabal-version: >= 1.0|' \ + -e '/^flag/,+3d' \ + -e '/^ *if/,+2d' \ + -e '/^ *else/d' \ + -e 's|^ ||' \ + -e 's|^ ||' \ + -e '/^executable/,$ { /^ *$/d }' \ + -e '/^build-depends/d' \ + -e '/data-files/ibuild-depends: base, haskell98' \ + haddock.cabal + cp dist/build/haddock/haddock-tmp/*.hs src + ghc --make -o Setup Setup.lhs + ./Setup configure --verbose --prefix="$out" + ''; + + installPhase = '' + ./Setup copy + ''; +}) diff --git a/pkgs/development/tools/documentation/haddock/default.nix b/pkgs/development/tools/documentation/haddock/haddock-0.9.nix similarity index 66% rename from pkgs/development/tools/documentation/haddock/default.nix rename to pkgs/development/tools/documentation/haddock/haddock-0.9.nix index 86d07b240a5..8dddc59d96e 100644 --- a/pkgs/development/tools/documentation/haddock/default.nix +++ b/pkgs/development/tools/documentation/haddock/haddock-0.9.nix @@ -2,9 +2,9 @@ cabal.mkDerivation (self : { pname = "haddock"; - version = "2.0.0.0"; + version = "0.9"; name = self.fname; - sha256 = "a2ea5bdc127bc8b189a8d869f582ec774fea0933e7f5ca89549a6c142b9993df"; + sha256 = "beefd4a6da577978e7a79cabba60970accc5cd48fbb04c424a6b36ace3a9f8d0"; meta = { description = "a tool for automatically generating documentation from annotated Haskell source code"; }; diff --git a/pkgs/development/tools/documentation/haddock/haddock-2.1.0.nix b/pkgs/development/tools/documentation/haddock/haddock-2.1.0.nix new file mode 100644 index 00000000000..f170cbf7c26 --- /dev/null +++ b/pkgs/development/tools/documentation/haddock/haddock-2.1.0.nix @@ -0,0 +1,11 @@ +{cabal}: + +cabal.mkDerivation (self : { + pname = "haddock"; + version = "2.1.0"; + name = self.fname; + sha256 = "1b67869e493e56366207a128949998851f975d821e0952c2c717840d2eadaca7"; + meta = { + description = "a tool for automatically generating documentation from annotated Haskell source code"; + }; +}) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 1b2a1498747..0626215fde1 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1538,6 +1538,7 @@ let pkgs = rec { ghc683 = import ../development/compilers/ghc-6.8/ghc-6.8.3.nix { inherit fetchurl stdenv readline perl gmp ncurses m4; ghc = ghcboot; + haddock = haddockboot; }; ghc69snapshot = import ../development/compilers/ghc-6.8/head.nix { @@ -2156,10 +2157,22 @@ let pkgs = rec { inherit fetchurl stdenv; }; - haddock = import ../development/tools/documentation/haddock { + # used to bootstrap ghc with + haddockboot = lowPrio (appendToName "boot" (import ../development/tools/documentation/haddock/boot.nix { + inherit gmp; + cabal = cabalboot; + })); + + # old version of haddock, still more stable than 2.0 + haddock09 = import ../development/tools/documentation/haddock/haddock-0.9.nix { inherit cabal; }; + # does not compile with ghc-6.8.3 + haddock210 = import ../development/tools/documentation/haddock/haddock-2.1.0.nix { + cabal = cabal682; + }; + hsc2hs = import ../development/tools/misc/hsc2hs { inherit bleedingEdgeRepos stdenv; ghc = ghcsAndLibs.ghc68.ghc; @@ -3658,13 +3671,16 @@ let pkgs = rec { ghc = ghc682; }; - # cabal is a utility function to build cabal-based - # Haskell packages cabal683 = import ../development/libraries/haskell/cabal/cabal.nix { inherit stdenv fetchurl; ghc = ghc683; }; + cabalboot = import ../development/libraries/haskell/cabal/cabal.nix { + inherit stdenv fetchurl; + ghc = ghcboot; + }; + cabal = cabal683; Crypto = import ../development/libraries/haskell/Crypto {