ghcjs: replace integer-simple with integer-gmp
GHCJS uses integer-gmp, but cabal2nix generates a dependency list that includes integer-simple instead. This tweaks the stage2 generator to replace any instance of integer-simple with integer-gmp. Things currently still work without this change (assuming integer-simple is defined as null), as ghcjs includes integer-gmp in its stage1 packages - so it's always available. However, this change makes things a bit more explicit, rather than leaving things to chance. If at any point the stage1 packages are also split up into separate derivations, the integer-gmp package will need to be passed along to the packages that depend on it. This change should prevent some confusion going forward.
This commit is contained in:
parent
e6e9970891
commit
516057ffa9
@ -49,7 +49,11 @@ self: super:
|
|||||||
time = null;
|
time = null;
|
||||||
transformers = null;
|
transformers = null;
|
||||||
unix = null;
|
unix = null;
|
||||||
integer-simple = null;
|
|
||||||
|
# Don't set integer-simple to null!
|
||||||
|
# GHCJS uses integer-gmp, so any package expression that depends on
|
||||||
|
# integer-simple is wrong.
|
||||||
|
#integer-simple = null;
|
||||||
|
|
||||||
# These packages are core libraries in GHC 7.10.x, but not here.
|
# These packages are core libraries in GHC 7.10.x, but not here.
|
||||||
bin-package-db = null;
|
bin-package-db = null;
|
||||||
|
@ -28,16 +28,26 @@ stage2_packages = [
|
|||||||
nixpkgs = File.expand_path("../../../../..", __FILE__)
|
nixpkgs = File.expand_path("../../../../..", __FILE__)
|
||||||
boot = `nix-build #{nixpkgs} -A haskell.packages.ghcjs.ghc.ghcjsBoot`.chomp
|
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|
|
stage2_packages.each do |package|
|
||||||
name = Pathname.new(package).basename
|
name = Pathname.new(package).basename
|
||||||
nix = `cabal2nix file://#{boot}/#{package} --jailbreak`
|
nix = `cabal2nix file://#{boot}/#{package} --jailbreak`
|
||||||
nix.sub!(/src =.*?$/, "src = \"${ghcjsBoot}/#{package}\";")
|
nix.sub!(/src =.*?$/, "src = \"${ghcjsBoot}/#{package}\";")
|
||||||
nix.sub!("libraryHaskellDepends", "doCheck = false;\n libraryHaskellDepends")
|
nix.sub!("libraryHaskellDepends", "doCheck = false;\n libraryHaskellDepends")
|
||||||
nix = nix.split("\n").join("\n ")
|
# 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 = "".dup
|
out << " #{name} = callPackage\n"
|
||||||
out << "#{name} = callPackage\n"
|
out << " (#{nix}) {};\n"
|
||||||
out << " (#{nix}) {};"
|
|
||||||
|
|
||||||
puts out
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
out << "}"
|
||||||
|
|
||||||
|
puts out
|
||||||
|
@ -225,7 +225,7 @@
|
|||||||
}) {};
|
}) {};
|
||||||
text = callPackage
|
text = callPackage
|
||||||
({ mkDerivation, array, base, binary, bytestring, deepseq, directory
|
({ mkDerivation, array, base, binary, bytestring, deepseq, directory
|
||||||
, ghc-prim, HUnit, integer-simple, QuickCheck, quickcheck-unicode
|
, ghc-prim, HUnit, integer-gmp, QuickCheck, quickcheck-unicode
|
||||||
, random, stdenv, test-framework, test-framework-hunit
|
, random, stdenv, test-framework, test-framework-hunit
|
||||||
, test-framework-quickcheck2
|
, test-framework-quickcheck2
|
||||||
}:
|
}:
|
||||||
@ -235,11 +235,11 @@
|
|||||||
src = "${ghcjsBoot}/boot/text";
|
src = "${ghcjsBoot}/boot/text";
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
libraryHaskellDepends = [
|
libraryHaskellDepends = [
|
||||||
array base binary bytestring deepseq ghc-prim integer-simple
|
array base binary bytestring deepseq ghc-prim integer-gmp
|
||||||
];
|
];
|
||||||
testHaskellDepends = [
|
testHaskellDepends = [
|
||||||
array base binary bytestring deepseq directory ghc-prim HUnit
|
array base binary bytestring deepseq directory ghc-prim HUnit
|
||||||
integer-simple QuickCheck quickcheck-unicode random test-framework
|
integer-gmp QuickCheck quickcheck-unicode random test-framework
|
||||||
test-framework-hunit test-framework-quickcheck2
|
test-framework-hunit test-framework-quickcheck2
|
||||||
];
|
];
|
||||||
jailbreak = true;
|
jailbreak = true;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user