Merge pull request #103038 from NixOS/haskell-updates

Update Haskell package set (plus other fixes)
This commit is contained in:
Peter Simons 2020-11-13 22:05:05 +01:00 committed by GitHub
commit afe87caf9a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
21 changed files with 1307 additions and 667 deletions

View File

@ -5,7 +5,7 @@
*/ */
let let
inherit (import ./fixed-points.nix {}) makeExtensible; inherit (import ./fixed-points.nix { inherit lib; }) makeExtensible;
lib = makeExtensible (self: let lib = makeExtensible (self: let
callLibs = file: import file { lib = self; }; callLibs = file: import file { lib = self; };
@ -69,7 +69,7 @@ let
importJSON importTOML warn info showWarnings nixpkgsVersion version mod compare importJSON importTOML warn info showWarnings nixpkgsVersion version mod compare
splitByAndCompare functionArgs setFunctionArgs isFunction toHexString toBaseDigits; splitByAndCompare functionArgs setFunctionArgs isFunction toHexString toBaseDigits;
inherit (self.fixedPoints) fix fix' converge extends composeExtensions inherit (self.fixedPoints) fix fix' converge extends composeExtensions
makeExtensible makeExtensibleWithCustomName; composeManyExtensions makeExtensible makeExtensibleWithCustomName;
inherit (self.attrsets) attrByPath hasAttrByPath setAttrByPath inherit (self.attrsets) attrByPath hasAttrByPath setAttrByPath
getAttrFromPath attrVals attrValues getAttrs catAttrs filterAttrs getAttrFromPath attrVals attrValues getAttrs catAttrs filterAttrs
filterAttrsRecursive foldAttrs collect nameValuePair mapAttrs filterAttrsRecursive foldAttrs collect nameValuePair mapAttrs

View File

@ -1,4 +1,4 @@
{ ... }: { lib, ... }:
rec { rec {
# Compute the fixed point of the given function `f`, which is usually an # Compute the fixed point of the given function `f`, which is usually an
# attribute set that expects its final, non-recursive representation as an # attribute set that expects its final, non-recursive representation as an
@ -77,6 +77,15 @@ rec {
super' = super // fApplied; super' = super // fApplied;
in fApplied // g self super'; in fApplied // g self super';
# Compose several extending functions of the type expected by 'extends' into
# one where changes made in preceding functions are made available to
# subsequent ones.
#
# composeManyExtensions : [packageSet -> packageSet -> packageSet] -> packageSet -> packageSet -> packageSet
# ^final ^prev ^overrides ^final ^prev ^overrides
composeManyExtensions =
lib.foldr (x: y: composeExtensions x y) (self: super: {});
# Create an overridable, recursive attribute set. For example: # Create an overridable, recursive attribute set. For example:
# #
# nix-repl> obj = makeExtensible (self: { }) # nix-repl> obj = makeExtensible (self: { })

View File

@ -87,6 +87,26 @@ runTests {
expected = true; expected = true;
}; };
testComposeManyExtensions0 = {
expr = let obj = makeExtensible (self: { foo = true; });
emptyComposition = composeManyExtensions [];
composed = obj.extend emptyComposition;
in composed.foo;
expected = true;
};
testComposeManyExtensions =
let f = self: super: { bar = false; baz = true; };
g = self: super: { bar = super.baz or false; };
h = self: super: { qux = super.bar or false; };
obj = makeExtensible (self: { foo = self.qux; });
in {
expr = let composition = composeManyExtensions [f g h];
composed = obj.extend composition;
in composed.foo;
expected = (obj.extend (composeExtensions f (composeExtensions g h))).foo;
};
testBitAnd = { testBitAnd = {
expr = (bitAnd 3 10); expr = (bitAnd 3 10);
expected = 2; expected = 2;

View File

@ -85,6 +85,11 @@ self: super: {
url = "https://github.com/hercules-ci/optparse-applicative/compare/0.15.1...hercules-ci:0.15.1-nixpkgs-compgen.diff"; url = "https://github.com/hercules-ci/optparse-applicative/compare/0.15.1...hercules-ci:0.15.1-nixpkgs-compgen.diff";
sha256 = "1bcp6b7gvc8pqbn1n1ybhizkkl5if7hk9ipgl746vk08v0d3xxql"; sha256 = "1bcp6b7gvc8pqbn1n1ybhizkkl5if7hk9ipgl746vk08v0d3xxql";
}); });
optparse-applicative_0_16_0_0 = appendPatch super.optparse-applicative_0_16_0_0 (pkgs.fetchpatch {
name = "optparse-applicative-0.15.1-hercules-ci-compgen.diff";
url = "https://github.com/hercules-ci/optparse-applicative/compare/0.15.1...hercules-ci:0.15.1-nixpkgs-compgen.diff";
sha256 = "1bcp6b7gvc8pqbn1n1ybhizkkl5if7hk9ipgl746vk08v0d3xxql";
});
# Fix test trying to access /home directory # Fix test trying to access /home directory
shell-conduit = overrideCabal super.shell-conduit (drv: { shell-conduit = overrideCabal super.shell-conduit (drv: {
@ -335,7 +340,7 @@ self: super: {
# Needs the latest version of vty and brick. # Needs the latest version of vty and brick.
matterhorn = super.matterhorn.overrideScope (self: super: { matterhorn = super.matterhorn.overrideScope (self: super: {
brick = self.brick_0_57; brick = self.brick_0_57;
vty = self.vty_5_31; vty = self.vty_5_32;
}); });
memcache = dontCheck super.memcache; memcache = dontCheck super.memcache;
@ -1224,14 +1229,6 @@ self: super: {
sha256 = "0xbfhzhzg94b4r5qy5dg1c40liswwpqarrc2chcwgfbfnrmwkfc2"; sha256 = "0xbfhzhzg94b4r5qy5dg1c40liswwpqarrc2chcwgfbfnrmwkfc2";
}); });
# this will probably need to get updated with every ghcide update,
# we need an override because ghcide is tracking haskell-lsp closely.
ghcide = dontCheck (super.ghcide.overrideScope (self: super: {
hie-bios = dontCheck super.hie-bios_0_7_1;
lsp-test = dontCheck self.lsp-test_0_11_0_7;
}));
implicit-hie-cradle = super.implicit-hie-cradle.override { hie-bios = dontCheck super.hie-bios_0_7_1; };
# hasnt bumped upper bounds # hasnt bumped upper bounds
# upstream: https://github.com/obsidiansystems/which/pull/6 # upstream: https://github.com/obsidiansystems/which/pull/6
which = doJailbreak super.which; which = doJailbreak super.which;
@ -1256,25 +1253,7 @@ self: super: {
patch = doJailbreak super.patch; patch = doJailbreak super.patch;
# Tests disabled and broken override needed because of missing lib chrome-test-utils: https://github.com/reflex-frp/reflex-dom/issues/392 # Tests disabled and broken override needed because of missing lib chrome-test-utils: https://github.com/reflex-frp/reflex-dom/issues/392
# Tests disabled because of very old dep: https://github.com/reflex-frp/reflex-dom/issues/393 reflex-dom-core = doDistribute (unmarkBroken (dontCheck super.reflex-dom-core));
reflex-dom-core = doDistribute (unmarkBroken (dontCheck (appendPatches super.reflex-dom-core [
# Upstream PR: https://github.com/reflex-frp/reflex-dom/pull/388
# Fix upper bounds
(pkgs.fetchpatch {
url = "https://github.com/reflex-frp/reflex-dom/commit/5ef04d8e478f410d2c63603b84af052c9273a533.patch";
sha256 ="0d0b819yh8mqw8ih5asdi9qcca2kmggfsi8gf22akfw1n7xvmavi";
stripLen = 2;
extraPrefix = "";
})
# Upstream PR: https://github.com/reflex-frp/reflex-dom/pull/394
# Bump dependent-map
(pkgs.fetchpatch {
url = "https://github.com/reflex-frp/reflex-dom/commit/695bd17d5dcdb1bf321ee8858670731637f651db.patch";
sha256 ="0llky3i37rakgsw9vqaqmwryv7s91w8ph8xjkh83nxjs14p5zfyk";
stripLen = 2;
extraPrefix = "";
})
])));
# add unreleased commit fixing version constraint as a patch # add unreleased commit fixing version constraint as a patch
# Can be removed if https://github.com/lpeterse/haskell-utc/issues/8 is resolved # Can be removed if https://github.com/lpeterse/haskell-utc/issues/8 is resolved
@ -1425,7 +1404,7 @@ self: super: {
skylighting-core = doDistribute super.skylighting-core_0_10_0_3; skylighting-core = doDistribute super.skylighting-core_0_10_0_3;
hslua = doDistribute self.hslua_1_1_2; hslua = doDistribute self.hslua_1_1_2;
jira-wiki-markup = doDistribute self.jira-wiki-markup_1_3_2; jira-wiki-markup = doDistribute self.jira-wiki-markup_1_3_2;
pandoc = doDistribute self.pandoc_2_11_1; pandoc = doDistribute self.pandoc_2_11_1_1;
# jailbreaking pandoc-citeproc because it has not bumped upper bound on pandoc # jailbreaking pandoc-citeproc because it has not bumped upper bound on pandoc
pandoc-citeproc = doJailbreak (doDistribute self.pandoc-citeproc_0_17_0_2); pandoc-citeproc = doJailbreak (doDistribute self.pandoc-citeproc_0_17_0_2);
pandoc-types = doDistribute self.pandoc-types_1_22; pandoc-types = doDistribute self.pandoc-types_1_22;
@ -1435,34 +1414,73 @@ self: super: {
domain-auth = dontCheck super.domain-auth; domain-auth = dontCheck super.domain-auth;
# stack-2.5.1 needs a more current version of pantry to compile # stack-2.5.1 needs a more current version of pantry to compile
pantry = self.pantry_0_5_1_3; pantry = self.pantry_0_5_1_4;
# Too tight version bounds, see https://github.com/haskell-hvr/microaeson/pull/4 # Too tight version bounds, see https://github.com/haskell-hvr/microaeson/pull/4
microaeson = doJailbreak super.microaeson; microaeson = doJailbreak super.microaeson;
autoapply = super.autoapply.override { th-desugar = self.th-desugar_1_11; }; autoapply = super.autoapply.override { th-desugar = self.th-desugar_1_11; };
# binary-instances needs the latest version.
time-compat = self.time-compat_1_9_4;
# - Deps are required during the build for testing and also during execution,
# so add them to build input and also wrap the resulting binary so they're in
# PATH.
update-nix-fetchgit = let deps = [ pkgs.git pkgs.nix pkgs.nix-prefetch-git ];
in generateOptparseApplicativeCompletion "update-nix-fetchgit" (overrideCabal
(addTestToolDepends (super.update-nix-fetchgit.overrideScope (self: super: {
optparse-generic = self.optparse-generic_1_4_4;
optparse-applicative = self.optparse-applicative_0_16_0_0;
})) deps) (drv: {
buildTools = drv.buildTools or [ ] ++ [ pkgs.makeWrapper ];
postInstall = drv.postInstall or "" + ''
wrapProgram "$out/bin/update-nix-fetchgit" --prefix 'PATH' ':' "${
pkgs.lib.makeBinPath deps
}"
'';
}));
optparse-generic_1_4_4 = super.optparse-generic_1_4_4.override {
optparse-applicative = self.optparse-applicative_0_16_0_0;
};
# Our quickcheck-instances is too old for the newer binary-instances, but
# quickcheck-instances is only used in the tests of binary-instances.
binary-instances = dontCheck super.binary-instances;
# INSERT NEW OVERRIDES ABOVE THIS LINE # INSERT NEW OVERRIDES ABOVE THIS LINE
} // (let } // (let
inherit (self) hls-ghcide hls-brittany; # fourmolu cant compile with an older aeson
hlsScopeOverride = self: super: { localOverride = name: value: doDistribute (value.overrideScope (self: super: {
# haskell-language-server uses its own fork of ghcide aeson = dontCheck super.aeson_1_5_2_0;
# Test disabled: it seems to freeze (is it just that it takes a long time ?) }));
ghcide = dontCheck hls-ghcide; in pkgs.lib.mapAttrs localOverride {
# we are faster than stack here # tons of overrides for bleeding edge versions for ghcide and hls
# overriding aeson on all of them to prevent double compilations
# this shouldnt break anything because nearly all their reverse deps are
# in this list or marked as broken anyways
haskell-language-server = dontCheck super.haskell-language-server;
fourmolu = dontCheck super.fourmolu;
stylish-haskell = super.stylish-haskell_0_12_2_0;
ghcide = dontCheck (appendPatch super.ghcide (pkgs.fetchpatch {
# 2020-11-13: Bumping bounds via an already upstream merged change
# https://github.com/haskell/ghcide/pull/905
url = https://github.com/haskell/ghcide/commit/9b8aaf9b06846571cc0b5d46680e686e4f9153a3.patch;
sha256 = "0j8980dmvwjcs72ahq2zc14hwkyd5ybgzyy1az3zq5flp383fai6";
includes = [ "ghcide.cabal" ];
}));
refinery = super.refinery_0_3_0_0;
data-tree-print = doJailbreak super.data-tree-print;
ghc-exactprint = dontCheck super.ghc-exactprint_0_6_3_3;
hie-bios = dontCheck super.hie-bios_0_7_1; hie-bios = dontCheck super.hie-bios_0_7_1;
lsp-test = dontCheck super.lsp-test_0_11_0_7; lsp-test = dontCheck super.lsp-test_0_11_0_7;
# fourmolu cant compile with an older aeson hls-plugin-api = super.hls-plugin-api;
aeson = dontCheck super.aeson_1_5_2_0; hls-hlint-plugin = super.hls-hlint-plugin;
# brittany has an aeson upper bound of 1.5 implicit-hie-cradle = super.implicit-hie-cradle;
brittany = hls-brittany; # the hls brittany is objectively better, because there hasnt been a
data-tree-print = doJailbreak super.data-tree-print; # brittany release in a while and this version works with 8.10.
ghc-exactprint = dontCheck super.ghc-exactprint_0_6_3_2; # And we need to build it anyways.
}; brittany = dontCheck super.hls-brittany;
in {
haskell-language-server = dontCheck (super.haskell-language-server.overrideScope hlsScopeOverride);
hls-ghcide = dontCheck (super.hls-ghcide.overrideScope hlsScopeOverride);
hls-brittany = dontCheck (super.hls-brittany.overrideScope hlsScopeOverride);
fourmolu = dontCheck (super.fourmolu.overrideScope hlsScopeOverride);
} }
) // import ./configuration-tensorflow.nix {inherit pkgs haskellLib;} self super ) // import ./configuration-tensorflow.nix {inherit pkgs haskellLib;} self super

View File

@ -111,9 +111,6 @@ self: super: {
sha256 = "0rgzrq0513nlc1vw7nw4km4bcwn4ivxcgi33jly4a7n3c1r32v1f"; sha256 = "0rgzrq0513nlc1vw7nw4km4bcwn4ivxcgi33jly4a7n3c1r32v1f";
}); });
# Only 0.8 is compatible with ghc 8.10 https://hackage.haskell.org/package/apply-refact/changelog
apply-refact = super.apply-refact_0_8_0_0;
# https://github.com/commercialhaskell/pantry/issues/21 # https://github.com/commercialhaskell/pantry/issues/21
pantry = appendPatch super.pantry (pkgs.fetchpatch { pantry = appendPatch super.pantry (pkgs.fetchpatch {
name = "add-cabal-3.2.x-support.patch"; name = "add-cabal-3.2.x-support.patch";

View File

@ -91,7 +91,4 @@ self: super: {
# ghc versions prior to 8.8.x needs additional dependency to compile successfully. # ghc versions prior to 8.8.x needs additional dependency to compile successfully.
ghc-lib-parser-ex = addBuildDepend super.ghc-lib-parser-ex self.ghc-lib-parser; ghc-lib-parser-ex = addBuildDepend super.ghc-lib-parser-ex self.ghc-lib-parser;
# Only 0.6 is compatible with ghc 8.6 https://hackage.haskell.org/package/apply-refact/changelog
apply-refact = super.apply-refact_0_6_0_0;
} }

View File

@ -69,7 +69,6 @@ self: super: {
integer-logarithms = doJailbreak super.integer-logarithms; integer-logarithms = doJailbreak super.integer-logarithms;
lucid = doJailbreak super.lucid; lucid = doJailbreak super.lucid;
parallel = doJailbreak super.parallel; parallel = doJailbreak super.parallel;
quickcheck-instances = doJailbreak super.quickcheck-instances;
setlocale = doJailbreak super.setlocale; setlocale = doJailbreak super.setlocale;
split = doJailbreak super.split; split = doJailbreak super.split;
system-fileio = doJailbreak super.system-fileio; system-fileio = doJailbreak super.system-fileio;
@ -105,9 +104,6 @@ self: super: {
# of issues with Cabal 3.x. # of issues with Cabal 3.x.
darcs = dontDistribute super.darcs; darcs = dontDistribute super.darcs;
# Only 0.7 is compatible with ghc 8.7 https://hackage.haskell.org/package/apply-refact/changelog
apply-refact = super.apply-refact_0_7_0_0;
# The package needs the latest Cabal version. # The package needs the latest Cabal version.
cabal-install-parsers = super.cabal-install-parsers.overrideScope (self: super: { Cabal = self.Cabal_3_2_1_0; }); cabal-install-parsers = super.cabal-install-parsers.overrideScope (self: super: { Cabal = self.Cabal_3_2_1_0; });

View File

@ -2546,10 +2546,6 @@ extra-packages:
- aeson-pretty < 0.8 # required by elm compiler - aeson-pretty < 0.8 # required by elm compiler
- Agda == 2.6.1 # allows the agdaPackage set to be fixed to this version so that it won't break when another agda version is released. - Agda == 2.6.1 # allows the agdaPackage set to be fixed to this version so that it won't break when another agda version is released.
- ansi-terminal == 0.10.3 # required by cabal-plan, and policeman in ghc-8.8.x - ansi-terminal == 0.10.3 # required by cabal-plan, and policeman in ghc-8.8.x
- apply-refact < 0.4 # newer versions don't work with GHC 8.0.x
- apply-refact == 0.6.0.0 # works with GHC 8.6.x https://hackage.haskell.org/package/apply-refact/changelog
- apply-refact == 0.7.0.0 # works with GHC 8.8.x https://hackage.haskell.org/package/apply-refact/changelog
- apply-refact == 0.8.0.0 # works with GHC 8.10.x https://hackage.haskell.org/package/apply-refact/changelog
- binary > 0.7 && < 0.8 # keep a 7.x major release around for older compilers - binary > 0.7 && < 0.8 # keep a 7.x major release around for older compilers
- binary > 0.8 && < 0.9 # keep a 8.x major release around for older compilers - binary > 0.8 && < 0.9 # keep a 8.x major release around for older compilers
- Cabal == 2.2.* # required for jailbreak-cabal etc. - Cabal == 2.2.* # required for jailbreak-cabal etc.
@ -2590,8 +2586,6 @@ extra-packages:
- mtl-prelude < 2 # required for to build postgrest on mtl 2.1.x platforms - mtl-prelude < 2 # required for to build postgrest on mtl 2.1.x platforms
- network == 2.6.3.1 # newer versions don't compile with GHC 7.4.x and below - network == 2.6.3.1 # newer versions don't compile with GHC 7.4.x and below
- network == 3.0.* # required by network-bsd, HTTP, and many others (2019-04-30) - network == 3.0.* # required by network-bsd, HTTP, and many others (2019-04-30)
- ormolu == 0.0.5.0 # required by haskell-language-server
- pandoc-types == 1.21 # required by for pandoc_2_10_1
- pantry == 0.2.0.0 # required by stack-2.1.3.1 - pantry == 0.2.0.0 # required by stack-2.1.3.1
- parallel == 3.2.0.3 # newer versions don't work with GHC 6.12.3 - parallel == 3.2.0.3 # newer versions don't work with GHC 6.12.3
- patience ^>= 0.1 # required by chell-0.4.x - patience ^>= 0.1 # required by chell-0.4.x
@ -3324,6 +3318,7 @@ broken-packages:
- bdd - bdd
- bdo - bdo
- beam - beam
- beam-automigrate
- beam-core - beam-core
- beam-migrate - beam-migrate
- beam-mysql - beam-mysql
@ -3932,7 +3927,6 @@ broken-packages:
- cmt - cmt
- cmv - cmv
- cnc-spec-compiler - cnc-spec-compiler
- co-log
- co-log-polysemy-formatting - co-log-polysemy-formatting
- co-log-sys - co-log-sys
- Coadjute - Coadjute
@ -3990,7 +3984,6 @@ broken-packages:
- commsec - commsec
- commsec-keyexchange - commsec-keyexchange
- ComonadSheet - ComonadSheet
- compact
- compact-map - compact-map
- compact-mutable - compact-mutable
- compact-mutable-vector - compact-mutable-vector
@ -7287,6 +7280,7 @@ broken-packages:
- language-lua-qq - language-lua-qq
- language-lua2 - language-lua2
- language-mixal - language-mixal
- language-Modula2
- language-ninja - language-ninja
- language-oberon - language-oberon
- language-objc - language-objc
@ -7731,6 +7725,7 @@ broken-packages:
- mcl - mcl
- mcm - mcm
- mcmaster-gloss-examples - mcmaster-gloss-examples
- mcmc
- mcmc-samplers - mcmc-samplers
- mcmc-synthesis - mcmc-synthesis
- mcpi - mcpi
@ -8563,6 +8558,7 @@ broken-packages:
- pbc4hs - pbc4hs
- PBKDF2 - PBKDF2
- pcap-enumerator - pcap-enumerator
- pcapng
- pcd-loader - pcd-loader
- pcf - pcf
- pcf-font - pcf-font
@ -8774,14 +8770,14 @@ broken-packages:
- polysemy-http - polysemy-http
- polysemy-kvstore-jsonfile - polysemy-kvstore-jsonfile
- polysemy-methodology - polysemy-methodology
- polysemy-optics - polysemy-methodology-composite
- polysemy-path - polysemy-path
- polysemy-RandomFu - polysemy-RandomFu
- polysemy-resume - polysemy-resume
- polysemy-test - polysemy-test
- polysemy-time - polysemy-time
- polysemy-vinyl
- polysemy-webserver - polysemy-webserver
- polysemy-zoo
- polyseq - polyseq
- polytypeable - polytypeable
- polytypeable-utils - polytypeable-utils
@ -10777,7 +10773,6 @@ broken-packages:
- typelevel-tensor - typelevel-tensor
- TypeNat - TypeNat
- typeparams - typeparams
- typerep-map
- types-compat - types-compat
- typesafe-precure - typesafe-precure
- typescript-docs - typescript-docs
@ -11517,4 +11512,4 @@ broken-packages:
- zuramaru - zuramaru
- Zwaluw - Zwaluw
- zxcvbn-dvorak - zxcvbn-dvorak
- zxcvbn-hs - zxcvbn-h

View File

@ -654,7 +654,7 @@ self: super: builtins.intersectAttrs super {
# Tests require internet # Tests require internet
http-download = dontCheck super.http-download; http-download = dontCheck super.http-download;
pantry = dontCheck super.pantry; pantry = dontCheck super.pantry;
pantry_0_5_1_3 = dontCheck super.pantry_0_5_1_3; pantry_0_5_1_4 = dontCheck super.pantry_0_5_1_4;
# gtk2hs-buildtools is listed in setupHaskellDepends, but we # gtk2hs-buildtools is listed in setupHaskellDepends, but we
# need it during the build itself, too. # need it during the build itself, too.

File diff suppressed because it is too large Load Diff

View File

@ -156,6 +156,9 @@ rec {
addBuildDepend = drv: x: addBuildDepends drv [x]; addBuildDepend = drv: x: addBuildDepends drv [x];
addBuildDepends = drv: xs: overrideCabal drv (drv: { buildDepends = (drv.buildDepends or []) ++ xs; }); addBuildDepends = drv: xs: overrideCabal drv (drv: { buildDepends = (drv.buildDepends or []) ++ xs; });
addTestToolDepend = drv: x: addTestToolDepends drv [x];
addTestToolDepends = drv: xs: overrideCabal drv (drv: { testToolDepends = (drv.testToolDepends or []) ++ xs; });
addPkgconfigDepend = drv: x: addPkgconfigDepends drv [x]; addPkgconfigDepend = drv: x: addPkgconfigDepends drv [x];
addPkgconfigDepends = drv: xs: overrideCabal drv (drv: { pkgconfigDepends = (drv.pkgconfigDepends or []) ++ xs; }); addPkgconfigDepends = drv: xs: overrideCabal drv (drv: { pkgconfigDepends = (drv.pkgconfigDepends or []) ++ xs; });
@ -232,6 +235,31 @@ rec {
fixupPhase = ":"; fixupPhase = ":";
}); });
/* Create a documentation tarball suitable for uploading to Hackage instead
of building the package.
*/
documentationTarball = pkg:
pkgs.lib.overrideDerivation pkg (drv: {
name = "${drv.name}-docs";
# Like sdistTarball, disable the "doc" output here.
outputs = [ "out" ];
buildPhase = ''
runHook preHaddock
./Setup haddock --for-hackage
runHook postHaddock
'';
haddockPhase = ":";
checkPhase = ":";
installPhase = ''
runHook preInstall
mkdir -p "$out"
tar --format=ustar \
-czf "$out/${drv.name}-docs.tar.gz" \
-C dist/doc/html "${drv.name}-docs"
runHook postInstall
'';
});
/* Use the gold linker. It is a linker for ELF that is designed /* Use the gold linker. It is a linker for ELF that is designed
"to run as fast as possible on modern systems" "to run as fast as possible on modern systems"
*/ */

View File

@ -221,30 +221,56 @@ in package-set { inherit pkgs stdenv callPackage; } self // {
# , overrides : Defaulted (HaskellPackageOverrideSet) # , overrides : Defaulted (HaskellPackageOverrideSet)
# , modifier : Defaulted # , modifier : Defaulted
# , returnShellEnv : Defaulted # , returnShellEnv : Defaulted
# , withHoogle : Defaulted
# , cabal2nixOptions : Defaulted
# } -> NixShellAwareDerivation # } -> NixShellAwareDerivation
#
# Given a path to a haskell package directory, an optional package name # Given a path to a haskell package directory, an optional package name
# which defaults to the base name of the path, an optional set of source # which defaults to the base name of the path, an optional set of source
# overrides as appropriate for the 'packageSourceOverrides' function, an # overrides as appropriate for the 'packageSourceOverrides' function, an
# optional set of arbitrary overrides, and an optional haskell package # optional set of arbitrary overrides, and an optional haskell package
# modifier, return a derivation appropriate for nix-build or nix-shell to # modifier, return a derivation appropriate for nix-build or nix-shell to
# build that package. # build that package.
#
# If 'returnShellEnv' is true this returns a derivation which will give you
# an environment suitable for developing the listed packages with an
# incremental tool like cabal-install.
#
# If 'withHoogle' is true (the default if a shell environment is requested)
# then 'ghcWithHoogle' is used to generate the derivation (instead of
# 'ghcWithPackages'), see the documentation there for more information.
#
# 'cabal2nixOptions' can contain extra command line arguments to pass to
# 'cabal2nix' when generating the package derivation, for example setting
# a cabal flag with '--flag=myflag'.
developPackage = developPackage =
{ root { root
, name ? builtins.baseNameOf root , name ? builtins.baseNameOf root
, source-overrides ? {} , source-overrides ? {}
, overrides ? self: super: {} , overrides ? self: super: {}
, modifier ? drv: drv , modifier ? drv: drv
, returnShellEnv ? pkgs.lib.inNixShell }: , returnShellEnv ? pkgs.lib.inNixShell
, withHoogle ? returnShellEnv
, cabal2nixOptions ? "" }:
let drv = let drv =
(extensible-self.extend (extensible-self.extend
(pkgs.lib.composeExtensions (pkgs.lib.composeExtensions
(self.packageSourceOverrides source-overrides) (self.packageSourceOverrides source-overrides)
overrides)) overrides))
.callCabal2nix name root {}; .callCabal2nixWithOptions name root cabal2nixOptions {};
in if returnShellEnv then (modifier drv).env else modifier drv; in if returnShellEnv
then (modifier drv).envFunc {inherit withHoogle;}
else modifier drv;
ghcWithPackages = selectFrom: withPackages (selectFrom self); ghcWithPackages = selectFrom: withPackages (selectFrom self);
# Put 'hoogle' into the derivation's PATH with a database containing all
# the package's dependencies; run 'hoogle server --local' in a shell to
# host a search engine for the dependencies.
#
# To reload the Hoogle server automatically on .cabal file changes try
# this:
# echo *.cabal | entr -r -- nix-shell --run 'hoogle server --local'
ghcWithHoogle = selectFrom: ghcWithHoogle = selectFrom:
let let
packages = selectFrom self; packages = selectFrom self;

View File

@ -22,8 +22,9 @@ self: super: {
# HLS and its fork of ghcide that it uses # HLS and its fork of ghcide that it uses
# both are auto-generated by pkgs/development/tools/haskell/haskell-language-server/update.sh # both are auto-generated by pkgs/development/tools/haskell/haskell-language-server/update.sh
haskell-language-server = self.callPackage ../tools/haskell/haskell-language-server { }; haskell-language-server = self.callPackage ../tools/haskell/haskell-language-server { };
hls-ghcide = self.callPackage ../tools/haskell/haskell-language-server/hls-ghcide.nix { };
hls-brittany = self.callPackage ../tools/haskell/haskell-language-server/hls-brittany.nix { }; hls-brittany = self.callPackage ../tools/haskell/haskell-language-server/hls-brittany.nix { };
hls-hlint-plugin = self.callPackage ../tools/haskell/haskell-language-server/hls-hlint-plugin.nix { };
hls-tactics-plugin = self.callPackage ../tools/haskell/haskell-language-server/hls-tactics-plugin.nix { };
nix-output-monitor = self.callPackage ../../tools/nix/nix-output-monitor { }; nix-output-monitor = self.callPackage ../../tools/nix/nix-output-monitor { };

View File

@ -1,22 +1,22 @@
{ mkDerivation, aeson, base, binary, blaze-markup, brittany { mkDerivation, aeson, base, binary, blaze-markup, brittany
, bytestring, containers, data-default, deepseq, directory, extra , bytestring, containers, data-default, deepseq, directory, extra
, fetchgit, filepath, fingertree, floskell, fourmolu, ghc , fetchgit, filepath, floskell, fourmolu, ghc, ghc-boot-th
, ghc-boot-th, ghc-exactprint, ghc-paths, ghc-source-gen, ghcide , ghc-paths, ghcide, gitrev, hashable, haskell-lsp, hie-bios
, gitrev, hashable, haskell-lsp, hie-bios, hls-plugin-api, hslogger , hls-hlint-plugin, hls-plugin-api, hls-tactics-plugin, hslogger
, hspec, hspec-core, lens, lsp-test, mtl, optparse-applicative , hspec, hspec-core, lens, lsp-test, mtl, optparse-applicative
, optparse-simple, ormolu, process, refinery, regex-tdfa, retrie , optparse-simple, ormolu, process, regex-tdfa, retrie
, safe-exceptions, shake, stdenv, stm, stylish-haskell, syb, tasty , safe-exceptions, shake, stdenv, stm, stylish-haskell, tasty
, tasty-ant-xml, tasty-expected-failure, tasty-golden, tasty-hunit , tasty-ant-xml, tasty-expected-failure, tasty-golden, tasty-hunit
, tasty-rerun, temporary, text, time, transformers , tasty-rerun, temporary, text, time, transformers
, unordered-containers, yaml , unordered-containers, yaml
}: }:
mkDerivation { mkDerivation {
pname = "haskell-language-server"; pname = "haskell-language-server";
version = "0.5.0.0"; version = "0.6.0.0";
src = fetchgit { src = fetchgit {
url = "https://github.com/haskell/haskell-language-server.git"; url = "https://github.com/haskell/haskell-language-server.git";
sha256 = "1qi762fa72487i8fspxmr8xizm9n2s1shxsvnvsl67vj9if573r9"; sha256 = "027fq6752024wzzq9izsilm5lkq9gmpxf82rixbimbijw0yk4pwj";
rev = "3ca2a6cd267f373aae19f59e1cf9e04b6524eff3"; rev = "372a12e797069dc3ac4fa33dcaabe3b992999d7c";
fetchSubmodules = true; fetchSubmodules = true;
}; };
isLibrary = true; isLibrary = true;
@ -29,12 +29,12 @@ mkDerivation {
]; ];
executableHaskellDepends = [ executableHaskellDepends = [
aeson base binary brittany bytestring containers deepseq directory aeson base binary brittany bytestring containers deepseq directory
extra filepath fingertree floskell fourmolu ghc ghc-boot-th extra filepath floskell fourmolu ghc ghc-boot-th ghc-paths ghcide
ghc-exactprint ghc-paths ghc-source-gen ghcide gitrev hashable gitrev hashable haskell-lsp hie-bios hls-hlint-plugin
haskell-lsp hie-bios hls-plugin-api hslogger lens mtl hls-plugin-api hls-tactics-plugin hslogger lens mtl
optparse-applicative optparse-simple ormolu process refinery optparse-applicative optparse-simple ormolu process regex-tdfa
regex-tdfa retrie safe-exceptions shake stylish-haskell syb retrie safe-exceptions shake stylish-haskell temporary text time
temporary text time transformers unordered-containers transformers unordered-containers
]; ];
testHaskellDepends = [ testHaskellDepends = [
aeson base blaze-markup bytestring containers data-default aeson base blaze-markup bytestring containers data-default

View File

@ -1,60 +0,0 @@
{ mkDerivation, aeson, array, async, base, base16-bytestring
, binary, bytestring, Chart, Chart-diagrams, containers
, cryptohash-sha1, data-default, deepseq, diagrams, diagrams-svg
, directory, extra, fetchgit, filepath, fingertree, fuzzy, ghc
, ghc-boot, ghc-boot-th, ghc-check, ghc-paths
, ghc-typelits-knownnat, gitrev, Glob, haddock-library, hashable
, haskell-lsp, haskell-lsp-types, hie-bios, hslogger
, implicit-hie-cradle, lens, lsp-test, mtl, network-uri
, optparse-applicative, prettyprinter, prettyprinter-ansi-terminal
, process, QuickCheck, quickcheck-instances
, record-dot-preprocessor, record-hasfield, regex-tdfa
, rope-utf16-splay, safe, safe-exceptions, shake, sorted-list
, stdenv, stm, syb, tasty, tasty-expected-failure, tasty-hunit
, tasty-quickcheck, tasty-rerun, text, time, transformers, unix
, unordered-containers, utf8-string, yaml
}:
mkDerivation {
pname = "ghcide";
version = "0.4.0";
src = fetchgit {
url = "https://github.com/haskell/ghcide";
sha256 = "0zv14mvfhmwwkhyzkr38qpvyffa8ywzp41lr1k55pbrc5b10fjr6";
rev = "0bfce3114c28bd00f7bf5729c32ec0f23a8d8854";
fetchSubmodules = true;
};
isLibrary = true;
isExecutable = true;
libraryHaskellDepends = [
aeson array async base base16-bytestring binary bytestring
containers cryptohash-sha1 data-default deepseq directory extra
filepath fingertree fuzzy ghc ghc-boot ghc-boot-th ghc-check
ghc-paths Glob haddock-library hashable haskell-lsp
haskell-lsp-types hie-bios hslogger implicit-hie-cradle mtl
network-uri prettyprinter prettyprinter-ansi-terminal regex-tdfa
rope-utf16-splay safe safe-exceptions shake sorted-list stm syb
text time transformers unix unordered-containers utf8-string
];
executableHaskellDepends = [
aeson base bytestring containers data-default directory extra
filepath gitrev hashable haskell-lsp haskell-lsp-types hie-bios
lens lsp-test optparse-applicative process safe-exceptions text
unordered-containers
];
testHaskellDepends = [
aeson base binary bytestring containers directory extra filepath
ghc ghc-typelits-knownnat haddock-library haskell-lsp
haskell-lsp-types lens lsp-test network-uri optparse-applicative
process QuickCheck quickcheck-instances record-dot-preprocessor
record-hasfield rope-utf16-splay safe safe-exceptions shake tasty
tasty-expected-failure tasty-hunit tasty-quickcheck tasty-rerun
text
];
benchmarkHaskellDepends = [
aeson base Chart Chart-diagrams diagrams diagrams-svg directory
extra filepath shake text yaml
];
homepage = "https://github.com/haskell/ghcide#readme";
description = "The core of an IDE";
license = stdenv.lib.licenses.asl20;
}

View File

@ -0,0 +1,26 @@
{ mkDerivation, aeson, apply-refact, base, binary, bytestring
, containers, data-default, deepseq, Diff, directory, extra
, fetchgit, filepath, ghc, ghc-lib, ghc-lib-parser-ex, ghcide
, hashable, haskell-lsp, hlint, hls-plugin-api, hslogger, lens
, regex-tdfa, shake, stdenv, temporary, text, transformers
, unordered-containers
}:
mkDerivation {
pname = "hls-hlint-plugin";
version = "0.1.0.0";
src = fetchgit {
url = "https://github.com/haskell/haskell-language-server.git";
sha256 = "027fq6752024wzzq9izsilm5lkq9gmpxf82rixbimbijw0yk4pwj";
rev = "372a12e797069dc3ac4fa33dcaabe3b992999d7c";
fetchSubmodules = true;
};
postUnpack = "sourceRoot+=/plugins/hls-hlint-plugin; echo source root reset to $sourceRoot";
libraryHaskellDepends = [
aeson apply-refact base binary bytestring containers data-default
deepseq Diff directory extra filepath ghc ghc-lib ghc-lib-parser-ex
ghcide hashable haskell-lsp hlint hls-plugin-api hslogger lens
regex-tdfa shake temporary text transformers unordered-containers
];
description = "Hlint integration plugin with Haskell Language Server";
license = stdenv.lib.licenses.asl20;
}

View File

@ -0,0 +1,32 @@
{ mkDerivation, aeson, base, checkers, containers, deepseq
, directory, extra, fetchgit, filepath, fingertree, generic-lens
, ghc, ghc-boot-th, ghc-exactprint, ghc-source-gen, ghcide
, haskell-lsp, hie-bios, hls-plugin-api, hspec, lens, mtl
, QuickCheck, refinery, retrie, shake, stdenv, syb, text
, transformers
}:
mkDerivation {
pname = "hls-tactics-plugin";
version = "0.5.1.0";
src = fetchgit {
url = "https://github.com/haskell/haskell-language-server.git";
sha256 = "027fq6752024wzzq9izsilm5lkq9gmpxf82rixbimbijw0yk4pwj";
rev = "372a12e797069dc3ac4fa33dcaabe3b992999d7c";
fetchSubmodules = true;
};
postUnpack = "sourceRoot+=/plugins/tactics; echo source root reset to $sourceRoot";
libraryHaskellDepends = [
aeson base containers deepseq directory extra filepath fingertree
generic-lens ghc ghc-boot-th ghc-exactprint ghc-source-gen ghcide
haskell-lsp hls-plugin-api lens mtl refinery retrie shake syb text
transformers
];
testHaskellDepends = [
base checkers containers ghc hie-bios hls-plugin-api hspec mtl
QuickCheck
];
homepage = "https://github.com/isovector/hls-tactics-plugin#readme";
description = "LSP server for GHC";
license = "unknown";
hydraPlatforms = stdenv.lib.platforms.none;
}

View File

@ -15,24 +15,6 @@ set -eo pipefail
# This is the directory of this update.sh script. # This is the directory of this update.sh script.
script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
# ===========================
# ghcide fork on https://github.com/wz1000/ghcide
# ===========================
# ghcide derivation created with cabal2nix.
ghcide_derivation_file="${script_dir}/hls-ghcide.nix"
# This is the current revision of hls in Nixpkgs.
ghcide_old_version="$(sed -En 's/.*\bversion = "(.*?)".*/\1/p' "$ghcide_derivation_file")"
# This is the revision of ghcide used by hls on GitHub.
ghcide_new_version=$(curl --silent "https://api.github.com/repos/haskell/haskell-language-server/contents/ghcide" | jq '.sha' --raw-output)
echo "Updating haskell-language-server's ghcide from old version $ghcide_old_version to new version $ghcide_new_version."
echo "Running cabal2nix and outputting to ${ghcide_derivation_file}..."
cabal2nix --revision "$ghcide_new_version" "https://github.com/haskell/ghcide" > "$ghcide_derivation_file"
# =========================== # ===========================
# HLS maintainer's Brittany fork # HLS maintainer's Brittany fork
# =========================== # ===========================
@ -67,5 +49,7 @@ echo "Updating haskell-language-server from old version $hls_old_version to new
echo "Running cabal2nix and outputting to ${hls_derivation_file}..." echo "Running cabal2nix and outputting to ${hls_derivation_file}..."
cabal2nix --revision "$hls_new_version" "https://github.com/haskell/haskell-language-server.git" > "$hls_derivation_file" cabal2nix --revision "$hls_new_version" "https://github.com/haskell/haskell-language-server.git" > "$hls_derivation_file"
cabal2nix --revision "$hls_new_version" --subpath plugins/tactics "https://github.com/haskell/haskell-language-server.git" > "${script_dir}/hls-tactics-plugin.nix"
cabal2nix --revision "$hls_new_version" --subpath plugins/hls-hlint-plugin "https://github.com/haskell/haskell-language-server.git" > "${script_dir}/hls-hlint-plugin.nix"
echo "Finished." echo "Finished."

View File

@ -23,6 +23,7 @@ with pkgs;
stdenv-inputs = callPackage ./stdenv-inputs { }; stdenv-inputs = callPackage ./stdenv-inputs { };
haskell-shellFor = callPackage ./haskell-shellFor { }; haskell-shellFor = callPackage ./haskell-shellFor { };
haskell-documentationTarball = callPackage ./haskell-documentationTarball { };
cc-multilib-gcc = callPackage ./cc-wrapper/multilib.nix { stdenv = gccMultiStdenv; }; cc-multilib-gcc = callPackage ./cc-wrapper/multilib.nix { stdenv = gccMultiStdenv; };
cc-multilib-clang = callPackage ./cc-wrapper/multilib.nix { stdenv = clangMultiStdenv; }; cc-multilib-clang = callPackage ./cc-wrapper/multilib.nix { stdenv = clangMultiStdenv; };

View File

@ -0,0 +1,17 @@
{ pkgs, haskellPackages }:
let
drv = haskellPackages.vector;
docs = pkgs.haskell.lib.documentationTarball drv;
in pkgs.runCommand "test haskell.lib.documentationTarball" { } ''
tar xvzf "${docs}/${drv.name}-docs.tar.gz"
# Check for Haddock html
find "${drv.name}-docs" | grep -q "Data-Vector.html"
# Check for source html
find "${drv.name}-docs" | grep -q "src/Data.Vector.html"
touch "$out"
''

View File

@ -6209,6 +6209,8 @@ in
update-dotdee = with python3Packages; toPythonApplication update-dotdee; update-dotdee = with python3Packages; toPythonApplication update-dotdee;
update-nix-fetchgit = haskell.lib.justStaticExecutables haskellPackages.update-nix-fetchgit;
update-resolv-conf = callPackage ../tools/networking/openvpn/update-resolv-conf.nix { }; update-resolv-conf = callPackage ../tools/networking/openvpn/update-resolv-conf.nix { };
update-systemd-resolved = callPackage ../tools/networking/openvpn/update-systemd-resolved.nix { }; update-systemd-resolved = callPackage ../tools/networking/openvpn/update-systemd-resolved.nix { };