3
0
Fork 0
forked from mirrors/nixpkgs

Merge pull request #168195 from sternenseemann/ghcjs-fix-build

haskell.compiler.ghcjs: fix build with aeson 2.0
This commit is contained in:
sternenseemann 2022-04-12 12:03:10 +02:00 committed by GitHub
commit 51131f7203
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 46 additions and 5 deletions

View file

@ -1,8 +1,37 @@
{ haskellLib }:
{ haskellLib, fetchpatch, buildPackages }:
let inherit (haskellLib) addBuildTools appendConfigureFlag dontHaddock doJailbreak;
let inherit (haskellLib) addBuildTools appendConfigureFlag dontHaddock doJailbreak markUnbroken overrideCabal;
in self: super: {
ghcjs = doJailbreak (super.ghcjs.overrideScope (self: super: {
ghcjs = overrideCabal (drv: {
# Jailbreak and patch can be dropped after https://github.com/ghcjs/ghcjs/pull/833
jailbreak = true;
patches = drv.patches or [] ++ [
(fetchpatch {
name = "ghcjs-aeson-2.0.patch";
url = "https://github.com/ghcjs/ghcjs/commit/9ef1f92d740e8503d15d91699f57db147f0474cc.patch";
sha256 = "0cgxcy6b5870bv4kj54n3bzcqinh4gl4w4r78dg43h2mblhkzbnj";
})
];
}) (super.ghcjs.overrideScope (self: super: {
optparse-applicative = self.optparse-applicative_0_15_1_0;
webdriver = overrideCabal (drv: {
patches = drv.patches or [] ++ [
# Patch for aeson 2.0 which adds a lower bound on it, so we don't apply it globally
# Pending https://github.com/kallisti-dev/hs-webdriver/pull/183
(fetchpatch {
name = "webdriver-aeson-2.0.patch";
url = "https://github.com/georgefst/hs-webdriver/commit/90ded63218da17fc0bd9f9b208b0b3f60b135757.patch";
sha256 = "1xvkk51r2v020xlmci5n1fd1na8raa332lrj7r9f0ijsyfvnqlv0";
excludes = [ "webdriver.cabal" ];
})
];
# Fix line endings so patch applies
prePatch = drv.prePatch or "" + ''
find . -name '*.hs' | xargs "${buildPackages.dos2unix}/bin/dos2unix"
'';
jailbreak = true;
broken = false;
}) super.webdriver;
}));
}

View file

@ -2,6 +2,7 @@
, pkgsHostHost
, callPackage
, fetchgit
, fetchpatch
, ghcjsSrcJson ? null
, ghcjsSrc ? fetchgit (lib.importJSON ghcjsSrcJson)
, bootPkgs
@ -36,7 +37,7 @@ let
})
(callPackage ./common-overrides.nix {
inherit haskellLib;
inherit haskellLib fetchpatch buildPackages;
})
ghcjsDepOverrides
]);

View file

@ -129,7 +129,18 @@ let
jobs = recursiveUpdateMany [
(mapTestOn {
haskellPackages = packagePlatforms pkgs.haskellPackages;
haskell.compiler = packagePlatforms pkgs.haskell.compiler;
haskell.compiler = packagePlatforms pkgs.haskell.compiler // (lib.genAttrs [
"ghcjs"
"ghcjs810"
] (ghcjsName: {
# We can't build ghcjs itself, since it exceeds 3GB (Hydra's output limit) due
# to the size of its bundled libs. We can however save users a bit of compile
# time by building the bootstrap ghcjs on Hydra. For this reason, we overwrite
# the ghcjs attributes in haskell.compiler with a reference to the bootstrap
# ghcjs attribute in their bootstrap package set (exposed via passthru) which
# would otherwise be ignored by Hydra.
bootGhcjs = (packagePlatforms pkgs.haskell.compiler.${ghcjsName}.passthru).bootGhcjs;
}));
tests.haskell = packagePlatforms pkgs.tests.haskell;