diff options
author | Ryan Trinkle <ryan.trinkle@gmail.com> | 2016-07-26 16:58:56 -0400 |
---|---|---|
committer | Ryan Trinkle <ryan.trinkle@gmail.com> | 2016-07-26 16:58:56 -0400 |
commit | c564997ba0372147a2b0f376073fdfdd37306152 (patch) | |
tree | bfd834296ab915841adbdc6479c83a21e01165ab /pkgs/development/haskell-modules | |
parent | 3badad811c600db9867f15a326efa69898299099 (diff) | |
download | nixpkgs-c564997ba0372147a2b0f376073fdfdd37306152.tar nixpkgs-c564997ba0372147a2b0f376073fdfdd37306152.tar.gz nixpkgs-c564997ba0372147a2b0f376073fdfdd37306152.tar.bz2 nixpkgs-c564997ba0372147a2b0f376073fdfdd37306152.tar.lz nixpkgs-c564997ba0372147a2b0f376073fdfdd37306152.tar.xz nixpkgs-c564997ba0372147a2b0f376073fdfdd37306152.tar.zst nixpkgs-c564997ba0372147a2b0f376073fdfdd37306152.zip |
ghcjs: refactor stage2 handling
Previously, the stage2 information was stored in haskell-modules, and imported directly from there. However, the correct stage2 information is determined by the version of ghcjs-boot repository. This commit makes the stage2 information part of the ghcjs derivation, which improves organization and makes it possible to override stage2 when overriding ghcjs.
Diffstat (limited to 'pkgs/development/haskell-modules')
-rw-r--r-- | pkgs/development/haskell-modules/configuration-ghcjs.nix | 6 | ||||
-rw-r--r-- | pkgs/development/haskell-modules/ghcjs/gen-stage2.rb | 53 | ||||
-rw-r--r-- | pkgs/development/haskell-modules/ghcjs/stage2.nix | 344 |
3 files changed, 2 insertions, 401 deletions
diff --git a/pkgs/development/haskell-modules/configuration-ghcjs.nix b/pkgs/development/haskell-modules/configuration-ghcjs.nix index d75a7f889aa..fffe29b1bc3 100644 --- a/pkgs/development/haskell-modules/configuration-ghcjs.nix +++ b/pkgs/development/haskell-modules/configuration-ghcjs.nix @@ -9,11 +9,9 @@ with import ./lib.nix { inherit pkgs; }; self: super: # The stage 2 packages. Regenerate with ./ghcjs/gen-stage2.rb - let stage2 = - (import ./ghcjs/stage2.nix { + let stage2 = super.ghc.mkStage2 { inherit (self) callPackage; - inherit (self.ghc) ghcjsBoot; - }); in stage2 // { + }; in stage2 // { old-time = overrideCabal stage2.old-time (drv: { postPatch = '' diff --git a/pkgs/development/haskell-modules/ghcjs/gen-stage2.rb b/pkgs/development/haskell-modules/ghcjs/gen-stage2.rb deleted file mode 100644 index c801dbe3e4b..00000000000 --- a/pkgs/development/haskell-modules/ghcjs/gen-stage2.rb +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env ruby - -require 'pathname' - -# from boot.yaml in ghcjs/ghcjs -stage2_packages = [ - "boot/async", - "boot/aeson", - "boot/attoparsec", - "boot/case-insensitive", - "boot/dlist", - "boot/extensible-exceptions", - "boot/hashable", - "boot/mtl", - "boot/old-time", - "boot/parallel", - "boot/scientific", - "boot/stm", - "boot/syb", - "boot/text", - "boot/unordered-containers", - "boot/vector", - "ghcjs/ghcjs-base", - # not listed under stage2, but needed when "quick booting". - "boot/cabal/Cabal" -] - -nixpkgs = File.expand_path("../../../../..", __FILE__) -boot = `nix-build #{nixpkgs} -A haskell.packages.ghcjs.ghc.ghcjsBoot`.chomp - -out = "".dup -out << "{ ghcjsBoot, callPackage }:\n" -out << "\n" -out << "{\n" - -stage2_packages.each do |package| - name = Pathname.new(package).basename - nix = `cabal2nix file://#{boot}/#{package} --jailbreak` - nix.sub!(/src =.*?$/, "src = \"${ghcjsBoot}/#{package}\";") - nix.sub!("libraryHaskellDepends", "doCheck = false;\n libraryHaskellDepends") - # cabal2nix somehow generates the deps for 'text' as if it had selected flag - # 'integer-simple' (despite not passing the flag within the generated - # expression). We want integer-gmp instead. - nix.gsub!(/integer-simple/, "integer-gmp") - nix = nix.split("\n").join("\n ") - - out << " #{name} = callPackage\n" - out << " (#{nix}) {};\n" -end - -out << "}" - -puts out diff --git a/pkgs/development/haskell-modules/ghcjs/stage2.nix b/pkgs/development/haskell-modules/ghcjs/stage2.nix deleted file mode 100644 index aca4c6c7828..00000000000 --- a/pkgs/development/haskell-modules/ghcjs/stage2.nix +++ /dev/null @@ -1,344 +0,0 @@ -{ ghcjsBoot, callPackage }: - -{ - async = callPackage - ({ mkDerivation, base, HUnit, stdenv, stm, test-framework - , test-framework-hunit - }: - mkDerivation { - pname = "async"; - version = "2.0.1.6"; - src = "${ghcjsBoot}/boot/async"; - doCheck = false; - libraryHaskellDepends = [ base stm ]; - testHaskellDepends = [ - base HUnit test-framework test-framework-hunit - ]; - jailbreak = true; - homepage = "https://github.com/simonmar/async"; - description = "Run IO operations asynchronously and wait for their results"; - license = stdenv.lib.licenses.bsd3; - }) {}; - aeson = callPackage - ({ mkDerivation, attoparsec, base, bytestring, containers, deepseq - , dlist, ghc-prim, hashable, HUnit, mtl, QuickCheck, scientific - , stdenv, syb, template-haskell, test-framework - , test-framework-hunit, test-framework-quickcheck2, text, time - , transformers, unordered-containers, vector - }: - mkDerivation { - pname = "aeson"; - version = "0.9.0.1"; - src = "${ghcjsBoot}/boot/aeson"; - doCheck = false; - libraryHaskellDepends = [ - attoparsec base bytestring containers deepseq dlist ghc-prim - hashable mtl scientific syb template-haskell text time transformers - unordered-containers vector - ]; - testHaskellDepends = [ - attoparsec base bytestring containers ghc-prim HUnit QuickCheck - template-haskell test-framework test-framework-hunit - test-framework-quickcheck2 text time unordered-containers vector - ]; - jailbreak = true; - homepage = "https://github.com/bos/aeson"; - description = "Fast JSON parsing and encoding"; - license = stdenv.lib.licenses.bsd3; - }) {}; - attoparsec = callPackage - ({ mkDerivation, array, base, bytestring, containers, deepseq - , QuickCheck, quickcheck-unicode, scientific, stdenv - , test-framework, test-framework-quickcheck2, text, transformers - , vector - }: - mkDerivation { - pname = "attoparsec"; - version = "0.13.0.1"; - src = "${ghcjsBoot}/boot/attoparsec"; - doCheck = false; - libraryHaskellDepends = [ - array base bytestring containers deepseq scientific text - transformers - ]; - testHaskellDepends = [ - array base bytestring containers deepseq QuickCheck - quickcheck-unicode scientific test-framework - test-framework-quickcheck2 text transformers vector - ]; - jailbreak = true; - homepage = "https://github.com/bos/attoparsec"; - description = "Fast combinator parsing for bytestrings and text"; - license = stdenv.lib.licenses.bsd3; - }) {}; - case-insensitive = callPackage - ({ mkDerivation, base, bytestring, deepseq, hashable, HUnit, stdenv - , test-framework, test-framework-hunit, text - }: - mkDerivation { - pname = "case-insensitive"; - version = "1.2.0.4"; - src = "${ghcjsBoot}/boot/case-insensitive"; - doCheck = false; - libraryHaskellDepends = [ base bytestring deepseq hashable text ]; - testHaskellDepends = [ - base bytestring HUnit test-framework test-framework-hunit text - ]; - jailbreak = true; - homepage = "https://github.com/basvandijk/case-insensitive"; - description = "Case insensitive string comparison"; - license = stdenv.lib.licenses.bsd3; - }) {}; - dlist = callPackage - ({ mkDerivation, base, Cabal, deepseq, QuickCheck, stdenv }: - mkDerivation { - pname = "dlist"; - version = "0.7.1.1"; - src = "${ghcjsBoot}/boot/dlist"; - doCheck = false; - libraryHaskellDepends = [ base deepseq ]; - testHaskellDepends = [ base Cabal QuickCheck ]; - jailbreak = true; - homepage = "https://github.com/spl/dlist"; - description = "Difference lists"; - license = stdenv.lib.licenses.bsd3; - }) {}; - extensible-exceptions = callPackage - ({ mkDerivation, base, stdenv }: - mkDerivation { - pname = "extensible-exceptions"; - version = "0.1.1.4"; - src = "${ghcjsBoot}/boot/extensible-exceptions"; - doCheck = false; - libraryHaskellDepends = [ base ]; - jailbreak = true; - description = "Extensible exceptions"; - license = stdenv.lib.licenses.bsd3; - }) {}; - hashable = callPackage - ({ mkDerivation, base, bytestring, ghc-prim, HUnit, integer-gmp - , QuickCheck, random, stdenv, test-framework, test-framework-hunit - , test-framework-quickcheck2, text, unix - }: - mkDerivation { - pname = "hashable"; - version = "1.2.3.2"; - src = "${ghcjsBoot}/boot/hashable"; - doCheck = false; - libraryHaskellDepends = [ - base bytestring ghc-prim integer-gmp text - ]; - testHaskellDepends = [ - base bytestring ghc-prim HUnit QuickCheck random test-framework - test-framework-hunit test-framework-quickcheck2 text unix - ]; - jailbreak = true; - homepage = "http://github.com/tibbe/hashable"; - description = "A class for types that can be converted to a hash value"; - license = stdenv.lib.licenses.bsd3; - }) {}; - mtl = callPackage - ({ mkDerivation, base, stdenv, transformers }: - mkDerivation { - pname = "mtl"; - version = "2.2.1"; - src = "${ghcjsBoot}/boot/mtl"; - doCheck = false; - libraryHaskellDepends = [ base transformers ]; - jailbreak = true; - homepage = "http://github.com/ekmett/mtl"; - description = "Monad classes, using functional dependencies"; - license = stdenv.lib.licenses.bsd3; - }) {}; - old-time = callPackage - ({ mkDerivation, base, old-locale, stdenv }: - mkDerivation { - pname = "old-time"; - version = "1.1.0.3"; - src = "${ghcjsBoot}/boot/old-time"; - doCheck = false; - libraryHaskellDepends = [ base old-locale ]; - jailbreak = true; - description = "Time library"; - license = stdenv.lib.licenses.bsd3; - }) {}; - parallel = callPackage - ({ mkDerivation, array, base, containers, deepseq, stdenv }: - mkDerivation { - pname = "parallel"; - version = "3.2.0.6"; - src = "${ghcjsBoot}/boot/parallel"; - doCheck = false; - libraryHaskellDepends = [ array base containers deepseq ]; - jailbreak = true; - description = "Parallel programming library"; - license = stdenv.lib.licenses.bsd3; - }) {}; - scientific = callPackage - ({ mkDerivation, array, base, bytestring, deepseq, ghc-prim - , hashable, integer-gmp, QuickCheck, smallcheck, stdenv, tasty - , tasty-ant-xml, tasty-hunit, tasty-quickcheck, tasty-smallcheck - , text - }: - mkDerivation { - pname = "scientific"; - version = "0.3.3.8"; - src = "${ghcjsBoot}/boot/scientific"; - doCheck = false; - libraryHaskellDepends = [ - array base bytestring deepseq ghc-prim hashable integer-gmp text - ]; - testHaskellDepends = [ - base bytestring QuickCheck smallcheck tasty tasty-ant-xml - tasty-hunit tasty-quickcheck tasty-smallcheck text - ]; - jailbreak = true; - homepage = "https://github.com/basvandijk/scientific"; - description = "Numbers represented using scientific notation"; - license = stdenv.lib.licenses.bsd3; - }) {}; - stm = callPackage - ({ mkDerivation, array, base, stdenv }: - mkDerivation { - pname = "stm"; - version = "2.4.4"; - src = "${ghcjsBoot}/boot/stm"; - doCheck = false; - libraryHaskellDepends = [ array base ]; - jailbreak = true; - description = "Software Transactional Memory"; - license = stdenv.lib.licenses.bsd3; - }) {}; - syb = callPackage - ({ mkDerivation, base, containers, HUnit, mtl, stdenv }: - mkDerivation { - pname = "syb"; - version = "0.5.1"; - src = "${ghcjsBoot}/boot/syb"; - doCheck = false; - libraryHaskellDepends = [ base ]; - testHaskellDepends = [ base containers HUnit mtl ]; - jailbreak = true; - homepage = "http://www.cs.uu.nl/wiki/GenericProgramming/SYB"; - description = "Scrap Your Boilerplate"; - license = stdenv.lib.licenses.bsd3; - }) {}; - text = callPackage - ({ mkDerivation, array, base, binary, bytestring, deepseq, directory - , ghc-prim, HUnit, integer-gmp, QuickCheck, quickcheck-unicode - , random, stdenv, test-framework, test-framework-hunit - , test-framework-quickcheck2 - }: - mkDerivation { - pname = "text"; - version = "1.2.1.1"; - src = "${ghcjsBoot}/boot/text"; - doCheck = false; - libraryHaskellDepends = [ - array base binary bytestring deepseq ghc-prim integer-gmp - ]; - testHaskellDepends = [ - array base binary bytestring deepseq directory ghc-prim HUnit - integer-gmp QuickCheck quickcheck-unicode random test-framework - test-framework-hunit test-framework-quickcheck2 - ]; - jailbreak = true; - homepage = "https://github.com/bos/text"; - description = "An efficient packed Unicode text type"; - license = stdenv.lib.licenses.bsd3; - }) {}; - unordered-containers = callPackage - ({ mkDerivation, base, ChasingBottoms, containers, deepseq, hashable - , HUnit, QuickCheck, stdenv, test-framework, test-framework-hunit - , test-framework-quickcheck2 - }: - mkDerivation { - pname = "unordered-containers"; - version = "0.2.5.1"; - src = "${ghcjsBoot}/boot/unordered-containers"; - doCheck = false; - libraryHaskellDepends = [ base deepseq hashable ]; - testHaskellDepends = [ - base ChasingBottoms containers hashable HUnit QuickCheck - test-framework test-framework-hunit test-framework-quickcheck2 - ]; - jailbreak = true; - homepage = "https://github.com/tibbe/unordered-containers"; - description = "Efficient hashing-based container types"; - license = stdenv.lib.licenses.bsd3; - }) {}; - vector = callPackage - ({ mkDerivation, base, deepseq, ghc-prim, primitive, QuickCheck - , random, stdenv, template-haskell, test-framework - , test-framework-quickcheck2, transformers - }: - mkDerivation { - pname = "vector"; - version = "0.11.0.0"; - src = "${ghcjsBoot}/boot/vector"; - doCheck = false; - libraryHaskellDepends = [ base deepseq ghc-prim primitive ]; - testHaskellDepends = [ - base QuickCheck random template-haskell test-framework - test-framework-quickcheck2 transformers - ]; - jailbreak = true; - homepage = "https://github.com/haskell/vector"; - description = "Efficient Arrays"; - license = stdenv.lib.licenses.bsd3; - }) {}; - ghcjs-base = callPackage - ({ mkDerivation, aeson, array, attoparsec, base, bytestring - , containers, deepseq, directory, dlist, ghc-prim, ghcjs-prim - , hashable, HUnit, integer-gmp, primitive, QuickCheck - , quickcheck-unicode, random, scientific, stdenv, test-framework - , test-framework-hunit, test-framework-quickcheck2, text, time - , transformers, unordered-containers, vector - }: - mkDerivation { - pname = "ghcjs-base"; - version = "0.2.0.0"; - src = "${ghcjsBoot}/ghcjs/ghcjs-base"; - doCheck = false; - libraryHaskellDepends = [ - aeson attoparsec base bytestring containers deepseq dlist ghc-prim - ghcjs-prim hashable integer-gmp primitive scientific text time - transformers unordered-containers vector - ]; - testHaskellDepends = [ - array base bytestring deepseq directory ghc-prim ghcjs-prim HUnit - primitive QuickCheck quickcheck-unicode random test-framework - test-framework-hunit test-framework-quickcheck2 text - ]; - jailbreak = true; - homepage = "http://github.com/ghcjs/ghcjs-base"; - description = "Base library for GHCJS"; - license = stdenv.lib.licenses.mit; - }) {}; - Cabal = callPackage - ({ mkDerivation, array, base, binary, bytestring, containers - , deepseq, directory, extensible-exceptions, filepath, HUnit - , old-time, pretty, process, QuickCheck, regex-posix, stdenv - , test-framework, test-framework-hunit, test-framework-quickcheck2 - , time, unix - }: - mkDerivation { - pname = "Cabal"; - version = "1.22.8.0"; - src = "${ghcjsBoot}/boot/cabal/Cabal"; - doCheck = false; - libraryHaskellDepends = [ - array base binary bytestring containers deepseq directory filepath - pretty process time unix - ]; - testHaskellDepends = [ - base bytestring containers directory extensible-exceptions filepath - HUnit old-time process QuickCheck regex-posix test-framework - test-framework-hunit test-framework-quickcheck2 unix - ]; - jailbreak = true; - homepage = "http://www.haskell.org/cabal/"; - description = "A framework for packaging Haskell software"; - license = stdenv.lib.licenses.bsd3; - }) {}; -} |