Merge pull request #13093 from cstrahan/ghcjs-fix-rebase

Fix GHCJS for cabal-install-1.22.8.0

+468 -34
+7 -2
pkgs/development/compilers/ghcjs/default.nix
··· 23 23 , ghc, gmp 24 24 , jailbreak-cabal 25 25 26 + , runCommand 26 27 , nodejs, stdenv, filepath, HTTP, HUnit, mtl, network, QuickCheck, random, stm 27 28 , time 28 29 , zlib, aeson, attoparsec, bzlib, hashable ··· 37 38 , coreutils 38 39 , libiconv 39 40 40 - , ghcjsBoot ? import ./ghcjs-boot.nix { inherit fetchgit; } 41 + , ghcjsBoot ? import ./ghcjs-boot.nix { inherit fetchgit runCommand; } 41 42 , shims ? import ./shims.nix { inherit fetchFromGitHub; } 42 43 }: 43 44 let version = "0.2.0"; in ··· 100 101 sed -i -e 's@ \(a\|b\)/boot/[^/]\+@ \1@g' $patch 101 102 done 102 103 ''; 104 + # We build with --quick so we can build stage 2 packages separately. 105 + # This is necessary due to: https://github.com/haskell/cabal/commit/af19fb2c2d231d8deff1cb24164a2bf7efb8905a 106 + # Cabal otherwise fails to build: http://hydra.nixos.org/build/31824079/nixlog/1/raw 103 107 postInstall = '' 104 108 PATH=$out/bin:$PATH LD_LIBRARY_PATH=${gmp}/lib:${stdenv.cc}/lib64:$LD_LIBRARY_PATH \ 105 109 env -u GHC_PACKAGE_PATH $out/bin/ghcjs-boot \ 106 110 --dev \ 111 + --quick \ 107 112 --with-cabal ${cabal-install}/bin/cabal \ 108 113 --with-gmp-includes ${gmp}/include \ 109 114 --with-gmp-libraries ${gmp}/lib ··· 111 116 passthru = { 112 117 isGhcjs = true; 113 118 nativeGhc = ghc; 114 - inherit nodejs; 119 + inherit nodejs ghcjsBoot; 115 120 }; 116 121 117 122 homepage = "https://github.com/ghcjs/ghcjs";
+35 -7
pkgs/development/compilers/ghcjs/ghcjs-boot.nix
··· 1 - { fetchgit }: 2 - fetchgit { 3 - url = git://github.com/ghcjs/ghcjs-boot.git; 4 - rev = "97dea5c4145bf80a1e7cffeb1ecd4d0ecacd5a2f"; 5 - sha256 = "1cgjzm595l2dx6fibzbkyv23bp1857qia0hb9d8aghf006al558j"; 6 - fetchSubmodules = true; 7 - } 1 + { runCommand, fetchgit }: 2 + 3 + let 4 + src = fetchgit { 5 + url = git://github.com/ghcjs/ghcjs-boot.git; 6 + rev = "97dea5c4145bf80a1e7cffeb1ecd4d0ecacd5a2f"; 7 + sha256 = "1cgjzm595l2dx6fibzbkyv23bp1857qia0hb9d8aghf006al558j"; 8 + fetchSubmodules = true; 9 + }; 10 + 11 + in 12 + 13 + # we remove the patches so ghcjs-boot doesn't try to apply them again. 14 + runCommand "${src.name}-patched" {} '' 15 + cp -r ${src} $out 16 + chmod -R +w $out 17 + 18 + # Make the patches be relative their corresponding package's directory. 19 + # See: https://github.com/ghcjs/ghcjs-boot/pull/12 20 + for patch in $out/patches/*.patch; do 21 + echo ">> fixing patch: $patch" 22 + sed -i -e 's@ \(a\|b\)/boot/[^/]\+@ \1@g' $patch 23 + done 24 + 25 + for package in $(cd $out/boot; echo *); do 26 + patch=$out/patches/$package.patch 27 + if [[ -e $patch ]]; then 28 + echo ">> patching package: $package" 29 + pushd $out/boot/$package 30 + patch -p1 < $patch 31 + rm $patch 32 + popd 33 + fi 34 + done 35 + ''
+2 -2
pkgs/development/compilers/ghcjs/shims.nix
··· 2 2 fetchFromGitHub { 3 3 owner = "ghcjs"; 4 4 repo = "shims"; 5 - rev = "45f44f5f027ec03264b61b8049951e765cc0b23a"; 6 - sha256 = "090pz4rzwlcrjavbbzxhf6c7rq7rzmr10g89hmhw4c65c4fyyykp"; 5 + rev = "4df1808d03117ddcd45f276f0ddd85c73e59506a"; 6 + sha256 = "0nay4pmq3yqqvpz23709i3729840idpcc2ii2jd0xvaj1z61adda"; 7 7 }
+20 -21
pkgs/development/haskell-modules/configuration-ghcjs.nix
··· 7 7 8 8 with import ./lib.nix { inherit pkgs; }; 9 9 10 - self: super: { 10 + self: super: 11 + # The stage 2 packages. Regenerate with ./ghcjs/gen-stage2.rb 12 + let stage2 = 13 + (import ./ghcjs/stage2.nix { 14 + inherit (self) callPackage; 15 + inherit (self.ghc) ghcjsBoot; 16 + }); in stage2 // { 17 + 18 + old-time = overrideCabal stage2.old-time (drv: { 19 + postPatch = '' 20 + ${pkgs.autoconf}/bin/autoreconf --install --force --verbose 21 + ''; 22 + }); 11 23 12 24 # LLVM is not supported on this GHC; use the latest one. 13 25 inherit (pkgs) llvmPackages; 14 26 15 27 inherit (pkgs.haskell.packages.ghc7103) jailbreak-cabal alex happy gtk2hs-buildtools rehoo hoogle; 16 28 17 - # This is the list of packages that are built into a booted ghcjs installation 29 + # This is the list of the Stage 1 packages that are built into a booted ghcjs installation 18 30 # It can be generated with the command: 19 31 # nix-shell -p haskell.packages.ghcjs.ghc --command "ghcjs-pkg list | sed -n 's/^ \(.*\)-\([0-9.]*\)$/\1_\2/ p' | sed 's/\./_/g' | sed 's/-\(.\)/\U\1/' | sed 's/^\([^_]*\)\(.*\)$/\1 = null;/'" 20 - Cabal = null; 21 - aeson = null; 22 32 array = null; 23 - async = null; 24 - attoparsec = null; 25 33 base = null; 26 34 binary = null; 27 35 rts = null; 28 36 bytestring = null; 29 - case-insensitive = null; 30 37 containers = null; 31 38 deepseq = null; 32 39 directory = null; 33 - dlist = null; 34 - extensible-exceptions = null; 35 40 filepath = null; 36 41 ghc-prim = null; 37 - ghcjs-base = null; 38 42 ghcjs-prim = null; 39 - hashable = null; 40 43 integer-gmp = null; 41 - mtl = null; 42 44 old-locale = null; 43 - old-time = null; 44 - parallel = null; 45 45 pretty = null; 46 46 primitive = null; 47 47 process = null; 48 - scientific = null; 49 - stm = null; 50 - syb = null; 51 48 template-haskell = null; 52 - text = null; 53 49 time = null; 54 50 transformers = null; 55 51 unix = null; 56 - unordered-containers = null; 57 - vector = null; 52 + 53 + # Don't set integer-simple to null! 54 + # GHCJS uses integer-gmp, so any package expression that depends on 55 + # integer-simple is wrong. 56 + #integer-simple = null; 58 57 59 58 # These packages are core libraries in GHC 7.10.x, but not here. 60 59 bin-package-db = null; ··· 105 104 }) {}; 106 105 107 106 ghcjs-dom = overrideCabal super.ghcjs-dom (drv: { 108 - libraryHaskellDepends = 107 + libraryHaskellDepends = [ self.ghcjs-base ] ++ 109 108 removeLibraryHaskellDepends [ 110 109 "glib" "gtk" "gtk3" "webkitgtk" "webkitgtk3" 111 110 ] drv.libraryHaskellDepends;
+7 -2
pkgs/development/haskell-modules/generic-builder.nix
··· 36 36 , testDepends ? [], testHaskellDepends ? [], testSystemDepends ? [] 37 37 , testTarget ? "" 38 38 , broken ? false 39 + , preCompileBuildDriver ? "", postCompileBuildDriver ? "" 39 40 , preUnpack ? "", postUnpack ? "" 40 41 , patches ? [], patchPhase ? "", prePatch ? "", postPatch ? "" 41 42 , preConfigure ? "", postConfigure ? "" ··· 56 57 concatStringsSep enableFeature optionalAttrs toUpper; 57 58 58 59 isGhcjs = ghc.isGhcjs or false; 60 + nativeGhc = if isGhcjs then ghc.nativeGhc else ghc; 59 61 60 62 newCabalFileUrl = "http://hackage.haskell.org/package/${pname}-${version}/revision/${revision}.cabal"; 61 63 newCabalFile = fetchurl { ··· 123 125 124 126 ghcEnv = ghc.withPackages (p: haskellBuildInputs); 125 127 126 - setupCommand = if isGhcjs then "${ghc.nodejs}/bin/node ./Setup.jsexe/all.js" else "./Setup"; 128 + setupBuilder = if isGhcjs then "${nativeGhc}/bin/ghc" else ghcCommand; 129 + setupCommand = "./Setup"; 127 130 ghcCommand = if isGhcjs then "ghcjs" else "ghc"; 128 131 ghcCommandCaps = toUpper ghcCommand; 129 132 ··· 199 202 done 200 203 201 204 echo setupCompileFlags: $setupCompileFlags 202 - ${ghcCommand} $setupCompileFlags --make -o Setup -odir $TMPDIR -hidir $TMPDIR $i 205 + ${setupBuilder} $setupCompileFlags --make -o Setup -odir $TMPDIR -hidir $TMPDIR $i 203 206 204 207 runHook postCompileBuildDriver 205 208 ''; ··· 295 298 ; 296 299 297 300 } 301 + // optionalAttrs (preCompileBuildDriver != "") { inherit preCompileBuildDriver; } 302 + // optionalAttrs (postCompileBuildDriver != "") { inherit postCompileBuildDriver; } 298 303 // optionalAttrs (preUnpack != "") { inherit preUnpack; } 299 304 // optionalAttrs (postUnpack != "") { inherit postUnpack; } 300 305 // optionalAttrs (configureFlags != []) { inherit configureFlags; }
+53
pkgs/development/haskell-modules/ghcjs/gen-stage2.rb
··· 1 + #!/usr/bin/env ruby 2 + 3 + require 'pathname' 4 + 5 + # from boot.yaml in ghcjs/ghcjs 6 + stage2_packages = [ 7 + "boot/async", 8 + "boot/aeson", 9 + "boot/attoparsec", 10 + "boot/case-insensitive", 11 + "boot/dlist", 12 + "boot/extensible-exceptions", 13 + "boot/hashable", 14 + "boot/mtl", 15 + "boot/old-time", 16 + "boot/parallel", 17 + "boot/scientific", 18 + "boot/stm", 19 + "boot/syb", 20 + "boot/text", 21 + "boot/unordered-containers", 22 + "boot/vector", 23 + "ghcjs/ghcjs-base", 24 + # not listed under stage2, but needed when "quick booting". 25 + "boot/cabal/Cabal" 26 + ] 27 + 28 + nixpkgs = File.expand_path("../../../../..", __FILE__) 29 + boot = `nix-build #{nixpkgs} -A haskell.packages.ghcjs.ghc.ghcjsBoot`.chomp 30 + 31 + out = "".dup 32 + out << "{ ghcjsBoot, callPackage }:\n" 33 + out << "\n" 34 + out << "{\n" 35 + 36 + stage2_packages.each do |package| 37 + name = Pathname.new(package).basename 38 + nix = `cabal2nix file://#{boot}/#{package} --jailbreak` 39 + nix.sub!(/src =.*?$/, "src = \"${ghcjsBoot}/#{package}\";") 40 + nix.sub!("libraryHaskellDepends", "doCheck = false;\n libraryHaskellDepends") 41 + # cabal2nix somehow generates the deps for 'text' as if it had selected flag 42 + # 'integer-simple' (despite not passing the flag within the generated 43 + # expression). We want integer-gmp instead. 44 + nix.gsub!(/integer-simple/, "integer-gmp") 45 + nix = nix.split("\n").join("\n ") 46 + 47 + out << " #{name} = callPackage\n" 48 + out << " (#{nix}) {};\n" 49 + end 50 + 51 + out << "}" 52 + 53 + puts out
+344
pkgs/development/haskell-modules/ghcjs/stage2.nix
··· 1 + { ghcjsBoot, callPackage }: 2 + 3 + { 4 + async = callPackage 5 + ({ mkDerivation, base, HUnit, stdenv, stm, test-framework 6 + , test-framework-hunit 7 + }: 8 + mkDerivation { 9 + pname = "async"; 10 + version = "2.0.1.6"; 11 + src = "${ghcjsBoot}/boot/async"; 12 + doCheck = false; 13 + libraryHaskellDepends = [ base stm ]; 14 + testHaskellDepends = [ 15 + base HUnit test-framework test-framework-hunit 16 + ]; 17 + jailbreak = true; 18 + homepage = "https://github.com/simonmar/async"; 19 + description = "Run IO operations asynchronously and wait for their results"; 20 + license = stdenv.lib.licenses.bsd3; 21 + }) {}; 22 + aeson = callPackage 23 + ({ mkDerivation, attoparsec, base, bytestring, containers, deepseq 24 + , dlist, ghc-prim, hashable, HUnit, mtl, QuickCheck, scientific 25 + , stdenv, syb, template-haskell, test-framework 26 + , test-framework-hunit, test-framework-quickcheck2, text, time 27 + , transformers, unordered-containers, vector 28 + }: 29 + mkDerivation { 30 + pname = "aeson"; 31 + version = "0.9.0.1"; 32 + src = "${ghcjsBoot}/boot/aeson"; 33 + doCheck = false; 34 + libraryHaskellDepends = [ 35 + attoparsec base bytestring containers deepseq dlist ghc-prim 36 + hashable mtl scientific syb template-haskell text time transformers 37 + unordered-containers vector 38 + ]; 39 + testHaskellDepends = [ 40 + attoparsec base bytestring containers ghc-prim HUnit QuickCheck 41 + template-haskell test-framework test-framework-hunit 42 + test-framework-quickcheck2 text time unordered-containers vector 43 + ]; 44 + jailbreak = true; 45 + homepage = "https://github.com/bos/aeson"; 46 + description = "Fast JSON parsing and encoding"; 47 + license = stdenv.lib.licenses.bsd3; 48 + }) {}; 49 + attoparsec = callPackage 50 + ({ mkDerivation, array, base, bytestring, containers, deepseq 51 + , QuickCheck, quickcheck-unicode, scientific, stdenv 52 + , test-framework, test-framework-quickcheck2, text, transformers 53 + , vector 54 + }: 55 + mkDerivation { 56 + pname = "attoparsec"; 57 + version = "0.13.0.1"; 58 + src = "${ghcjsBoot}/boot/attoparsec"; 59 + doCheck = false; 60 + libraryHaskellDepends = [ 61 + array base bytestring containers deepseq scientific text 62 + transformers 63 + ]; 64 + testHaskellDepends = [ 65 + array base bytestring containers deepseq QuickCheck 66 + quickcheck-unicode scientific test-framework 67 + test-framework-quickcheck2 text transformers vector 68 + ]; 69 + jailbreak = true; 70 + homepage = "https://github.com/bos/attoparsec"; 71 + description = "Fast combinator parsing for bytestrings and text"; 72 + license = stdenv.lib.licenses.bsd3; 73 + }) {}; 74 + case-insensitive = callPackage 75 + ({ mkDerivation, base, bytestring, deepseq, hashable, HUnit, stdenv 76 + , test-framework, test-framework-hunit, text 77 + }: 78 + mkDerivation { 79 + pname = "case-insensitive"; 80 + version = "1.2.0.4"; 81 + src = "${ghcjsBoot}/boot/case-insensitive"; 82 + doCheck = false; 83 + libraryHaskellDepends = [ base bytestring deepseq hashable text ]; 84 + testHaskellDepends = [ 85 + base bytestring HUnit test-framework test-framework-hunit text 86 + ]; 87 + jailbreak = true; 88 + homepage = "https://github.com/basvandijk/case-insensitive"; 89 + description = "Case insensitive string comparison"; 90 + license = stdenv.lib.licenses.bsd3; 91 + }) {}; 92 + dlist = callPackage 93 + ({ mkDerivation, base, Cabal, deepseq, QuickCheck, stdenv }: 94 + mkDerivation { 95 + pname = "dlist"; 96 + version = "0.7.1.1"; 97 + src = "${ghcjsBoot}/boot/dlist"; 98 + doCheck = false; 99 + libraryHaskellDepends = [ base deepseq ]; 100 + testHaskellDepends = [ base Cabal QuickCheck ]; 101 + jailbreak = true; 102 + homepage = "https://github.com/spl/dlist"; 103 + description = "Difference lists"; 104 + license = stdenv.lib.licenses.bsd3; 105 + }) {}; 106 + extensible-exceptions = callPackage 107 + ({ mkDerivation, base, stdenv }: 108 + mkDerivation { 109 + pname = "extensible-exceptions"; 110 + version = "0.1.1.4"; 111 + src = "${ghcjsBoot}/boot/extensible-exceptions"; 112 + doCheck = false; 113 + libraryHaskellDepends = [ base ]; 114 + jailbreak = true; 115 + description = "Extensible exceptions"; 116 + license = stdenv.lib.licenses.bsd3; 117 + }) {}; 118 + hashable = callPackage 119 + ({ mkDerivation, base, bytestring, ghc-prim, HUnit, integer-gmp 120 + , QuickCheck, random, stdenv, test-framework, test-framework-hunit 121 + , test-framework-quickcheck2, text, unix 122 + }: 123 + mkDerivation { 124 + pname = "hashable"; 125 + version = "1.2.3.2"; 126 + src = "${ghcjsBoot}/boot/hashable"; 127 + doCheck = false; 128 + libraryHaskellDepends = [ 129 + base bytestring ghc-prim integer-gmp text 130 + ]; 131 + testHaskellDepends = [ 132 + base bytestring ghc-prim HUnit QuickCheck random test-framework 133 + test-framework-hunit test-framework-quickcheck2 text unix 134 + ]; 135 + jailbreak = true; 136 + homepage = "http://github.com/tibbe/hashable"; 137 + description = "A class for types that can be converted to a hash value"; 138 + license = stdenv.lib.licenses.bsd3; 139 + }) {}; 140 + mtl = callPackage 141 + ({ mkDerivation, base, stdenv, transformers }: 142 + mkDerivation { 143 + pname = "mtl"; 144 + version = "2.2.1"; 145 + src = "${ghcjsBoot}/boot/mtl"; 146 + doCheck = false; 147 + libraryHaskellDepends = [ base transformers ]; 148 + jailbreak = true; 149 + homepage = "http://github.com/ekmett/mtl"; 150 + description = "Monad classes, using functional dependencies"; 151 + license = stdenv.lib.licenses.bsd3; 152 + }) {}; 153 + old-time = callPackage 154 + ({ mkDerivation, base, old-locale, stdenv }: 155 + mkDerivation { 156 + pname = "old-time"; 157 + version = "1.1.0.3"; 158 + src = "${ghcjsBoot}/boot/old-time"; 159 + doCheck = false; 160 + libraryHaskellDepends = [ base old-locale ]; 161 + jailbreak = true; 162 + description = "Time library"; 163 + license = stdenv.lib.licenses.bsd3; 164 + }) {}; 165 + parallel = callPackage 166 + ({ mkDerivation, array, base, containers, deepseq, stdenv }: 167 + mkDerivation { 168 + pname = "parallel"; 169 + version = "3.2.0.6"; 170 + src = "${ghcjsBoot}/boot/parallel"; 171 + doCheck = false; 172 + libraryHaskellDepends = [ array base containers deepseq ]; 173 + jailbreak = true; 174 + description = "Parallel programming library"; 175 + license = stdenv.lib.licenses.bsd3; 176 + }) {}; 177 + scientific = callPackage 178 + ({ mkDerivation, array, base, bytestring, deepseq, ghc-prim 179 + , hashable, integer-gmp, QuickCheck, smallcheck, stdenv, tasty 180 + , tasty-ant-xml, tasty-hunit, tasty-quickcheck, tasty-smallcheck 181 + , text 182 + }: 183 + mkDerivation { 184 + pname = "scientific"; 185 + version = "0.3.3.8"; 186 + src = "${ghcjsBoot}/boot/scientific"; 187 + doCheck = false; 188 + libraryHaskellDepends = [ 189 + array base bytestring deepseq ghc-prim hashable integer-gmp text 190 + ]; 191 + testHaskellDepends = [ 192 + base bytestring QuickCheck smallcheck tasty tasty-ant-xml 193 + tasty-hunit tasty-quickcheck tasty-smallcheck text 194 + ]; 195 + jailbreak = true; 196 + homepage = "https://github.com/basvandijk/scientific"; 197 + description = "Numbers represented using scientific notation"; 198 + license = stdenv.lib.licenses.bsd3; 199 + }) {}; 200 + stm = callPackage 201 + ({ mkDerivation, array, base, stdenv }: 202 + mkDerivation { 203 + pname = "stm"; 204 + version = "2.4.4"; 205 + src = "${ghcjsBoot}/boot/stm"; 206 + doCheck = false; 207 + libraryHaskellDepends = [ array base ]; 208 + jailbreak = true; 209 + description = "Software Transactional Memory"; 210 + license = stdenv.lib.licenses.bsd3; 211 + }) {}; 212 + syb = callPackage 213 + ({ mkDerivation, base, containers, HUnit, mtl, stdenv }: 214 + mkDerivation { 215 + pname = "syb"; 216 + version = "0.5.1"; 217 + src = "${ghcjsBoot}/boot/syb"; 218 + doCheck = false; 219 + libraryHaskellDepends = [ base ]; 220 + testHaskellDepends = [ base containers HUnit mtl ]; 221 + jailbreak = true; 222 + homepage = "http://www.cs.uu.nl/wiki/GenericProgramming/SYB"; 223 + description = "Scrap Your Boilerplate"; 224 + license = stdenv.lib.licenses.bsd3; 225 + }) {}; 226 + text = callPackage 227 + ({ mkDerivation, array, base, binary, bytestring, deepseq, directory 228 + , ghc-prim, HUnit, integer-gmp, QuickCheck, quickcheck-unicode 229 + , random, stdenv, test-framework, test-framework-hunit 230 + , test-framework-quickcheck2 231 + }: 232 + mkDerivation { 233 + pname = "text"; 234 + version = "1.2.1.1"; 235 + src = "${ghcjsBoot}/boot/text"; 236 + doCheck = false; 237 + libraryHaskellDepends = [ 238 + array base binary bytestring deepseq ghc-prim integer-gmp 239 + ]; 240 + testHaskellDepends = [ 241 + array base binary bytestring deepseq directory ghc-prim HUnit 242 + integer-gmp QuickCheck quickcheck-unicode random test-framework 243 + test-framework-hunit test-framework-quickcheck2 244 + ]; 245 + jailbreak = true; 246 + homepage = "https://github.com/bos/text"; 247 + description = "An efficient packed Unicode text type"; 248 + license = stdenv.lib.licenses.bsd3; 249 + }) {}; 250 + unordered-containers = callPackage 251 + ({ mkDerivation, base, ChasingBottoms, containers, deepseq, hashable 252 + , HUnit, QuickCheck, stdenv, test-framework, test-framework-hunit 253 + , test-framework-quickcheck2 254 + }: 255 + mkDerivation { 256 + pname = "unordered-containers"; 257 + version = "0.2.5.1"; 258 + src = "${ghcjsBoot}/boot/unordered-containers"; 259 + doCheck = false; 260 + libraryHaskellDepends = [ base deepseq hashable ]; 261 + testHaskellDepends = [ 262 + base ChasingBottoms containers hashable HUnit QuickCheck 263 + test-framework test-framework-hunit test-framework-quickcheck2 264 + ]; 265 + jailbreak = true; 266 + homepage = "https://github.com/tibbe/unordered-containers"; 267 + description = "Efficient hashing-based container types"; 268 + license = stdenv.lib.licenses.bsd3; 269 + }) {}; 270 + vector = callPackage 271 + ({ mkDerivation, base, deepseq, ghc-prim, primitive, QuickCheck 272 + , random, stdenv, template-haskell, test-framework 273 + , test-framework-quickcheck2, transformers 274 + }: 275 + mkDerivation { 276 + pname = "vector"; 277 + version = "0.11.0.0"; 278 + src = "${ghcjsBoot}/boot/vector"; 279 + doCheck = false; 280 + libraryHaskellDepends = [ base deepseq ghc-prim primitive ]; 281 + testHaskellDepends = [ 282 + base QuickCheck random template-haskell test-framework 283 + test-framework-quickcheck2 transformers 284 + ]; 285 + jailbreak = true; 286 + homepage = "https://github.com/haskell/vector"; 287 + description = "Efficient Arrays"; 288 + license = stdenv.lib.licenses.bsd3; 289 + }) {}; 290 + ghcjs-base = callPackage 291 + ({ mkDerivation, aeson, array, attoparsec, base, bytestring 292 + , containers, deepseq, directory, dlist, ghc-prim, ghcjs-prim 293 + , hashable, HUnit, integer-gmp, primitive, QuickCheck 294 + , quickcheck-unicode, random, scientific, stdenv, test-framework 295 + , test-framework-hunit, test-framework-quickcheck2, text, time 296 + , transformers, unordered-containers, vector 297 + }: 298 + mkDerivation { 299 + pname = "ghcjs-base"; 300 + version = "0.2.0.0"; 301 + src = "${ghcjsBoot}/ghcjs/ghcjs-base"; 302 + doCheck = false; 303 + libraryHaskellDepends = [ 304 + aeson attoparsec base bytestring containers deepseq dlist ghc-prim 305 + ghcjs-prim hashable integer-gmp primitive scientific text time 306 + transformers unordered-containers vector 307 + ]; 308 + testHaskellDepends = [ 309 + array base bytestring deepseq directory ghc-prim ghcjs-prim HUnit 310 + primitive QuickCheck quickcheck-unicode random test-framework 311 + test-framework-hunit test-framework-quickcheck2 text 312 + ]; 313 + jailbreak = true; 314 + homepage = "http://github.com/ghcjs/ghcjs-base"; 315 + description = "base library for GHCJS"; 316 + license = stdenv.lib.licenses.mit; 317 + }) {}; 318 + Cabal = callPackage 319 + ({ mkDerivation, array, base, binary, bytestring, containers 320 + , deepseq, directory, extensible-exceptions, filepath, HUnit 321 + , old-time, pretty, process, QuickCheck, regex-posix, stdenv 322 + , test-framework, test-framework-hunit, test-framework-quickcheck2 323 + , time, unix 324 + }: 325 + mkDerivation { 326 + pname = "Cabal"; 327 + version = "1.22.4.0"; 328 + src = "${ghcjsBoot}/boot/cabal/Cabal"; 329 + doCheck = false; 330 + libraryHaskellDepends = [ 331 + array base binary bytestring containers deepseq directory filepath 332 + pretty process time unix 333 + ]; 334 + testHaskellDepends = [ 335 + base bytestring containers directory extensible-exceptions filepath 336 + HUnit old-time process QuickCheck regex-posix test-framework 337 + test-framework-hunit test-framework-quickcheck2 unix 338 + ]; 339 + jailbreak = true; 340 + homepage = "http://www.haskell.org/cabal/"; 341 + description = "A framework for packaging Haskell software"; 342 + license = stdenv.lib.licenses.bsd3; 343 + }) {}; 344 + }