Merge pull request #78906 from NixOS/haskell-updates

Update Haskell package set to LTS 14.22 (plus other fixes)
This commit is contained in:
Peter Simons 2020-01-31 21:40:50 +01:00 committed by GitHub
commit bf4169178e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 1841 additions and 1005 deletions

View File

@ -86,12 +86,12 @@ let
in in
stdenv.mkDerivation (rec { stdenv.mkDerivation (rec {
version = "8.10.0.20200108"; version = "8.10.0.20200123";
name = "${targetPrefix}ghc-${version}"; name = "${targetPrefix}ghc-${version}";
src = fetchurl { src = fetchurl {
url = "https://downloads.haskell.org/ghc/8.10.1-rc1/ghc-${version}-src.tar.xz"; url = "https://downloads.haskell.org/ghc/8.10.1-rc1/ghc-${version}-src.tar.xz";
sha256 = "1xm6cb3s2x3rycnyvkh12mp65xi3zbwrk5ima8sg7c245f3dl0ay"; sha256 = "162s5g33s918i12qfcqdj5wanc10xg07g5lq3gpm5j7c1v0y1zrf";
}; };
enableParallelBuilding = true; enableParallelBuilding = true;

View File

@ -603,9 +603,7 @@ self: super: {
sets = dontCheck super.sets; sets = dontCheck super.sets;
# Install icons, metadata and cli program. # Install icons, metadata and cli program.
# Do not build hgettext as it is broken bustle = overrideCabal super.bustle (drv: {
# https://gitlab.freedesktop.org/bustle/bustle/issues/13
bustle = overrideCabal (disableCabalFlag (super.bustle.override { hgettext = null; }) "hgettext") (drv: {
buildDepends = [ pkgs.libpcap ]; buildDepends = [ pkgs.libpcap ];
buildTools = with pkgs.buildPackages; [ gettext perl help2man ]; buildTools = with pkgs.buildPackages; [ gettext perl help2man ];
patches = [ patches = [
@ -1259,7 +1257,7 @@ self: super: {
}); });
# The LTS-14.x version of their dependencies are too old. # The LTS-14.x version of their dependencies are too old.
cabal-plan = super.cabal-plan.overrideScope (self: super: { optparse-applicative = self.optparse-applicative_0_15_1_0; ansi-terminal = self.ansi-terminal_0_10_2; base-compat = self.base-compat_0_11_0; semialign = self.semialign_1_1; time-compat = doJailbreak super.time-compat; }); cabal-plan = super.cabal-plan.overrideScope (self: super: { optparse-applicative = self.optparse-applicative_0_15_1_0; ansi-terminal = self.ansi-terminal_0_10_2; base-compat = self.base-compat_0_11_1; semialign = self.semialign_1_1; time-compat = doJailbreak super.time-compat; });
hoogle = super.hoogle.override { haskell-src-exts = self.haskell-src-exts_1_23_0; }; hoogle = super.hoogle.override { haskell-src-exts = self.haskell-src-exts_1_23_0; };
# Version bounds for http-client are too strict: # Version bounds for http-client are too strict:

View File

@ -85,10 +85,10 @@ self: super: {
lens = self.lens_4_18_1; lens = self.lens_4_18_1;
memory = self.memory_0_15_0; memory = self.memory_0_15_0;
microlens = self.microlens_0_4_11_2; microlens = self.microlens_0_4_11_2;
microlens-ghc = self.microlens-ghc_0_4_11_1; microlens-ghc = self.microlens-ghc_0_4_12;
microlens-mtl = self.microlens-mtl_0_2_0_1; microlens-mtl = self.microlens-mtl_0_2_0_1;
microlens-platform = self.microlens-platform_0_4_0; microlens-platform = self.microlens-platform_0_4_1;
microlens-th = self.microlens-th_0_4_3_2; microlens-th = self.microlens-th_0_4_3_4;
network = self.network_3_1_1_1; network = self.network_3_1_1_1;
optparse-applicative = self.optparse-applicative_0_15_1_0; optparse-applicative = self.optparse-applicative_0_15_1_0;
pandoc = dontCheck super.pandoc_2_9_1_1; # https://github.com/jgm/pandoc/issues/6086 pandoc = dontCheck super.pandoc_2_9_1_1; # https://github.com/jgm/pandoc/issues/6086
@ -144,4 +144,10 @@ self: super: {
easytest_0_3 = markBroken super.easytest_0_3; easytest_0_3 = markBroken super.easytest_0_3;
haskell-src = markBrokenVersion "1.0.3.0" super.haskell-src; haskell-src = markBrokenVersion "1.0.3.0" super.haskell-src;
# The LTS-14.x version of the dependencies are too old.
policeman = super.policeman.overrideScope (self: super: { ansi-terminal = self.ansi-terminal_0_10_2; relude = self.relude_0_6_0_0; });
# https://github.com/kowainik/relude/issues/241
relude_0_6_0_0 = dontCheck super.relude_0_6_0_0;
} }

View File

@ -69,7 +69,7 @@ core-packages:
default-package-overrides: default-package-overrides:
# pandoc-2.9 does not accept the 0.3 version yet # pandoc-2.9 does not accept the 0.3 version yet
- doclayout < 0.3 - doclayout < 0.3
# LTS Haskell 14.21 # LTS Haskell 14.22
- abstract-deque ==0.3 - abstract-deque ==0.3
- abstract-deque-tests ==0.3 - abstract-deque-tests ==0.3
- abstract-par ==0.3.3 - abstract-par ==0.3.3
@ -132,7 +132,7 @@ default-package-overrides:
- arrow-extras ==0.1.0.1 - arrow-extras ==0.1.0.1
- asciidiagram ==1.3.3.3 - asciidiagram ==1.3.3.3
- ascii-progress ==0.3.3.0 - ascii-progress ==0.3.3.0
- asif ==6.0.3 - asif ==6.0.4
- asn1-encoding ==0.9.6 - asn1-encoding ==0.9.6
- asn1-parse ==0.9.5 - asn1-parse ==0.9.5
- asn1-types ==0.3.3 - asn1-types ==0.3.3
@ -326,7 +326,7 @@ default-package-overrides:
- Chart ==1.9.3 - Chart ==1.9.3
- Chart-diagrams ==1.9.3 - Chart-diagrams ==1.9.3
- chaselev-deque ==0.5.0.5 - chaselev-deque ==0.5.0.5
- cheapskate ==0.1.1.1 - cheapskate ==0.1.1.2
- cheapskate-highlight ==0.1.0.0 - cheapskate-highlight ==0.1.0.0
- cheapskate-lucid ==0.1.0.0 - cheapskate-lucid ==0.1.0.0
- check-email ==1.0.2 - check-email ==1.0.2
@ -423,8 +423,8 @@ default-package-overrides:
- control-monad-omega ==0.3.2 - control-monad-omega ==0.3.2
- convertible ==1.1.1.0 - convertible ==1.1.1.0
- cookie ==0.4.5 - cookie ==0.4.5
- core-data ==0.2.1.4 - core-data ==0.2.1.5
- core-text ==0.2.2.6 - core-text ==0.2.3.3
- countable ==1.0 - countable ==1.0
- country ==0.1.6 - country ==0.1.6
- courier ==0.1.1.5 - courier ==0.1.1.5
@ -587,7 +587,7 @@ default-package-overrides:
- download ==0.3.2.7 - download ==0.3.2.7
- drinkery ==0.4 - drinkery ==0.4
- dsp ==0.2.5 - dsp ==0.2.5
- dual ==0.1.0.3 - dual ==0.1.1.1
- dual-tree ==0.2.2.1 - dual-tree ==0.2.2.1
- dublincore-xml-conduit ==0.1.0.2 - dublincore-xml-conduit ==0.1.0.2
- dunai ==0.5.1 - dunai ==0.5.1
@ -669,7 +669,7 @@ default-package-overrides:
- extractable-singleton ==0.0.1 - extractable-singleton ==0.0.1
- extrapolate ==0.3.3 - extrapolate ==0.3.3
- fail ==4.9.0.0 - fail ==4.9.0.0
- failable ==1.2.2.0 - failable ==1.2.4.0
- fakedata ==0.2.2 - fakedata ==0.2.2
- farmhash ==0.1.0.5 - farmhash ==0.1.0.5
- fast-builder ==0.1.2.0 - fast-builder ==0.1.2.0
@ -900,7 +900,7 @@ default-package-overrides:
- haskey-btree ==0.3.0.1 - haskey-btree ==0.3.0.1
- haskintex ==0.8.0.0 - haskintex ==0.8.0.0
- haskoin-core ==0.9.8 - haskoin-core ==0.9.8
- hasql ==1.4.0.1 - hasql ==1.4.1
- hasql-optparse-applicative ==0.3.0.5 - hasql-optparse-applicative ==0.3.0.5
- hasql-pool ==0.5.1 - hasql-pool ==0.5.1
- hasql-transaction ==0.7.2 - hasql-transaction ==0.7.2
@ -983,7 +983,7 @@ default-package-overrides:
- HSet ==0.0.1 - HSet ==0.0.1
- hset ==2.2.0 - hset ==2.2.0
- hsexif ==0.6.1.6 - hsexif ==0.6.1.6
- hs-functors ==0.1.5.0 - hs-functors ==0.1.6.0
- hs-GeoIP ==0.3 - hs-GeoIP ==0.3
- hsini ==0.5.1.2 - hsini ==0.5.1.2
- hsinstall ==2.2 - hsinstall ==2.2
@ -1037,13 +1037,13 @@ default-package-overrides:
- http-common ==0.8.2.0 - http-common ==0.8.2.0
- http-conduit ==2.3.7.3 - http-conduit ==2.3.7.3
- http-date ==0.0.8 - http-date ==0.0.8
- http-directory ==0.1.5 - http-directory ==0.1.7
- http-download ==0.1.0.1 - http-download ==0.1.0.1
- httpd-shed ==0.4.1.1 - httpd-shed ==0.4.1.1
- http-link-header ==1.0.3.1 - http-link-header ==1.0.3.1
- http-media ==0.8.0.0 - http-media ==0.8.0.0
- http-reverse-proxy ==0.6.0 - http-reverse-proxy ==0.6.0
- http-streams ==0.8.6.1 - http-streams ==0.8.7.1
- http-types ==0.12.3 - http-types ==0.12.3
- human-readable-duration ==0.2.1.4 - human-readable-duration ==0.2.1.4
- HUnit ==1.6.0.0 - HUnit ==1.6.0.0
@ -1059,7 +1059,7 @@ default-package-overrides:
- hw-dsv ==0.3.5 - hw-dsv ==0.3.5
- hweblib ==0.6.3 - hweblib ==0.6.3
- hw-eliasfano ==0.1.1.0 - hw-eliasfano ==0.1.1.0
- hw-excess ==0.2.2.1 - hw-excess ==0.2.2.2
- hw-fingertree ==0.1.1.1 - hw-fingertree ==0.1.1.1
- hw-fingertree-strict ==0.1.1.3 - hw-fingertree-strict ==0.1.1.3
- hw-hedgehog ==0.1.0.5 - hw-hedgehog ==0.1.0.5
@ -1300,13 +1300,13 @@ default-package-overrides:
- mainland-pretty ==0.7.0.1 - mainland-pretty ==0.7.0.1
- main-tester ==0.2.0.1 - main-tester ==0.2.0.1
- makefile ==1.1.0.0 - makefile ==1.1.0.0
- managed ==1.0.6 - managed ==1.0.7
- markdown ==0.1.17.4 - markdown ==0.1.17.4
- markdown-unlit ==0.5.0 - markdown-unlit ==0.5.0
- markov-chain ==0.0.3.4 - markov-chain ==0.0.3.4
- massiv ==0.4.4.0 - massiv ==0.4.5.0
- massiv-io ==0.1.9.0 - massiv-io ==0.1.9.0
- massiv-test ==0.1.1 - massiv-test ==0.1.2
- mathexpr ==0.3.0.0 - mathexpr ==0.3.0.0
- math-functions ==0.3.3.0 - math-functions ==0.3.3.0
- matplotlib ==0.7.5 - matplotlib ==0.7.5
@ -1452,7 +1452,7 @@ default-package-overrides:
- network-anonymous-i2p ==0.10.0 - network-anonymous-i2p ==0.10.0
- network-attoparsec ==0.12.2 - network-attoparsec ==0.12.2
- network-bsd ==2.8.0.0 - network-bsd ==2.8.0.0
- network-byte-order ==0.1.2.0 - network-byte-order ==0.1.3.0
- network-conduit-tls ==1.3.2 - network-conduit-tls ==1.3.2
- network-house ==0.1.0.2 - network-house ==0.1.0.2
- network-info ==0.2.0.10 - network-info ==0.2.0.10
@ -1496,7 +1496,7 @@ default-package-overrides:
- ObjectName ==1.1.0.1 - ObjectName ==1.1.0.1
- oblivious-transfer ==0.1.0 - oblivious-transfer ==0.1.0
- odbc ==0.2.2 - odbc ==0.2.2
- oeis ==0.3.9 - oeis ==0.3.10
- oeis2 ==1.0.3 - oeis2 ==1.0.3
- ofx ==0.4.4.0 - ofx ==0.4.4.0
- old-locale ==1.0.0.7 - old-locale ==1.0.0.7
@ -1742,7 +1742,7 @@ default-package-overrides:
- Ranged-sets ==0.4.0 - Ranged-sets ==0.4.0
- range-set-list ==0.1.3.1 - range-set-list ==0.1.3.1
- rank1dynamic ==0.4.0 - rank1dynamic ==0.4.0
- rank2classes ==1.3.1.2 - rank2classes ==1.3.2.1
- Rasterific ==0.7.5 - Rasterific ==0.7.5
- rasterific-svg ==0.3.3.2 - rasterific-svg ==0.3.3.2
- ratel ==1.0.9 - ratel ==1.0.9
@ -1900,13 +1900,13 @@ default-package-overrides:
- servant-elm ==0.6.1 - servant-elm ==0.6.1
- servant-foreign ==0.15 - servant-foreign ==0.15
- servant-http-streams ==0.16.0.1 - servant-http-streams ==0.16.0.1
- servant-js ==0.9.4 - servant-js ==0.9.4.1
- servant-JuicyPixels ==0.3.0.5 - servant-JuicyPixels ==0.3.0.5
- servant-kotlin ==0.1.1.9 - servant-kotlin ==0.1.1.9
- servant-lucid ==0.9 - servant-lucid ==0.9
- servant-machines ==0.15 - servant-machines ==0.15
- servant-mock ==0.8.5 - servant-mock ==0.8.5
- servant-multipart ==0.11.4 - servant-multipart ==0.11.5
- servant-pipes ==0.15.1 - servant-pipes ==0.15.1
- servant-rawm ==0.3.2.0 - servant-rawm ==0.3.2.0
- servant-ruby ==0.9.0.0 - servant-ruby ==0.9.0.0
@ -2187,7 +2187,7 @@ default-package-overrides:
- timer-wheel ==0.2.0.1 - timer-wheel ==0.2.0.1
- timezone-olson ==0.1.9 - timezone-olson ==0.1.9
- timezone-series ==0.1.9 - timezone-series ==0.1.9
- tintin ==1.10.0 - tintin ==1.10.1
- tinylog ==0.15.0 - tinylog ==0.15.0
- titlecase ==1.0.1 - titlecase ==1.0.1
- tldr ==0.4.0.2 - tldr ==0.4.0.2
@ -2229,7 +2229,7 @@ default-package-overrides:
- tuples-homogenous-h98 ==0.1.1.0 - tuples-homogenous-h98 ==0.1.1.0
- tuple-sop ==0.3.1.0 - tuple-sop ==0.3.1.0
- tuple-th ==0.2.5 - tuple-th ==0.2.5
- turtle ==1.5.15 - turtle ==1.5.16
- TypeCompose ==0.9.14 - TypeCompose ==0.9.14
- typed-process ==0.2.6.0 - typed-process ==0.2.6.0
- type-errors ==0.2.0.0 - type-errors ==0.2.0.0
@ -2242,7 +2242,7 @@ default-package-overrides:
- typelits-witnesses ==0.4.0.0 - typelits-witnesses ==0.4.0.0
- type-map ==0.1.6.0 - type-map ==0.1.6.0
- typenums ==0.1.2.1 - typenums ==0.1.2.1
- type-of-html ==1.5.0.0 - type-of-html ==1.5.1.0
- type-of-html-static ==0.1.0.2 - type-of-html-static ==0.1.0.2
- type-operators ==0.2.0.0 - type-operators ==0.2.0.0
- typerep-map ==0.3.2 - typerep-map ==0.3.2
@ -2383,7 +2383,7 @@ default-package-overrides:
- websockets ==0.12.7.0 - websockets ==0.12.7.0
- websockets-snap ==0.10.3.1 - websockets-snap ==0.10.3.1
- weigh ==0.0.16 - weigh ==0.0.16
- wide-word ==0.1.0.9 - wide-word ==0.1.1.0
- wikicfp-scraper ==0.1.0.11 - wikicfp-scraper ==0.1.0.11
- wild-bind ==0.1.2.5 - wild-bind ==0.1.2.5
- wild-bind-x11 ==0.2.0.9 - wild-bind-x11 ==0.2.0.9
@ -3012,6 +3012,7 @@ broken-packages:
- archlinux - archlinux
- archlinux-web - archlinux-web
- archnews - archnews
- arduino-copilot
- arena - arena
- arff - arff
- arghwxhaskell - arghwxhaskell
@ -4929,6 +4930,7 @@ broken-packages:
- fused-effects-lens - fused-effects-lens
- fused-effects-random - fused-effects-random
- fused-effects-resumable - fused-effects-resumable
- fused-effects-squeal
- fusion - fusion
- futhark - futhark
- futun - futun
@ -5099,6 +5101,7 @@ broken-packages:
- git-remote-ipfs - git-remote-ipfs
- git-repair - git-repair
- git-sanity - git-sanity
- git-vogue
- gitdo - gitdo
- github-backup - github-backup
- github-data - github-data
@ -7761,6 +7764,7 @@ broken-packages:
- opensoundcontrol-ht - opensoundcontrol-ht
- openssh-github-keys - openssh-github-keys
- openssh-protocol - openssh-protocol
- opentelemetry-lightstep
- opentheory-char - opentheory-char
- opentok - opentok
- opentype - opentype
@ -9383,6 +9387,7 @@ broken-packages:
- structures - structures
- stt - stt
- stunts - stunts
- stylish-haskell
- stylist - stylist
- stylized - stylized
- suavemente - suavemente

View File

@ -132,6 +132,37 @@ let
main = defaultMain main = defaultMain
''; '';
# This awk expression transforms a package conf file like
#
# author: John Doe <john-doe@example.com>
# description:
# The purpose of this library is to do
# foo and bar among other things
#
# into a more easily processeable form:
#
# author: John Doe <john-doe@example.com>
# description: The purpose of this library is to do foo and bar among other things
unprettyConf = builtins.toFile "unpretty-cabal-conf.awk" ''
/^[^ ]+:/ {
# When the line starts with a new field, terminate the previous one with a newline
if (started == 1) print ""
# to strip leading spaces
$1=$1
printf "%s", $0
started=1
}
/^ +/ {
# to strip leading spaces
$1=$1
printf " %s", $0
}
# Terminate the final field with a newline
END { print "" }
'';
crossCabalFlags = [ crossCabalFlags = [
"--with-ghc=${ghcCommand}" "--with-ghc=${ghcCommand}"
"--with-ghc-pkg=${ghc.targetPrefix}ghc-pkg" "--with-ghc-pkg=${ghc.targetPrefix}ghc-pkg"
@ -344,12 +375,22 @@ stdenv.mkDerivation ({
# libraries) from all the dependencies. # libraries) from all the dependencies.
local dynamicLinksDir="$out/lib/links" local dynamicLinksDir="$out/lib/links"
mkdir -p $dynamicLinksDir mkdir -p $dynamicLinksDir
for d in $(grep dynamic-library-dirs "$packageConfDir/"*|awk '{print $2}'|sort -u); do
ln -s "$d/"*.dylib $dynamicLinksDir # Unprettify all package conf files before reading/writing them
for d in "$packageConfDir/"*; do
# gawk -i inplace seems to strip the last newline
gawk -f ${unprettyConf} "$d" > tmp
mv tmp "$d"
done
for d in $(grep '^dynamic-library-dirs:' "$packageConfDir"/* | cut -d' ' -f2- | tr ' ' '\n' | sort -u); do
for lib in "$d/"*.dylib; do
ln -s "$lib" "$dynamicLinksDir"
done
done done
# Edit the local package DB to reference the links directory. # Edit the local package DB to reference the links directory.
for f in "$packageConfDir/"*.conf; do for f in "$packageConfDir/"*.conf; do
sed -i "s,dynamic-library-dirs: .*,dynamic-library-dirs: $dynamicLinksDir," $f sed -i "s,dynamic-library-dirs: .*,dynamic-library-dirs: $dynamicLinksDir," "$f"
done done
'') + '' '') + ''
${ghcCommand}-pkg --${packageDbFlag}="$packageConfDir" recache ${ghcCommand}-pkg --${packageDbFlag}="$packageConfDir" recache
@ -418,10 +459,6 @@ stdenv.mkDerivation ({
runHook postHaddock runHook postHaddock
''; '';
# The scary sed expression handles two cases in v2.5 Cabal's package configs:
# 1. 'id: short-name-0.0.1-9yvw8HF06tiAXuxm5U8KjO'
# 2. 'id:\n
# very-long-descriptive-useful-name-0.0.1-9yvw8HF06tiAXuxm5U8KjO'
installPhase = '' installPhase = ''
runHook preInstall runHook preInstall
@ -436,8 +473,9 @@ stdenv.mkDerivation ({
rmdir "$packageConfFile" rmdir "$packageConfFile"
fi fi
for packageConfFile in "$packageConfDir/"*; do for packageConfFile in "$packageConfDir/"*; do
local pkgId=$( ${gnused}/bin/sed -n -e ':a' -e '/^id:$/N; s/id:\n[ ]*\([^\n]*\).*$/\1/p; s/id:[ ]*\([^\n]*\)$/\1/p; ta' $packageConfFile ) local pkgId=$(gawk -f ${unprettyConf} "$packageConfFile" \
mv $packageConfFile $packageConfDir/$pkgId.conf | grep '^id:' | cut -d' ' -f2)
mv "$packageConfFile" "$packageConfDir/$pkgId.conf"
done done
# delete confdir if there are no libraries # delete confdir if there are no libraries

File diff suppressed because it is too large Load Diff