1
0
Fork 1
mirror of https://github.com/NixOS/nixpkgs.git synced 2024-09-11 15:08:33 +01:00

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.
This commit is contained in:
Ryan Trinkle 2016-07-26 16:58:56 -04:00
parent 3badad811c
commit c564997ba0
4 changed files with 9 additions and 7 deletions

View file

@ -136,6 +136,9 @@ in mkDerivation (rec {
isGhcjs = true;
inherit nodejs ghcjsBoot;
inherit (ghcjsNodePkgs) "socket.io";
mkStage2 = import ./stage2.nix {
inherit ghcjsBoot;
};
};
homepage = "https://github.com/ghcjs/ghcjs";

View file

@ -26,10 +26,10 @@ stage2_packages = [
]
nixpkgs = File.expand_path("../../../../..", __FILE__)
boot = `nix-build #{nixpkgs} -A haskell.packages.ghcjs.ghc.ghcjsBoot`.chomp
boot = ARGV[0] || `nix-build #{nixpkgs} -A haskell.packages.ghcjs.ghc.ghcjsBoot`.chomp
out = "".dup
out << "{ ghcjsBoot, callPackage }:\n"
out << "{ ghcjsBoot }: { callPackage }:\n"
out << "\n"
out << "{\n"
@ -37,6 +37,7 @@ stage2_packages.each do |package|
name = Pathname.new(package).basename
nix = `cabal2nix file://#{boot}/#{package} --jailbreak`
nix.sub!(/src =.*?$/, "src = \"${ghcjsBoot}/#{package}\";")
nix.sub!(" doCheck = false;\n", "")
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

View file

@ -1,4 +1,4 @@
{ ghcjsBoot, callPackage }:
{ ghcjsBoot }: { callPackage }:
{
async = callPackage

View file

@ -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 = ''