Merge together merge bases of 19.09 and master

This commit is contained in:
John Ericson
2020-01-15 18:54:36 -05:00
13710 changed files with 476213 additions and 360231 deletions

View File

@@ -32,33 +32,20 @@ self: super: {
# compiled on Linux. We provide the name to avoid evaluation errors.
unbuildable = throw "package depends on meta package 'unbuildable'";
# Use the latest version of the Cabal library.
cabal-install = super.cabal-install.overrideScope (self: super: { Cabal = self.Cabal_2_4_1_0; });
# The test suite depends on old versions of tasty and QuickCheck.
hackage-security = dontCheck super.hackage-security;
# Link statically to avoid runtime dependency on GHC.
jailbreak-cabal = disableSharedExecutables super.jailbreak-cabal;
# enable using a local hoogle with extra packagages in the database
# nix-shell -p "haskellPackages.hoogleLocal { packages = with haskellPackages; [ mtl lens ]; }"
# $ hoogle server
hoogleLocal = { packages ? [] }: self.callPackage ./hoogle.nix { inherit packages; };
# Break infinite recursions.
attoparsec-varword = super.attoparsec-varword.override { bytestring-builder-varword = dontCheck self.bytestring-builder-varword; };
clock = dontCheck super.clock;
Dust-crypto = dontCheck super.Dust-crypto;
hasql-postgres = dontCheck super.hasql-postgres;
hspec-core = super.hspec-core.override { silently = dontCheck self.silently; temporary = dontCheck self.temporary; };
hspec-expectations = dontCheck super.hspec-expectations;
HTTP = dontCheck super.HTTP;
http-streams = dontCheck super.http-streams;
nanospec = dontCheck super.nanospec;
options = dontCheck super.options;
# Needs older QuickCheck version
attoparsec-varword = dontCheck super.attoparsec-varword;
# Tests are failing
# https://github.com/bos/statistics/issues/123
statistics = dontCheck super.statistics;
vector-builder = dontCheck super.vector-builder;
# These packages (and their reverse deps) cannot be built with profiling enabled.
ghc-heap-view = disableLibraryProfiling super.ghc-heap-view;
@@ -67,16 +54,13 @@ self: super: {
# This test keeps being aborted because it runs too quietly for too long
Lazy-Pbkdf2 = if pkgs.stdenv.isi686 then dontCheck super.Lazy-Pbkdf2 else super.Lazy-Pbkdf2;
# Use the default version of mysql to build this package (which is actually mariadb).
# test phase requires networking
mysql = dontCheck (super.mysql.override { mysql = pkgs.mysql.connector-c; });
# check requires mysql server
mysql-simple = dontCheck super.mysql-simple;
mysql-haskell = dontCheck super.mysql-haskell;
# Link the proper version.
zeromq4-haskell = super.zeromq4-haskell.override { zeromq = pkgs.zeromq4; };
# Tests failing, fixed once 0.8.0 is in stackage
# https://gitlab.com/twittner/zeromq-haskell/issues/63
zeromq4-haskell = dontCheck super.zeromq4-haskell;
# The Hackage tarball is purposefully broken, because it's not intended to be, like, useful.
# https://git-annex.branchable.com/bugs/bash_completion_file_is_missing_in_the_6.20160527_tarball_on_hackage/
@@ -85,7 +69,7 @@ self: super: {
name = "git-annex-${super.git-annex.version}-src";
url = "git://git-annex.branchable.com/";
rev = "refs/tags/" + super.git-annex.version;
sha256 = "06385r9rlncrrmzdfl8q600bw6plbvkmkwgl3llg595xrm711a97";
sha256 = "1795sad0jr2da2pn28nbqsvpld6zw8gf9yscywixkbabf7ls66fn";
};
}).override {
dbus = if pkgs.stdenv.isLinux then self.dbus else null;
@@ -105,7 +89,7 @@ self: super: {
# https://github.com/froozen/kademlia/issues/2
kademlia = dontCheck super.kademlia;
# Test suite doesn't terminate
# Tests require older tasty
hzk = dontCheck super.hzk;
# Tests require a Kafka broker running locally
@@ -143,6 +127,7 @@ self: super: {
feldspar-signal = dontHaddock super.feldspar-signal; # https://github.com/markus-git/feldspar-signal/issues/1
hoodle-core = dontHaddock super.hoodle-core;
hsc3-db = dontHaddock super.hsc3-db;
classy-prelude-yesod = dontHaddock super.classy-prelude-yesod; # https://github.com/haskell/haddock/issues/979
# https://github.com/techtangents/ablist/issues/1
ABList = dontCheck super.ABList;
@@ -161,33 +146,29 @@ self: super: {
else super.halive;
# Hakyll's tests are broken on Darwin (3 failures); and they require util-linux
hakyll = if pkgs.stdenv.isDarwin
hakyll = appendPatch
(if pkgs.stdenv.isDarwin
then dontCheck (overrideCabal super.hakyll (drv: {
testToolDepends = [];
}))
# https://github.com/jaspervdj/hakyll/issues/491
else dontCheck super.hakyll;
else super.hakyll)
(pkgs.fetchpatch {
url = https://github.com/jaspervdj/hakyll/commit/25a4460b75b3c9f3ce339b3311b084d92994f5f1.patch;
sha256 = "sha256-F59WHt52LOKGsGoaD3LAIZFEMe9s9WHfGxQgSh9Q8uQ=";
});
double-conversion = if !pkgs.stdenv.isDarwin
then super.double-conversion
else addExtraLibrary super.double-conversion pkgs.libcxx;
inline-c-cpp = if !pkgs.stdenv.isDarwin
then super.inline-c-cpp
else
let drv = addExtraLibrary (overrideCabal super.inline-c-cpp (drv: {
postPatch = ''
substituteInPlace inline-c-cpp.cabal --replace stdc++ c++
'';
})) pkgs.libcxx;
in # https://github.com/fpco/inline-c/issues/75
dontCheck drv;
inline-c-cpp = overrideCabal super.inline-c-cpp (drv: {
postPatch = (drv.postPatch or "") + ''
substituteInPlace inline-c-cpp.cabal --replace "-optc-std=c++11" ""
'';
});
inline-java = addBuildDepend super.inline-java pkgs.jdk;
# https://github.com/mvoidex/hsdev/issues/11
hsdev = dontHaddock super.hsdev;
# Upstream notified by e-mail.
permutation = dontCheck super.permutation;
@@ -235,15 +216,19 @@ self: super: {
# base bound
digit = doJailbreak super.digit;
# Needs older version of QuickCheck.
these_0_7_6 = doJailbreak super.these_0_7_6;
# dontCheck: Can be removed once https://github.com/haskell-nix/hnix/commit/471712f is in (5.2 probably)
# This is due to GenList having been removed from generic-random in 1.2.0.0
# doJailbreak: Can be removed once https://github.com/haskell-nix/hnix/pull/329 is in (5.2 probably)
# This is due to hnix currently having an upper bound of <0.5 on deriving-compat, works just fine with our current version 0.5.1 though
# Does not support recent versions of "these".
# https://github.com/haskell-nix/hnix/issues/514
hnix =
generateOptparseApplicativeCompletion "hnix" (
dontCheck (doJailbreak (overrideCabal super.hnix (old: {
testHaskellDepends = old.testHaskellDepends or [] ++ [ pkgs.nix ];
}))));
dontCheck (doJailbreak (super.hnix.override { these = self.these_0_7_6; }))
);
# Fails for non-obvious reasons while attempting to use doctest.
search = dontCheck super.search;
@@ -340,6 +325,7 @@ self: super: {
lensref = dontCheck super.lensref;
lucid = dontCheck super.lucid; #https://github.com/chrisdone/lucid/issues/25
lvmrun = disableHardening (dontCheck super.lvmrun) ["format"];
matplotlib = dontCheck super.matplotlib;
memcache = dontCheck super.memcache;
MemoTrie = dontHaddock (dontCheck super.MemoTrie);
metrics = dontCheck super.metrics;
@@ -370,6 +356,7 @@ self: super: {
pwstore-cli = dontCheck super.pwstore-cli;
quantities = dontCheck super.quantities;
redis-io = dontCheck super.redis-io;
reflex = dontCheck super.reflex; # test suite uses hlint, which has different haskell-src-exts version
rethinkdb = dontCheck super.rethinkdb;
Rlang-QQ = dontCheck super.Rlang-QQ;
safecopy = dontCheck super.safecopy;
@@ -398,6 +385,7 @@ self: super: {
xsd = dontCheck super.xsd;
snap-core = dontCheck super.snap-core;
sourcemap = dontCheck super.sourcemap;
zip-archive = dontCheck super.zip-archive; # https://github.com/jgm/zip-archive/issues/57
# These test suites run for ages, even on a fast machine. This is nuts.
Random123 = dontCheck super.Random123;
@@ -725,15 +713,9 @@ self: super: {
'';
});
# A simple MonadFail patch would do too, but not doing the tests is easier
megaparsec_6_5_0 = dontCheck super.megaparsec_6_5_0;
# The standard libraries are compiled separately
idris = generateOptparseApplicativeCompletion "idris" (
doJailbreak (dontCheck (super.idris.override {
# Needed for versions <= 1.3.1 https://github.com/idris-lang/Idris-dev/pull/4610
megaparsec = self.megaparsec_6_5_0;
}))
doJailbreak (dontCheck super.idris)
);
# https://github.com/bos/math-functions/issues/25
@@ -763,7 +745,7 @@ self: super: {
};
in overrideCabal super.servant (old: {
postInstall = old.postInstall or "" + ''
ln -s ${docs} $doc/share/doc/servant
ln -s ${docs} ''${!outputDoc}/share/doc/servant
'';
});
@@ -870,8 +852,17 @@ self: super: {
# https://github.com/takano-akio/filelock/issues/5
filelock = dontCheck super.filelock;
# cryptol-2.5.0 doesn't want happy 1.19.6+.
cryptol = super.cryptol.override { happy = self.happy_1_19_5; };
# Wrap the generated binaries to include their run-time dependencies in
# $PATH. Also, cryptol needs a version of sbl that's newer than what we have
# in LTS-13.x.
cryptol = overrideCabal super.cryptol (drv: {
buildTools = drv.buildTools or [] ++ [ pkgs.makeWrapper ];
postInstall = drv.postInstall or "" + ''
for b in $out/bin/cryptol $out/bin/cryptol-html; do
wrapProgram $b --prefix 'PATH' ':' "${pkgs.lib.getBin pkgs.z3}/bin"
done
'';
});
# Tests try to invoke external process and process == 1.4
grakn = dontCheck (doJailbreak super.grakn);
@@ -953,17 +944,13 @@ self: super: {
# Tries to read a file it is not allowed to in the test suite
load-env = dontCheck super.load-env;
# hledger needs a newer megaparsec version than we have in LTS 12.x.
hledger-lib = super.hledger-lib.overrideScope (self: super: {
# cassava-megaparsec = self.cassava-megaparsec_2_0_0;
# hspec-megaparsec = self.hspec-megaparsec_2_0_0;
# megaparsec = self.megaparsec_7_0_4;
});
# Copy hledger man pages from data directory into the proper place. This code
# should be moved into the cabal2nix generator.
hledger = overrideCabal super.hledger (drv: {
postInstall = ''
# Don't install files that don't belong into this package to avoid
# conflicts when hledger and hledger-ui end up in the same profile.
rm embeddedfiles/hledger-{api,ui,web}.*
for i in $(seq 1 9); do
for j in embeddedfiles/*.$i; do
mkdir -p $out/share/man/man$i
@@ -974,7 +961,7 @@ self: super: {
cp -v embeddedfiles/*.info* $out/share/info/
'';
});
hledger-ui = (overrideCabal super.hledger-ui (drv: {
hledger-ui = overrideCabal super.hledger-ui (drv: {
postInstall = ''
for i in $(seq 1 9); do
for j in *.$i; do
@@ -985,11 +972,6 @@ self: super: {
mkdir -p $out/share/info
cp -v *.info* $out/share/info/
'';
})).overrideScope (self: super: {
# cassava-megaparsec = self.cassava-megaparsec_2_0_0;
# config-ini = self.config-ini_0_2_4_0;
# hspec-megaparsec = self.hspec-megaparsec_2_0_0;
# megaparsec = self.megaparsec_7_0_4;
});
hledger-web = overrideCabal super.hledger-web (drv: {
postInstall = ''
@@ -1004,26 +986,19 @@ self: super: {
'';
});
# https://github.com/haskell-rewriting/term-rewriting/issues/11
term-rewriting = dontCheck (doJailbreak super.term-rewriting);
# https://github.com/haskell-rewriting/term-rewriting/pull/15
# remove on next hackage update
term-rewriting = doJailbreak super.term-rewriting;
# https://github.com/nick8325/twee/pull/1
twee-lib = dontHaddock super.twee-lib;
# Needs older hlint
hpio = dontCheck super.hpio;
# https://github.com/fpco/inline-c/issues/72
inline-c = dontCheck super.inline-c;
# https://github.com/GaloisInc/pure-zlib/issues/6
# https://github.com/GaloisInc/pure-zlib/pull/11
pure-zlib = doJailbreak super.pure-zlib;
# https://github.com/strake/lenz-template.hs/issues/1
# https://github.com/strake/lenz-template.hs/pull/2
lenz-template = doJailbreak super.lenz-template;
# https://github.com/haskell-hvr/resolv/issues/1
# https://github.com/haskell-hvr/resolv/pull/6
resolv = dontCheck super.resolv;
resolv_0_1_1_2 = dontCheck super.resolv_0_1_1_2;
# spdx 0.2.2.0 needs older tasty
# was fixed in spdx master (4288df6e4b7840eb94d825dcd446b42fef25ef56)
@@ -1044,14 +1019,11 @@ self: super: {
# };
# https://github.com/dmwit/encoding/pull/3
encoding = appendPatch super.encoding ./patches/encoding-Cabal-2.0.patch;
encoding = doJailbreak (appendPatch super.encoding ./patches/encoding-Cabal-2.0.patch);
# Work around overspecified constraint on github ==0.18.
github-backup = doJailbreak super.github-backup;
# https://github.com/fpco/streaming-commons/issues/49
streaming-commons = dontCheck super.streaming-commons;
# Test suite depends on old QuickCheck 2.10.x.
cassava = dontCheck super.cassava;
@@ -1070,9 +1042,11 @@ self: super: {
dontCheck super.dhall
);
# Missing test files in source distribution, fixed once 1.4.0 is bumped
# https://github.com/dhall-lang/dhall-haskell/pull/997
dhall-json =
generateOptparseApplicativeCompletions ["dhall-to-json" "dhall-to-yaml"] (
super.dhall-json
dontCheck super.dhall-json
);
dhall-nix =
@@ -1080,29 +1054,23 @@ self: super: {
super.dhall-nix
);
# https://github.com/well-typed/cborg/issues/174
cborg = doJailbreak super.cborg;
serialise = doJailbreak (dontCheck super.serialise);
# https://github.com/phadej/tree-diff/issues/19
tree-diff = doJailbreak super.tree-diff;
# https://github.com/haskell-hvr/netrc/pull/2#issuecomment-469526558
netrc = doJailbreak super.netrc;
# https://github.com/haskell-hvr/hgettext/issues/14
hgettext = doJailbreak super.hgettext;
# haddock-api-2.22.0: Break out of “QuickCheck ==2.11.*, hspec >=2.4.4 && <2.6”
haddock-api = dontHaddock (doJailbreak (super.haddock-api));
# The test suite is broken. Break out of "base-compat >=0.9.3 && <0.10, hspec >=2.4.4 && <2.5".
haddock-library = doJailbreak (dontCheck super.haddock-library);
# haddock-library_1_6_0 = doJailbreak (dontCheck super.haddock-library_1_6_0);
# Break out of tasty >=0.10 && <1.2.
aeson-compat = doJailbreak super.aeson-compat;
# Break out of pretty-show >=1.6 && <1.9
hedgehog = doJailbreak super.hedgehog;
# Generate shell completion.
cabal2nix = generateOptparseApplicativeCompletion "cabal2nix" super.cabal2nix;
stack = generateOptparseApplicativeCompletion "stack" super.stack;
stack = generateOptparseApplicativeCompletion "stack" (super.stack.overrideScope (self: super: {
}));
# musl fixes
# dontCheck: use of non-standard strptime "%s" which musl doesn't support; only used in test
@@ -1139,29 +1107,9 @@ self: super: {
# Generate shell completions
purescript = generateOptparseApplicativeCompletion "purs" super.purescript;
# https://github.com/adinapoli/mandrill/pull/52
mandrill = appendPatch super.mandrill (pkgs.fetchpatch {
url = https://github.com/adinapoli/mandrill/commit/30356d9dfc025a5f35a156b17685241fc3882c55.patch;
sha256 = "1qair09xs6vln3vsjz7sy4hhv037146zak4mq3iv6kdhmp606hqv";
});
# https://github.com/Euterpea/Euterpea2/pull/22
Euterpea = overrideSrc super.Euterpea {
src = pkgs.fetchFromGitHub {
owner = "Euterpea";
repo = "Euterpea2";
rev = "6f49b790adfb8b65d95a758116c20098fb0cd34c";
sha256 = "0qz1svb96n42nmig16vyphwxas34hypgayvwc91ri7w7xd6yi1ba";
};
};
# https://github.com/kcsongor/generic-lens/pull/65
generic-lens = dontCheck super.generic-lens;
xmonad-extras = doJailbreak super.xmonad-extras;
arbtt = doJailbreak super.arbtt;
# https://github.com/danfran/cabal-macosx/issues/13
cabal-macosx = dontCheck super.cabal-macosx;
@@ -1175,44 +1123,23 @@ self: super: {
# });
libnix = dontCheck super.libnix;
# https://github.com/jmillikin/chell/issues/1
chell = super.chell.override { patience = self.patience_0_1_1; };
# The test suite tries to mess with ALSA, which doesn't work in the build sandbox.
xmobar = dontCheck super.xmobar;
# https://github.com/mgajda/json-autotype/issues/25
json-autotype = dontCheck super.json-autotype;
# The LTS-12.x version doesn't suffice to build hlint, hoogle, etc.
hlint = super.hlint.overrideScope (self: super: { haskell-src-exts = self.haskell-src-exts_1_21_0; });
hoogle = super.hoogle.overrideScope (self: super: { haskell-src-exts = self.haskell-src-exts_1_21_0; });
# Jailbreak tasty < 1.2: https://github.com/phadej/tdigest/issues/30
tdigest = doJailbreak super.tdigest; # until tdigest > 0.2.1
these = doJailbreak super.these; # until these >= 0.7.6
insert-ordered-containers = appendPatch super.insert-ordered-containers ./patches/insert-ordered-containers-fix-test.patch;
uri-bytestring = appendPatch super.uri-bytestring (pkgs.fetchpatch {
url = "https://github.com/Soostone/uri-bytestring/commit/e5c5602a97160a6a6304a24947e33e47c9155460.patch";
sha256 = "1qwy8bj6vywhp0075dza8j90zrzsm3144qz3c703s9c4n6pg3gw4";
});
# These patches contain fixes for 8.6 that should be safe for
# earlier versions, but we need the relaxed version bounds in GHC
# 8.4 builds. beam needs to release a round of updates that relax
# bounds and include the 8.6 fixes:
# https://github.com/tathougies/beam/issues/315
beam-core = appendPatch super.beam-core ./patches/beam-core-fix-ghc-8.6.x-build.patch;
beam-migrate = appendPatch super.beam-migrate ./patches/beam-migrate-fix-ghc-8.6.x-build.patch;
beam-postgres = appendPatch super.beam-postgres ./patches/beam-postgres-fix-ghc-8.6.x-build.patch;
beam-sqlite = appendPatch super.beam-sqlite ./patches/beam-sqlite-fix-ghc-8.6.x-build.patch;
# https://github.com/sighingnow/computations/pull/1
primesieve = appendPatch super.primesieve (pkgs.fetchpatch {
url = "https://github.com/sighingnow/computations/commit/1f96788367c879b999afe733e2fe28d919d17702.patch";
sha256 = "0lrcmcrxp9imj9rfaq7mb0fn9mxms4gq4sz95n4san3dpd0qmj9x";
stripLen = 1;
# Requires pg_ctl command during tests
beam-postgres = overrideCabal super.beam-postgres (drv: {
testToolDepends = (drv.testToolDepends or []) ++ [pkgs.postgresql];
});
# Fix for base >= 4.11
@@ -1223,12 +1150,82 @@ self: super: {
})];
});
# Use latest pandoc despite what LTS says.
# Test suite fails in both 2.5 and 2.6: https://github.com/jgm/pandoc/issues/5309.
pandoc = doDistribute (dontCheck super.pandoc_2_6);
pandoc-citeproc = self.pandoc-citeproc_0_16_1;
# Remove unecessary constraint:
# https://github.com/agrafix/superbuffer/pull/2
superbuffer = overrideCabal super.superbuffer (drv: {
postPatch = ''
sed -i 's#QuickCheck < 2.10#QuickCheck < 2.13#' superbuffer.cabal
'';
});
# https://github.com/qfpl/tasty-hedgehog/issues/24
tasty-hedgehog = dontCheck super.tasty-hedgehog;
# test suite failure: https://github.com/jgm/pandoc/issues/5582
pandoc = dontCheck super.pandoc;
# The latest release version is ancient. You really need this tool from git.
haskell-ci = generateOptparseApplicativeCompletion "haskell-ci"
(addBuildDepend (overrideSrc (dontCheck super.haskell-ci) {
version = "20190814-git";
src = pkgs.fetchFromGitHub {
owner = "haskell-CI";
repo = "haskell-ci";
rev = "70918d80b6fd43aca7e4d00ba0d2ea116b666556";
sha256 = "0bzp959qy74zmqq75f60rcixpjbvvyrb5a8zp2nyql3nm9vxzy5k";
};
}) (with self; [temporary lattices Cabal_3_0_0_0]));
# Fix build with attr-2.4.48 (see #53716)
xattr = appendPatch super.xattr ./patches/xattr-fix-build.patch;
# These packages needs network 3.x, which is not in LTS-13.x.
network-bsd_2_8_1_0 = super.network-bsd_2_8_1_0.override { network = self.network_3_0_1_1; };
lambdabot-core = super.lambdabot-core.overrideScope (self: super: { network = self.network_3_0_1_1; hslogger = self.hslogger_1_3_0_0; });
lambdabot-reference-plugins = super.lambdabot-reference-plugins.overrideScope (self: super: { network = self.network_3_0_1_1; hslogger = self.hslogger_1_3_0_0; });
lambdabot-haskell-plugins = super.lambdabot-haskell-plugins.overrideScope (self: super: { network = self.network_3_0_1_1; });
# Some tests depend on a postgresql instance
# Haddock failure: https://github.com/haskell/haddock/issues/979
esqueleto = dontHaddock (dontCheck super.esqueleto);
# Requires API keys to run tests
algolia = dontCheck super.algolia;
# antiope-s3's latest stackage version has a hspec < 2.6 requirement, but
# hspec which isn't in stackage is already past that
antiope-s3 = doJailbreak super.antiope-s3;
# Has tasty < 1.2 requirement, but works just fine with 1.2
temporary-resourcet = doJailbreak super.temporary-resourcet;
# Requires dhall >= 1.23.0
ats-pkg = super.ats-pkg.override { dhall = self.dhall_1_25_0; };
dhall-to-cabal = super.dhall-to-cabal.override { dhall = self.dhall_1_25_0; };
# Test suite doesn't work with current QuickCheck
# https://github.com/pruvisto/heap/issues/11
heap = dontCheck super.heap;
# Test suite won't link for no apparent reason.
constraints-deriving = dontCheck super.constraints-deriving;
# need newer version of ghc-libparser
hlint = super.hlint.override { ghc-lib-parser = self.ghc-lib-parser_8_8_0_20190723; };
# https://github.com/sol/hpack/issues/366
hpack = self.hpack_0_32_0;
# QuickCheck >=2.3 && <2.13, hspec >=2.1 && <2.7
graphviz = dontCheck super.graphviz;
# https://github.com/elliottt/hsopenid/issues/15
openid = markBroken super.openid;
# The test suite needs the packages's executables in $PATH to succeed.
arbtt = overrideCabal super.arbtt (drv: {
preCheck = ''
for i in $PWD/dist/build/*; do
export PATH="$i:$PATH"
done
'';
});
} // import ./configuration-tensorflow.nix {inherit pkgs haskellLib;} self super

View File

@@ -20,6 +20,7 @@ self: super: {
ghc-boot = null;
ghc-boot-th = null;
ghc-compact = null;
ghc-heap = null;
ghc-prim = null;
ghci = null;
haskeline = null;
@@ -38,17 +39,12 @@ self: super: {
# These are now core libraries in GHC 8.4.x.
mtl = self.mtl_2_2_2;
parsec = self.parsec_3_1_13_0;
parsec = self.parsec_3_1_14_0;
stm = self.stm_2_5_0_0;
text = self.text_1_2_3_1;
text = self.text_1_2_4_0;
# Make sure we can still build Cabal 1.x.
Cabal_1_24_2_0 = overrideCabal super.Cabal_1_24_2_0 (drv: {
prePatch = "sed -i -e 's/process.*< 1.5,/process,/g' Cabal.cabal";
});
# Build with the latest Cabal version, which works best albeit not perfectly.
jailbreak-cabal = super.jailbreak-cabal.override { Cabal = self.Cabal_2_2_0_1; };
# Needs Cabal 3.0.x.
jailbreak-cabal = super.jailbreak-cabal.override { Cabal = self.Cabal_3_0_0_0; };
# https://github.com/bmillwood/applicative-quoters/issues/6
applicative-quoters = appendPatch super.applicative-quoters (pkgs.fetchpatch {
@@ -89,10 +85,10 @@ self: super: {
cabal2nix = super.cabal2nix.overrideScope (self: super: { Cabal = self.Cabal_2_2_0_1; });
cabal2spec = super.cabal2spec.overrideScope (self: super: { Cabal = self.Cabal_2_2_0_1; });
distribution-nixpkgs = super.distribution-nixpkgs.overrideScope (self: super: { Cabal = self.Cabal_2_2_0_1; });
hackage-db_2_0_1 = super.hackage-db_2_0_1.overrideScope (self: super: { Cabal = self.Cabal_2_2_0_1; });
stack = super.stack.overrideScope (self: super: { Cabal = self.Cabal_2_2_0_1; });
# GHC 8.2 doesn't have semigroups included by default
# Older GHC versions need these additional dependencies.
ListLike = addBuildDepend super.ListLike self.semigroups;
base-compat-batteries = addBuildDepend super.base-compat-batteries self.contravariant;
}

View File

@@ -20,6 +20,7 @@ self: super: {
ghc-boot = null;
ghc-boot-th = null;
ghc-compact = null;
ghc-heap = null;
ghc-prim = null;
ghci = null;
haskeline = null;
@@ -39,6 +40,14 @@ self: super: {
unix = null;
xhtml = null;
# Needs Cabal 3.0.x.
cabal-install = super.cabal-install.overrideScope (self: super: { Cabal = self.Cabal_3_0_0_0; });
jailbreak-cabal = super.jailbreak-cabal.override { Cabal = self.Cabal_3_0_0_0; };
# Restricts aeson to <1.4
# https://github.com/purescript/purescript/pull/3537
purescript = doJailbreak super.purescript;
# https://github.com/jcristovao/enclosed-exceptions/issues/12
enclosed-exceptions = dontCheck super.enclosed-exceptions;
@@ -63,15 +72,15 @@ self: super: {
# more verbose but friendlier for Hydra.
stack = (doJailbreak super.stack).override {
Cabal = self.Cabal_2_4_1_0;
hpack = self.hpack_0_31_1.override { Cabal = self.Cabal_2_4_1_0; };
yaml = self.yaml_0_11_0_0;
hpack = self.hpack.override { Cabal = self.Cabal_2_4_1_0; };
hackage-security = self.hackage-security.override { Cabal = self.Cabal_2_4_1_0; };
};
hpack_0_31_1 = super.hpack_0_31_1.override {
yaml = self.yaml_0_11_0_0;
};
# cabal2nix doesn't list this because of a conditional on the GHC version.
# Older GHC versions need these additional dependencies.
aeson = addBuildDepend super.aeson self.contravariant;
base-compat-batteries = addBuildDepend super.base-compat-batteries self.contravariant;
# Newer versions don't compile.
resolv = self.resolv_0_1_1_2;
}

View File

@@ -4,8 +4,8 @@ with haskellLib;
self: super: {
# This compiler version needs llvm 5.x.
llvmPackages = pkgs.llvmPackages_5;
# This compiler version needs llvm 6.x.
llvmPackages = pkgs.llvmPackages_6;
# Disable GHC 8.6.x core libraries.
array = null;
@@ -41,11 +41,14 @@ self: super: {
unix = null;
xhtml = null;
# Needs Cabal 3.0.x.
cabal-install = super.cabal-install.overrideScope (self: super: { Cabal = self.Cabal_3_0_0_0; });
jailbreak-cabal = super.jailbreak-cabal.override { Cabal = self.Cabal_3_0_0_0; };
# https://github.com/tibbe/unordered-containers/issues/214
unordered-containers = dontCheck super.unordered-containers;
# Test suite does not compile.
cereal = dontCheck super.cereal;
data-clist = doJailbreak super.data-clist; # won't cope with QuickCheck 2.12.x
dates = doJailbreak super.dates; # base >=4.9 && <4.12
Diff = dontCheck super.Diff;
@@ -54,7 +57,6 @@ self: super: {
hpc-coveralls = doJailbreak super.hpc-coveralls; # https://github.com/guillaume-nargeot/hpc-coveralls/issues/82
http-api-data = doJailbreak super.http-api-data;
persistent-sqlite = dontCheck super.persistent-sqlite;
psqueues = dontCheck super.psqueues; # won't cope with QuickCheck 2.12.x
system-fileio = dontCheck super.system-fileio; # avoid dependency on broken "patience"
unicode-transforms = dontCheck super.unicode-transforms;
wl-pprint-extras = doJailbreak super.wl-pprint-extras; # containers >=0.4 && <0.6 is too tight; https://github.com/ekmett/wl-pprint-extras/issues/17
@@ -69,4 +71,28 @@ self: super: {
# Break out of "yaml >=0.10.4.0 && <0.11": https://github.com/commercialhaskell/stack/issues/4485
stack = doJailbreak super.stack;
# Needs a recent version from the "develop" branch of the upstream git
# repository to compile with ghc 8.6.4.
liquid-fixpoint = assert super.liquid-fixpoint.version == "0.7.0.7"; overrideSrc super.liquid-fixpoint {
src = pkgs.fetchFromGitHub {
owner = "ucsd-progsys";
repo = "liquid-fixpoint";
rev = "42c027ab9ae47907c588a2f1f9c05a5e0aa881e9";
sha256 = "17qmzq1vx7h04yd38drr6sh6hys3q2rz62qh3pna9kbxlcnikkqf";
};
version = "0.8.0.2-pre-release";
};
liquidhaskell = assert super.liquidhaskell.version == "0.8.2.4"; overrideSrc super.liquidhaskell {
src = pkgs.fetchFromGitHub {
owner = "ucsd-progsys";
repo = "liquidhaskell";
rev = "46f11e8faef006e70d39572d08419283b1280b88";
sha256 = "10z5r6g5acd43bsak762kwhy33ff262zmhs0wga545nbg29q1fyp";
};
version = "0.8.6.0-pre-release";
};
# Newer versions don't compile.
resolv = self.resolv_0_1_1_2;
}

View File

@@ -0,0 +1,172 @@
{ pkgs, haskellLib }:
with haskellLib;
self: super: {
# This compiler version needs llvm 7.x.
llvmPackages = pkgs.llvmPackages_7;
# Disable GHC 8.8.x core libraries.
array = null;
base = null;
binary = null;
bytestring = null;
Cabal = null;
containers = null;
deepseq = null;
directory = null;
filepath = null;
ghc-boot = null;
ghc-boot-th = null;
ghc-compact = null;
ghc-heap = null;
ghc-prim = null;
ghci = null;
haskeline = null;
hpc = null;
integer-gmp = null;
libiserv = null;
mtl = null;
parsec = null;
pretty = null;
process = null;
rts = null;
stm = null;
template-haskell = null;
terminfo = null;
text = null;
time = null;
transformers = null;
unix = null;
xhtml = null;
# Ignore overly restrictive upper version bounds.
async = doJailbreak super.async;
cabal-install = doJailbreak super.cabal-install;
ChasingBottoms = doJailbreak super.ChasingBottoms;
cryptohash-sha256 = doJailbreak super.cryptohash-sha256;
Diff = dontCheck super.Diff;
doctest = doJailbreak super.doctest;
hashable = doJailbreak super.hashable;
hashable-time = doJailbreak super.hashable-time;
hledger-lib = doJailbreak super.hledger-lib; # base >=4.8 && <4.13, easytest >=0.2.1 && <0.3
integer-logarithms = doJailbreak super.integer-logarithms;
lucid = doJailbreak super.lucid;
parallel = doJailbreak super.parallel;
quickcheck-instances = doJailbreak super.quickcheck-instances;
setlocale = doJailbreak super.setlocale;
split = doJailbreak super.split;
tasty-expected-failure = doJailbreak super.tasty-expected-failure;
test-framework = doJailbreak super.test-framework;
# These packages don't work and need patching and/or an update.
primitive = overrideSrc (doJailbreak super.primitive) {
version = "20180530-git";
src = pkgs.fetchFromGitHub {
owner = "haskell";
repo = "primitive";
rev = "97964182881aa0419546e0bb188b2d17e4468324";
sha256 = "1p1pinca33vd10iy7hl20c1fc99vharcgcai6z3ngqbq50k2pd3q";
};
};
vector-th-unbox = appendPatch super.vector-th-unbox (pkgs.fetchpatch {
url = "https://raw.githubusercontent.com/hvr/head.hackage/master/patches/vector-th-unbox-0.2.1.6.patch";
sha256 = "0169yf9ms1g5mmkc5l6hpffzm34zdrqdng4df02nbdmfgba45h19";
});
cabal-doctest = super.cabal-doctest_1_0_7;
regex-base = overrideCabal (appendPatch super.regex-base (pkgs.fetchpatch {
url = "https://raw.githubusercontent.com/hvr/head.hackage/master/patches/regex-base-0.93.2.patch";
sha256 = "01d1plrdx6hcspwn2h6y9pyi5366qk926vb5cl5qcl6x4m23l6y1";
})) (drv: {
preConfigure = "sed -i -e 's/base >=4 && < 4.13,/base,/' regex-base.cabal";
});
regex-posix = appendPatch super.regex-posix (pkgs.fetchpatch {
url = "https://raw.githubusercontent.com/hvr/head.hackage/master/patches/regex-posix-0.95.2.patch";
sha256 = "006yli58jpqp786zm1xlncjsilc38iv3a09r4pv94l587sdzasd2";
});
haskell-src-exts = appendPatch super.haskell-src-exts (pkgs.fetchpatch {
url = "https://raw.githubusercontent.com/hvr/head.hackage/master/patches/haskell-src-exts-1.21.0.patch";
sha256 = "0alb28hcsp774c9s73dgrajcb44vgv1xqfg2n5a9y2bpyngqscs3";
});
optparse-applicative = appendPatch (doJailbreak super.optparse-applicative) (pkgs.fetchpatch {
url = "https://raw.githubusercontent.com/hvr/head.hackage/master/patches/optparse-applicative-0.14.3.0.patch";
sha256 = "068sjj98jqiq3h8h03mg4w2pa11q8lxkx2i4lmxivq77xyhlwq3y";
});
hackage-security = appendPatch (doJailbreak super.hackage-security) (pkgs.fetchpatch {
url = "https://raw.githubusercontent.com/hvr/head.hackage/master/patches/hackage-security-0.5.3.0.patch";
sha256 = "0l8x0pbsn18fj5ak5q0g5rva4xw1s9yc4d86a1pfyaz467b9i5a4";
});
happy = appendPatch super.happy (pkgs.fetchpatch {
url = "https://raw.githubusercontent.com/hvr/head.hackage/master/patches/happy-1.19.11.patch";
sha256 = "16m659kxbq0s87ak2y1pqggfy67yfvcwc0zi3hcphf3v8735xhkk";
});
hedgehog = appendPatch super.hedgehog (pkgs.fetchpatch {
url = "https://raw.githubusercontent.com/hvr/head.hackage/master/patches/hedgehog-0.6.1.patch";
sha256 = "04xwznd3lfgracfz68ls6vfm19rhq8fb74r6ii0grpv6cx4rr21i";
});
easytest = self.easytest_0_3;
regex-tdfa = appendPatch super.regex-tdfa (pkgs.fetchpatch {
url = "https://raw.githubusercontent.com/hvr/head.hackage/master/patches/regex-tdfa-1.2.3.1.patch";
sha256 = "1lhas4s2ms666prb475gaw2bqw1v4y8cxi66sy20j727sx7ppjs7";
});
attoparsec = appendPatch (doJailbreak super.attoparsec) (pkgs.fetchpatch {
url = "https://raw.githubusercontent.com/hvr/head.hackage/master/patches/attoparsec-0.13.2.2.patch";
sha256 = "13i1p5g0xzxnv966nlyb77mfmxvg9jzbym1d36h1ajn045yf4igl";
});
cassava = appendPatch super.cassava (pkgs.fetchpatch {
url = "https://raw.githubusercontent.com/hvr/head.hackage/master/patches/cassava-0.5.1.0.patch";
sha256 = "11scwwjp94si90vb8v5yr291g9qwv5l223z8y0g0lc63932bp63g";
});
shakespeare = appendPatch super.shakespeare (pkgs.fetchpatch {
url = "https://raw.githubusercontent.com/hvr/head.hackage/master/patches/shakespeare-2.0.20.patch";
sha256 = "1dgx41ylahj4wk8r422aik0d7qdpawdga4gqz905nvlnhqjla58y";
});
socks = appendPatch super.socks (pkgs.fetchpatch {
url = "https://raw.githubusercontent.com/hvr/head.hackage/master/patches/socks-0.6.0.patch";
sha256 = "1dsqmx0sw62x4glh43c0sbizd2y00v5xybiqadn96v6pmfrap5cp";
});
lens = appendPatch (doJailbreak super.lens) (pkgs.fetchpatch {
url = "https://raw.githubusercontent.com/hvr/head.hackage/master/patches/lens-4.17.1.patch";
sha256 = "0w89ipi6dfkx5vlw4a64hh6fd0bm9hg33mwpghliyyxik5jmilv1";
});
polyparse = appendPatch (doJailbreak super.polyparse) (pkgs.fetchpatch {
url = "https://raw.githubusercontent.com/hvr/head.hackage/master/patches/polyparse-1.12.1.patch";
sha256 = "01b2gnsq0x4fd9na8zpk6pajym55mbz64hgzawlwxdw0y6681kr5";
});
foundation = dontCheck super.foundation;
memory = overrideCabal (appendPatch super.memory (pkgs.fetchpatch {
url = "https://raw.githubusercontent.com/hvr/head.hackage/master/patches/memory-0.14.18.patch";
sha256 = "16ar8921s3bi31y1az9zgyg0iaxxc2wvvwqjnl11a17p03wi6b29";
})) (drv: {
editedCabalFile = null;
preConfigure = ''
cp -v ${pkgs.fetchurl {url = "https://raw.githubusercontent.com/hvr/head.hackage/master/patches/memory-0.14.18.cabal"; sha256 = "1325wny0irnq51rz0f4xgkvm01p6n4z5jid2jgpkhjac8a2sdgwl";}} memory.cabal
'';
});
chell = overrideCabal (doJailbreak super.chell) (_drv: {
broken = false;
});
th-expand-syns = doJailbreak super.th-expand-syns;
shelly = overrideCabal (appendPatch (doJailbreak super.shelly) (pkgs.fetchpatch {
url = "https://raw.githubusercontent.com/hvr/head.hackage/master/patches/shelly-1.8.1.patch";
sha256 = "1kglbwrr4ra81v9x3bfsk5l6pyl0my2a1zkr3qjjx7acn0dfpgbc";
})) (drv: {
editedCabalFile = null;
preConfigure = ''
cp -v ${pkgs.fetchurl {url = "https://raw.githubusercontent.com/hvr/head.hackage/master/patches/shelly-1.8.1.cabal"; sha256 = "0crf0m077wky76f5nav2p9q4fa5q4yhv5l4bq9hd073dzdaywhz0";}} shelly.cabal
sed -i -e 's/< 1.9,/< 2,/' shelly.cabal # bump time version
'';
});
system-fileio = doJailbreak super.system-fileio;
yaml = self.yaml_0_11_1_2;
haskell-src-meta = appendPatch (dontCheck (doJailbreak super.haskell-src-meta)) (pkgs.fetchpatch {
url = "https://gitlab.haskell.org/ghc/head.hackage/raw/master/patches/haskell-src-meta-0.8.2.patch";
sha256 = "146im1amywyl29kcldvgrxpwj22lrpzxysl7vc8rmn3hrq130dyc";
});
asn1-encoding = appendPatch (dontCheck (doJailbreak super.asn1-encoding)) (pkgs.fetchpatch {
url = "https://gitlab.haskell.org/ghc/head.hackage/raw/master/patches/asn1-encoding-0.9.5.patch";
sha256 = "0a3159rnaw6shjzdm46799crd4pxh33s23qy51xa7z6nv5q8wsb5";
});
tls = self.tls_1_5_1;
}

View File

@@ -52,7 +52,6 @@ self: super: {
unordered-containers = dontCheck super.unordered-containers;
# Test suite does not compile.
cereal = dontCheck super.cereal;
data-clist = doJailbreak super.data-clist; # won't cope with QuickCheck 2.12.x
dates = doJailbreak super.dates; # base >=4.9 && <4.12
Diff = dontCheck super.Diff;
@@ -60,7 +59,6 @@ self: super: {
hpc-coveralls = doJailbreak super.hpc-coveralls; # https://github.com/guillaume-nargeot/hpc-coveralls/issues/82
http-api-data = doJailbreak super.http-api-data;
persistent-sqlite = dontCheck super.persistent-sqlite;
psqueues = dontCheck super.psqueues; # won't cope with QuickCheck 2.12.x
system-fileio = dontCheck super.system-fileio; # avoid dependency on broken "patience"
unicode-transforms = dontCheck super.unicode-transforms;
wl-pprint-extras = doJailbreak super.wl-pprint-extras; # containers >=0.4 && <0.6 is too tight; https://github.com/ekmett/wl-pprint-extras/issues/17

File diff suppressed because it is too large Load Diff

View File

@@ -94,6 +94,14 @@ self: super: builtins.intersectAttrs super {
# Won't find it's header files without help.
sfml-audio = appendConfigureFlag super.sfml-audio "--extra-include-dirs=${pkgs.openal}/include/AL";
cachix = overrideCabal (addBuildTools (enableSeparateBinOutput super.cachix) [pkgs.boost]) (drv: {
postPatch = (drv.postPatch or "") + ''
substituteInPlace cachix.cabal --replace "c++14" "c++17"
'';
});
ghcid = enableSeparateBinOutput super.ghcid;
hzk = overrideCabal super.hzk (drv: {
preConfigure = "sed -i -e /include-dirs/d hzk.cabal";
configureFlags = "--extra-include-dirs=${pkgs.zookeeper_mt}/include/zookeeper";
@@ -128,17 +136,18 @@ self: super: builtins.intersectAttrs super {
# Prevents needing to add `security_tool` as a run-time dependency for
# everything using x509-system to give access to the `security` executable.
x509-system = if pkgs.stdenv.hostPlatform.isDarwin && !pkgs.stdenv.cc.nativeLibc
then let inherit (pkgs.darwin) security_tool;
in pkgs.lib.overrideDerivation (addBuildDepend super.x509-system security_tool) (drv: {
# darwin.security_tool is broken in Mojave (#45042)
x509-system =
if pkgs.stdenv.hostPlatform.isDarwin && !pkgs.stdenv.cc.nativeLibc
then
# darwin.security_tool is broken in Mojave (#45042)
# We will use the system provided security for now.
# Beware this WILL break in sandboxes!
# We will use the system provided security for now.
# Beware this WILL break in sandboxes!
# TODO(matthewbauer): If someone really needs this to work in sandboxes,
# I think we can add a propagatedImpureHost dep here, but Im hoping to
# get a proper fix available soonish.
# TODO(matthewbauer): If someone really needs this to work in sandboxes,
# I think we can add a propagatedImpureHost dep here, but Im hoping to
# get a proper fix available soonish.
overrideCabal super.x509-system (drv: {
postPatch = (drv.postPatch or "") + ''
substituteInPlace System/X509/MacOS.hs --replace security /usr/bin/security
'';
@@ -276,9 +285,7 @@ self: super: builtins.intersectAttrs super {
let dontCheckDarwin = if pkgs.stdenv.isDarwin
then dontCheck
else pkgs.lib.id;
in dontCheckDarwin (super.llvm-hs.override {
llvm-config = pkgs.llvm_6;
});
in dontCheckDarwin (super.llvm-hs.override { llvm-config = pkgs.llvm_8; });
# Needs help finding LLVM.
spaceprobe = addBuildTool super.spaceprobe self.llvmPackages.llvm;
@@ -286,7 +293,7 @@ self: super: builtins.intersectAttrs super {
# Tries to run GUI in tests
leksah = dontCheck (overrideCabal super.leksah (drv: {
executableSystemDepends = (drv.executableSystemDepends or []) ++ (with pkgs; [
gnome3.defaultIconTheme # Fix error: Icon 'window-close' not present in theme ...
gnome3.adwaita-icon-theme # Fix error: Icon 'window-close' not present in theme ...
wrapGAppsHook # Fix error: GLib-GIO-ERROR **: No GSettings schemas are installed on the system
gtk3 # Fix error: GLib-GIO-ERROR **: Settings schema 'org.gtk.Settings.FileChooser' is not installed
]);
@@ -487,6 +494,13 @@ self: super: builtins.intersectAttrs super {
# https://github.com/plow-technologies/servant-streaming/issues/12
servant-streaming-server = dontCheck super.servant-streaming-server;
# https://github.com/haskell-servant/servant/pull/1128
servant-client-core = if (pkgs.lib.getVersion super.servant-client-core) == "0.15" then
appendPatch super.servant-client-core ./patches/servant-client-core-streamBody.patch
else
super.servant-client-core;
# tests run executable, relying on PATH
# without this, tests fail with "Couldn't launch intero process"
intero = overrideCabal super.intero (drv: {
@@ -495,6 +509,12 @@ self: super: builtins.intersectAttrs super {
'';
});
# Break infinite recursion cycle between QuickCheck and splitmix.
splitmix = dontCheck super.splitmix;
# Break infinite recursion cycle between tasty and clock.
clock = dontCheck super.clock;
# loc and loc-test depend on each other for testing. Break that infinite cycle:
loc-test = super.loc-test.override { loc = dontCheck self.loc; };
@@ -516,10 +536,6 @@ self: super: builtins.intersectAttrs super {
librarySystemDepends = drv.librarySystemDepends or [] ++ [ pkgs.cyrus_sasl.dev ];
}));
# Doctests hang only when compiling with nix.
# https://github.com/cdepillabout/termonad/issues/15
termonad = dontCheck super.termonad;
# Expects z3 to be on path so we replace it with a hard
sbv = overrideCabal super.sbv (drv: {
postPatch = ''
@@ -533,10 +549,7 @@ self: super: builtins.intersectAttrs super {
let path = stdenv.lib.makeBinPath [ gcc ];
in overrideCabal (addBuildTool super.futhark makeWrapper) (_drv: {
postInstall = ''
wrapProgram $out/bin/futhark-c \
--prefix PATH : "${path}"
wrapProgram $out/bin/futhark-opencl \
wrapProgram $out/bin/futhark \
--prefix PATH : "${path}" \
--set NIX_CC_WRAPPER_x86_64_unknown_linux_gnu_TARGET_HOST 1 \
--set NIX_CFLAGS_COMPILE "-I${opencl-headers}/include" \
@@ -566,4 +579,18 @@ self: super: builtins.intersectAttrs super {
# Avoid infitite recursion with tonatona.
tonaparser = dontCheck super.tonaparser;
# Needs internet to run tests
HTTP = dontCheck super.HTTP;
# Break infinite recursions.
Dust-crypto = dontCheck super.Dust-crypto;
nanospec = dontCheck super.nanospec;
options = dontCheck super.options;
snap-server = dontCheck super.snap-server;
# Tests require internet
dhall_1_25_0 = dontCheck super.dhall_1_25_0;
http-download = dontCheck super.http-download;
pantry = dontCheck super.pantry;
}

View File

@@ -19,6 +19,7 @@ in
, buildTools ? [], libraryToolDepends ? [], executableToolDepends ? [], testToolDepends ? [], benchmarkToolDepends ? []
, configureFlags ? []
, buildFlags ? []
, haddockFlags ? []
, description ? ""
, doCheck ? !isCross && stdenv.lib.versionOlder "7.4" ghc.version
, doBenchmark ? false
@@ -39,7 +40,7 @@ in
# They must be propagated to the environment of any executable linking with the library
, libraryFrameworkDepends ? [], executableFrameworkDepends ? []
, homepage ? "https://hackage.haskell.org/package/${pname}"
, platforms ? with stdenv.lib.platforms; unix ++ windows # GHC can cross-compile
, platforms ? with stdenv.lib.platforms; all # GHC can cross-compile
, hydraPlatforms ? null
, hyperlinkSource ? true
, isExecutable ? false, isLibrary ? !isExecutable
@@ -72,6 +73,7 @@ in
, coreSetup ? false # Use only core packages to build Setup.hs.
, useCpphs ? false
, hardeningDisable ? stdenv.lib.optional (ghc.isHaLVM or false) "all"
, enableSeparateBinOutput ? false
, enableSeparateDataOutput ? false
, enableSeparateDocOutput ? doHaddock
, # Don't fail at configure time if there are multiple versions of the
@@ -79,6 +81,10 @@ in
# built. Will delay failures, if any, to compile time.
allowInconsistentDependencies ? false
, maxBuildCores ? 4 # GHC usually suffers beyond -j4. https://ghc.haskell.org/trac/ghc/ticket/9221
, # If set to true, this builds a pre-linked .o file for this Haskell library.
# This can make it slightly faster to load this library into GHCi, but takes
# extra disk space and compile time.
enableLibraryForGhci ? false
} @ args:
assert editedCabalFile != null -> revision != null;
@@ -90,7 +96,7 @@ assert stdenv.hostPlatform.isWindows -> enableStaticLibraries == false;
let
inherit (stdenv.lib) optional optionals optionalString versionOlder versionAtLeast
concatStringsSep enableFeature optionalAttrs toUpper;
concatStringsSep enableFeature optionalAttrs;
isGhcjs = ghc.isGhcjs or false;
isHaLVM = ghc.isHaLVM or false;
@@ -110,7 +116,9 @@ let
# the target dir for haddock documentation
docdir = docoutput: docoutput + "/share/doc/" + pname + "-" + version;
newCabalFileUrl = "http://hackage.haskell.org/package/${pname}-${version}/revision/${revision}.cabal";
binDir = if enableSeparateBinOutput then "$bin/bin" else "$out/bin";
newCabalFileUrl = "mirror://hackage/${pname}-${version}/revision/${revision}.cabal";
newCabalFile = fetchurl {
url = newCabalFileUrl;
sha256 = editedCabalFile;
@@ -123,9 +131,13 @@ let
'';
crossCabalFlags = [
"--with-ghc=${ghc.targetPrefix}ghc"
"--with-ghc=${ghcCommand}"
"--with-ghc-pkg=${ghc.targetPrefix}ghc-pkg"
"--with-gcc=${stdenv.cc.targetPrefix}cc"
# Pass the "wrong" C compiler rather than none at all so packages that just
# use the C preproccessor still work, see
# https://github.com/haskell/cabal/issues/6466 for details.
"--with-gcc=${(if stdenv.hasCC then stdenv else buildPackages.stdenv).cc.targetPrefix}cc"
] ++ optionals stdenv.hasCC [
"--with-ld=${stdenv.cc.bintools.targetPrefix}ld"
"--with-ar=${stdenv.cc.bintools.targetPrefix}ar"
# use the one that comes with the cross compiler.
@@ -142,10 +154,15 @@ let
buildFlagsString = optionalString (buildFlags != []) (" " + concatStringsSep " " buildFlags);
defaultConfigureFlags = [
"--verbose" "--prefix=$out" "--libdir=\\$prefix/lib/\\$compiler" "--libsubdir=\\$abi/\\$libname"
"--verbose"
"--prefix=$out"
"--libdir=\\$prefix/lib/\\$compiler"
"--libsubdir=\\$abi/\\$libname"
(optionalString enableSeparateDataOutput "--datadir=$data/share/${ghc.name}")
(optionalString enableSeparateDocOutput "--docdir=${docdir "$doc"}")
] ++ optionals stdenv.hasCC [
"--with-gcc=$CC" # Clang won't work without that extra information.
] ++ [
"--package-db=$packageConfDir"
(optionalString (enableSharedExecutables && stdenv.isLinux) "--ghc-option=-optl=-Wl,-rpath=$out/lib/${ghc.name}/${pname}-${version}")
(optionalString (enableSharedExecutables && stdenv.isDarwin) "--ghc-option=-optl=-Wl,-headerpad_max_install_names")
@@ -162,7 +179,7 @@ let
(optionalString (isGhcjs || versionOlder "7" ghc.version) (enableFeature doCheck "tests"))
(enableFeature doBenchmark "benchmarks")
"--enable-library-vanilla" # TODO: Should this be configurable?
"--enable-library-for-ghci" # TODO: Should this be configurable?
(enableFeature enableLibraryForGhci "library-for-ghci")
] ++ optionals (enableDeadCodeElimination && (stdenv.lib.versionOlder "8.0.1" ghc.version)) [
"--ghc-option=-split-sections"
] ++ optionals dontStrip [
@@ -172,7 +189,8 @@ let
"--ghcjs"
] ++ optionals isCross ([
"--configure-option=--host=${stdenv.hostPlatform.config}"
] ++ crossCabalFlags);
] ++ crossCabalFlags
) ++ optionals enableSeparateBinOutput ["--bindir=${binDir}"];
setupCompileFlags = [
(optionalString (!coreSetup) "-${nativePackageDbFlag}=$setupPackageConfDir")
@@ -211,7 +229,16 @@ let
nativeGhcCommand = "${nativeGhc.targetPrefix}ghc";
buildPkgDb = ghcName: packageConfDir: ''
if [ -d "$p/lib/${ghcName}/package.conf.d" ]; then
# If this dependency has a package database, then copy the contents of it,
# unless it is one of our GHCs. These can appear in our dependencies when
# we are doing native builds, and they have package databases in them, but
# we do not want to copy them over.
#
# We don't need to, since those packages will be provided by the GHC when
# we compile with it, and doing so can result in having multiple copies of
# e.g. Cabal in the database with the same name and version, which is
# ambiguous.
if [ -d "$p/lib/${ghcName}/package.conf.d" ] && [ "$p" != "${ghc}" ] && [ "$p" != "${nativeGhc}" ]; then
cp -f "$p/lib/${ghcName}/package.conf.d/"*.conf ${packageConfDir}/
continue
fi
@@ -223,7 +250,10 @@ assert allPkgconfigDepends != [] -> pkgconfig != null;
stdenv.mkDerivation ({
name = "${pname}-${version}";
outputs = [ "out" ] ++ (optional enableSeparateDataOutput "data") ++ (optional enableSeparateDocOutput "doc");
outputs = [ "out" ]
++ (optional enableSeparateDataOutput "data")
++ (optional enableSeparateDocOutput "doc")
++ (optional enableSeparateBinOutput "bin");
setOutputFlags = false;
pos = builtins.unsafeGetAttrPos "pname" args;
@@ -372,7 +402,8 @@ stdenv.mkDerivation ({
${optionalString (doHaddock && isLibrary) ''
${setupCommand} haddock --html \
${optionalString doHoogle "--hoogle"} \
${optionalString (isLibrary && hyperlinkSource) "--hyperlink-source"}
${optionalString (isLibrary && hyperlinkSource) "--hyperlink-source"} \
${stdenv.lib.concatStringsSep " " haddockFlags}
''}
runHook postHaddock
'';
@@ -403,7 +434,7 @@ stdenv.mkDerivation ({
find $packageConfDir -maxdepth 0 -empty -delete;
''}
${optionalString isGhcjs ''
for exeDir in "$out/bin/"*.jsexe; do
for exeDir in "${binDir}/"*.jsexe; do
exe="''${exeDir%.jsexe}"
printWords '#!${nodejs}/bin/node' > "$exe"
echo >> "$exe"
@@ -413,7 +444,7 @@ stdenv.mkDerivation ({
''}
${optionalString doCoverage "mkdir -p $out/share && cp -r dist/hpc $out/share"}
${optionalString (enableSharedExecutables && isExecutable && !isGhcjs && stdenv.isDarwin && stdenv.lib.versionOlder ghc.version "7.10") ''
for exe in "$out/bin/"* ; do
for exe in "${binDir}/"* ; do
install_name_tool -add_rpath "$out/lib/ghc-${ghc.version}/${pname}-${version}" "$exe"
done
''}

View File

@@ -2,6 +2,7 @@
, cacert, stack, makeSetupHook, lib }@depArgs:
{ buildInputs ? []
, nativeBuildInputs ? []
, extraArgs ? []
, LD_LIBRARY_PATH ? []
, ghc ? depArgs.ghc
@@ -22,7 +23,8 @@ in stdenv.mkDerivation (args // {
buildInputs = buildInputs
++ lib.optional (stdenv.hostPlatform.libc == "glibc") glibcLocales;
nativeBuildInputs = [ ghc pkgconfig stack stackHook ];
nativeBuildInputs = nativeBuildInputs
++ [ ghc pkgconfig stack stackHook ];
STACK_PLATFORM_VARIANT = "nix";
STACK_IN_NIX_SHELL = 1;

File diff suppressed because it is too large Load Diff

View File

@@ -23,7 +23,8 @@
# This will build mmorph and monadControl, and have the hoogle installation
# refer to their documentation via symlink so they are not garbage collected.
{ lib, stdenv, hoogle, writeText, ghc
{ lib, stdenv, buildPackages
, hoogle, writeText, ghc
, packages
}:
@@ -53,15 +54,15 @@ let
(map (lib.getOutput "doc") packages);
in
stdenv.mkDerivation {
buildPackages.stdenv.mkDerivation {
name = "hoogle-local-0.1";
buildInputs = [ghc hoogle];
phases = [ "buildPhase" ];
inherit docPackages;
buildPhase = ''
passAsFile = ["buildCommand"];
buildCommand = ''
${lib.optionalString (packages != [] -> docPackages == [])
("echo WARNING: localHoogle package list empty, even though"
+ " the following were specified: "

View File

@@ -161,7 +161,9 @@ rec {
disableCabalFlag = drv: x: appendConfigureFlag (removeConfigureFlag drv "-f${x}") "-f-${x}";
markBroken = drv: overrideCabal drv (drv: { broken = true; hydraPlatforms = []; });
unmarkBroken = drv: overrideCabal drv (drv: { broken = false; });
markBrokenVersion = version: drv: assert drv.version == version; markBroken drv;
markUnbroken = drv: overrideCabal drv (drv: { broken = false; });
enableLibraryProfiling = drv: overrideCabal drv (drv: { enableLibraryProfiling = true; });
disableLibraryProfiling = drv: overrideCabal drv (drv: { enableLibraryProfiling = false; });
@@ -181,6 +183,8 @@ rec {
enableStaticLibraries = drv: overrideCabal drv (drv: { enableStaticLibraries = true; });
disableStaticLibraries = drv: overrideCabal drv (drv: { enableStaticLibraries = false; });
enableSeparateBinOutput = drv: overrideCabal drv (drv: { enableSeparateBinOutput = true; });
appendPatch = drv: x: appendPatches drv [x];
appendPatches = drv: xs: overrideCabal drv (drv: { patches = (drv.patches or []) ++ xs; });

View File

@@ -118,9 +118,10 @@ let
inherit packages;
};
# Use cabal2nix to create a default.nix for the package sources found at 'src'.
haskellSrc2nix = { name, src, sha256 ? null, extraCabal2nixOptions ? "" }:
let
sha256Arg = if isNull sha256 then "--sha256=" else ''--sha256="${sha256}"'';
sha256Arg = if sha256 == null then "--sha256=" else ''--sha256="${sha256}"'';
in pkgs.buildPackages.stdenv.mkDerivation {
name = "cabal2nix-${name}";
nativeBuildInputs = [ pkgs.buildPackages.cabal2nix ];
@@ -174,16 +175,22 @@ in package-set { inherit pkgs stdenv callPackage; } self // {
inherit (haskellLib) packageSourceOverrides;
# callHackage :: Text -> Text -> AttrSet -> HaskellPackage
#
# e.g., while overriding a package set:
# '... foo = self.callHackage "foo" "1.5.3" {}; ...'
callHackage = name: version: callPackageKeepDeriver (self.hackage2nix name version);
# callHackageDirect :: Text -> Text -> AttrSet -> HaskellPackage
#
# This function does not depend on all-cabal-hashes and therefore will work
# for any version that has been released on hackage as opposed to only
# versions released before whatever version of all-cabal-hashes you happen
# to be currently using.
callHackageDirect = {pkg, ver, sha256}@args:
callHackageDirect = {pkg, ver, sha256}:
let pkgver = "${pkg}-${ver}";
in self.callCabal2nix pkg (pkgs.fetchzip {
url = "http://hackage.haskell.org/package/${pkgver}/${pkgver}.tar.gz";
url = "mirror://hackage/${pkgver}/${pkgver}.tar.gz";
inherit sha256;
});

View File

@@ -12,4 +12,5 @@ self: super: {
# https://github.com/channable/vaultenv/issues/1
vaultenv = self.callPackage ../tools/haskell/vaultenv { };
}

View File

@@ -1,37 +0,0 @@
diff --git a/Setup.hs b/Setup.hs
index ddf5a02..7ad1f26 100644
--- a/Setup.hs
+++ b/Setup.hs
@@ -1,4 +1,4 @@
-
+{-# LANGUAGE CPP #-}
import Control.Monad (when)
import Language.Haskell.TH
import Distribution.Simple (defaultMainWithHooks, simpleUserHooks, UserHooks(postConf), Args)
@@ -6,14 +6,25 @@ import Distribution.Simple.Utils (cabalVersion)
import Distribution.Simple.LocalBuildInfo
import Distribution.Simple.Setup (ConfigFlags)
import Distribution.Version (Version(..))
+#if MIN_VERSION_Cabal(1,25,0)
+import Distribution.Version (mkVersion)
+#endif
import Distribution.PackageDescription (PackageDescription)
import Debug.Trace
+#if MIN_VERSION_Cabal(1,25,0)
+versionBranch :: Version -> Version
+versionBranch = id
+#else
+mkVersion :: [Int] -> Version
+mkVersion vs = Version vs []
+#endif
+
-- I couldn't figure out a way to do this check from the cabal file, so we drop down
-- here to do it instead:
checkGoodVersion :: IO ()
checkGoodVersion =
- if cabalVersion >= Version [1,17,0] []
+ if cabalVersion >= mkVersion [1,17,0]
then putStrLn (" [Setup.hs] This version of Cabal is ok for profiling: "++show cabalVersion)
else error (" [Setup.hs] This package should not be used in profiling mode with cabal version "++
show (versionBranch cabalVersion)++" < 1.17.0\n"++

View File

@@ -1,72 +0,0 @@
diff --git a/beam-core/Database/Beam/Backend/SQL.hs b/beam-core/Database/Beam/Backend/SQL.hs
index e2cd37d0..6f9db126 100644
--- a/Database/Beam/Backend/SQL.hs
+++ b/Database/Beam/Backend/SQL.hs
@@ -10,6 +10,7 @@
import Database.Beam.Backend.Types
import Control.Monad.IO.Class
+import Control.Monad.Fail (MonadFail)
-- * MonadBeam class
@@ -29,7 +30,7 @@
-- strategies. More complicated strategies (for example, Postgres's @COPY@)
-- are supported in individual backends. See the documentation of those
-- backends for more details.
-class (BeamBackend be, Monad m, MonadIO m, Sql92SanityCheck syntax) =>
+class (BeamBackend be, Monad m, MonadIO m, MonadFail m, Sql92SanityCheck syntax) =>
MonadBeam syntax be handle m | m -> syntax be handle where
{-# MINIMAL withDatabaseDebug, runReturningMany #-}
diff --git a/Database/Beam/Backend/SQL/Builder.hs b/Database/Beam/Backend/SQL/Builder.hs
index 9e734036..e9849912 100644
--- a/Database/Beam/Backend/SQL/Builder.hs
+++ b/Database/Beam/Backend/SQL/Builder.hs
@@ -33,6 +33,7 @@
import Data.Hashable
import Data.Int
import Data.String
+import qualified Control.Monad.Fail as Fail
#if !MIN_VERSION_base(4, 11, 0)
import Data.Semigroup
#endif
@@ -507,8 +508,10 @@
type BackendFromField SqlSyntaxBackend = Trivial
newtype SqlSyntaxM a = SqlSyntaxM (IO a)
- deriving (Applicative, Functor, Monad, MonadIO)
+ deriving (Applicative, Functor, Monad, MonadIO, Fail.MonadFail)
instance MonadBeam SqlSyntaxBuilder SqlSyntaxBackend SqlSyntaxBackend SqlSyntaxM where
- withDatabaseDebug _ _ _ = fail "absurd"
- runReturningMany _ _ = fail "absurd"
+ withDatabaseDebug _ _ _ = Fail.fail "absurd"
+ runReturningMany _ _ = Fail.fail "absurd"
+
+
diff --git a/Database/Beam/Schema/Lenses.hs b/Database/Beam/Schema/Lenses.hs
index b21dddb6..5df0654c 100644
--- a/Database/Beam/Schema/Lenses.hs
+++ b/Database/Beam/Schema/Lenses.hs
@@ -1,4 +1,5 @@
{-# LANGUAGE PolyKinds #-}
+{-# LANGUAGE UndecidableInstances #-}
module Database.Beam.Schema.Lenses
( tableLenses
, TableLens(..)
diff --git a/beam-core.cabal b/beam-core.cabal
index 4bf4ffd9..251d4d85 100644
--- a/beam-core.cabal
+++ b/beam-core.cabal
@@ -64,8 +64,8 @@
time >=1.6 && <1.10,
hashable >=1.1 && <1.3,
network-uri >=2.6 && <2.7,
- containers >=0.5 && <0.6,
- vector-sized >=0.5 && <1.1,
+ containers >=0.5 && <0.7,
+ vector-sized >=0.5 && <1.3,
tagged >=0.8 && <0.9
Default-language: Haskell2010
default-extensions: ScopedTypeVariables, OverloadedStrings, GADTs, RecursiveDo, FlexibleInstances, FlexibleContexts, TypeFamilies,

View File

@@ -1,29 +0,0 @@
diff --git a/Database/Beam/Migrate/Generics/Types.hs b/Database/Beam/Migrate/Generics/Types.hs
index 553e208b..0cf9b2c8 100644
--- a/Database/Beam/Migrate/Generics/Types.hs
+++ b/Database/Beam/Migrate/Generics/Types.hs
@@ -1,3 +1,5 @@
+{-# LANGUAGE UndecidableInstances #-}
+
module Database.Beam.Migrate.Generics.Types where
import Database.Beam.Migrate.Types
diff --git a/beam-migrate.cabal b/beam-migrate.cabal
index f53b280d..9cf3722c 100644
--- a/beam-migrate.cabal
+++ b/beam-migrate.cabal
@@ -69,13 +69,12 @@ library
mtl >=2.2 && <2.3,
scientific >=0.3 && <0.4,
vector >=0.11 && <0.13,
- containers >=0.5 && <0.6,
unordered-containers >=0.2 && <0.3,
hashable >=1.2 && <1.3,
parallel >=3.2 && <3.3,
deepseq >=1.4 && <1.5,
ghc-prim >=0.5 && <0.6,
- containers >=0.5 && <0.6,
+ containers >=0.5 && <0.7,
haskell-src-exts >=1.18 && <1.21,
pretty >=1.1 && <1.2,
dependent-map >=0.2 && <0.3,

View File

@@ -1,45 +0,0 @@
diff --git a/Database/Beam/Postgres/Connection.hs b/Database/Beam/Postgres/Connection.hs
index 433f55b9..5836c53d 100644
--- a/Database/Beam/Postgres/Connection.hs
+++ b/Database/Beam/Postgres/Connection.hs
@@ -52,6 +52,8 @@ import qualified Database.PostgreSQL.Simple.Types as Pg (Null(..), Query(..))
import Control.Monad.Reader
import Control.Monad.State
+import Control.Monad.Fail (MonadFail)
+import qualified Control.Monad.Fail as Fail
import Data.ByteString (ByteString)
import Data.ByteString.Builder (toLazyByteString, byteString)
@@ -302,6 +304,9 @@ deriving instance Functor PgF
newtype Pg a = Pg { runPg :: F PgF a }
deriving (Monad, Applicative, Functor, MonadFree PgF)
+instance MonadFail Pg where
+ fail e = fail $ "Internal Error with: " <> show e
+
instance MonadIO Pg where
liftIO x = liftF (PgLiftIO x id)
diff --git a/beam-postgres.cabal b/beam-postgres.cabal
index e14b84f5..d29a5b67 100644
--- a/beam-postgres.cabal
+++ b/beam-postgres.cabal
@@ -31,7 +31,7 @@ library
beam-migrate >=0.3 && <0.4,
postgresql-libpq >=0.8 && <0.10,
- postgresql-simple >=0.5 && <0.6,
+ postgresql-simple >=0.5 && <0.7,
text >=1.0 && <1.3,
bytestring >=0.10 && <0.11,
@@ -38,7 +38,7 @@ library
hashable >=1.1 && <1.3,
lifted-base >=0.2 && <0.3,
- free >=4.12 && <5.1,
+ free >=4.12 && <5.2,
time >=1.6 && <1.10,
monad-control >=1.0 && <1.1,
mtl >=2.1 && <2.3,

View File

@@ -1,21 +0,0 @@
diff --git a/Database/Beam/Sqlite/Connection.hs b/Database/Beam/Sqlite/Connection.hs
index f034b272..4e459ea3 100644
--- a/Database/Beam/Sqlite/Connection.hs
+++ b/Database/Beam/Sqlite/Connection.hs
@@ -37,6 +37,7 @@ import Database.SQLite.Simple.Types (Null)
import Control.Exception (bracket_, onException, mask)
import Control.Monad (forM_, replicateM_)
+import Control.Monad.Fail (MonadFail)
import Control.Monad.Free.Church
import Control.Monad.IO.Class (MonadIO(..))
import Control.Monad.Identity (Identity)
@@ -143,7 +144,7 @@ newtype SqliteM a
{ runSqliteM :: ReaderT (String -> IO (), Connection) IO a
-- ^ Run an IO action with access to a SQLite connection and a debug logging
-- function, called or each query submitted on the connection.
- } deriving (Monad, Functor, Applicative, MonadIO)
+ } deriving (Monad, Functor, Applicative, MonadIO, MonadFail)
newtype BeamSqliteParams = BeamSqliteParams [SQLData]
instance ToRow BeamSqliteParams where

View File

@@ -1,11 +0,0 @@
diff -ru3 graphviz.old/Data/GraphViz/Algorithms.hs graphviz/Data/GraphViz/Algorithms.hs
--- graphviz.old/Data/GraphViz/Algorithms.hs 2015-05-18 15:21:38.379771357 +0300
+++ graphviz/Data/GraphViz/Algorithms.hs 2015-05-18 15:01:01.940122684 +0300
@@ -38,6 +38,7 @@
import Data.GraphViz.Types.Canonical
import Data.GraphViz.Types.Internal.Common
+import Prelude hiding (traverse)
import Control.Arrow (first, second, (***))
import Control.Monad (unless)
import Control.Monad.Trans.State

View File

@@ -1,40 +0,0 @@
diff --git a/test/HaRePluginSpec.hs b/test/HaRePluginSpec.hs
index 039c094..d0d1fa4 100644
--- a/test/HaRePluginSpec.hs
+++ b/test/HaRePluginSpec.hs
@@ -326,35 +326,6 @@ hareSpec = do
$ List [TextEdit (Range (Position 4 0) (Position 8 12))
"parseStr = char '\"' *> (many1 (noneOf \"\\\"\")) <* char '\"'"])
Nothing)
- it "finds definition across components" $ do
- let u = filePathToUri "./app/Main.hs"
- let lreq = setTypecheckedModule u
- let req = findDef u (toPos (7,8))
- r <- dispatchRequestPGoto $ lreq >> req
- r `shouldBe` IdeResponseOk [Location (filePathToUri $ cwd </> "test/testdata/gototest/src/Lib.hs")
- (Range (toPos (6,1)) (toPos (6,9)))]
- let req2 = findDef u (toPos (7,20))
- r2 <- dispatchRequestPGoto $ lreq >> req2
- r2 `shouldBe` IdeResponseOk [Location (filePathToUri $ cwd </> "test/testdata/gototest/src/Lib2.hs")
- (Range (toPos (5,1)) (toPos (5,2)))]
- it "finds definition in the same component" $ do
- let u = filePathToUri "./src/Lib2.hs"
- let lreq = setTypecheckedModule u
- let req = findDef u (toPos (6,5))
- r <- dispatchRequestPGoto $ lreq >> req
- r `shouldBe` IdeResponseOk [Location (filePathToUri $ cwd </> "test/testdata/gototest/src/Lib.hs")
- (Range (toPos (6,1)) (toPos (6,9)))]
- it "finds local definitions" $ do
- let u = filePathToUri "./src/Lib2.hs"
- let lreq = setTypecheckedModule u
- let req = findDef u (toPos (7,11))
- r <- dispatchRequestPGoto $ lreq >> req
- r `shouldBe` IdeResponseOk [Location (filePathToUri $ cwd </> "test/testdata/gototest/src/Lib2.hs")
- (Range (toPos (10,9)) (toPos (10,10)))]
- let req2 = findDef u (toPos (10,13))
- r2 <- dispatchRequestPGoto $ lreq >> req2
- r2 `shouldBe` IdeResponseOk [Location (filePathToUri $ cwd </> "test/testdata/gototest/src/Lib2.hs")
- (Range (toPos (9,9)) (toPos (9,10)))]
-- ---------------------------------

View File

@@ -1,25 +0,0 @@
diff --git a/insert-ordered-containers.cabal b/insert-ordered-containers.cabal
index 0e8923a..bfbbec4 100644
--- a/insert-ordered-containers.cabal
+++ b/insert-ordered-containers.cabal
@@ -21,8 +21,8 @@ tested-with:
GHC==7.10.3,
GHC==8.0.1,
GHC==8.2.2,
- GHC==8.4.3,
- GHC==8.6.1
+ GHC==8.4.4,
+ GHC==8.6.3
extra-source-files:
CHANGELOG.md
@@ -70,7 +70,7 @@ test-suite ins-ord-containers-tests
, unordered-containers
, base
, insert-ordered-containers
- , tasty >= 0.10.1.2 && <1.2
+ , tasty >= 0.10.1.2 && <1.3
, tasty-quickcheck >= 0.8.3.2 && <0.11
, QuickCheck >=2.7.6 && <2.13
default-language: Haskell2010

View File

@@ -1,15 +0,0 @@
index 60e134c..246d8ca 100644
--- lambdabot-core/src/Lambdabot/Config.hs
+++ lambdabot-core/src/Lambdabot/Config.hs
@@ -29,9 +29,9 @@ import Data.Typeable
import Data.Generics (everywhere, mkT)
import Language.Haskell.TH
-data Config t where Config :: (Typeable1 k, GCompare k) => !(k t) -> t -> (t -> t -> t) -> Config t
+data Config t where Config :: (Typeable k, GCompare k) => !(k t) -> t -> (t -> t -> t) -> Config t
-cast1 :: (Typeable1 f, Typeable1 g) => f a -> Maybe (g a)
+cast1 :: (Typeable f, Typeable g) => f a -> Maybe (g a)
cast1 = fmap runIdentity . gcast1 . Identity
instance GEq Config where

View File

@@ -0,0 +1,82 @@
diff --git a/src/Servant/Client/Core/Internal/HasClient.hs b/src/Servant/Client/Core/Internal/HasClient.hs
index 712007006..6be92ec6d 100644
--- a/src/Servant/Client/Core/Internal/HasClient.hs
+++ b/src/Servant/Client/Core/Internal/HasClient.hs
@@ -16,6 +16,8 @@ module Servant.Client.Core.Internal.HasClient where
import Prelude ()
import Prelude.Compat
+import Control.Concurrent.MVar
+ (modifyMVar, newMVar)
import qualified Data.ByteString as BS
import qualified Data.ByteString.Lazy as BL
import Data.Foldable
@@ -36,13 +38,14 @@ import qualified Network.HTTP.Types as H
import Servant.API
((:<|>) ((:<|>)), (:>), AuthProtect, BasicAuth, BasicAuthData,
BuildHeadersTo (..), Capture', CaptureAll, Description,
- EmptyAPI, FramingUnrender (..), FromSourceIO (..), Header',
- Headers (..), HttpVersion, IsSecure, MimeRender (mimeRender),
+ EmptyAPI, FramingRender (..), FramingUnrender (..),
+ FromSourceIO (..), Header', Headers (..), HttpVersion,
+ IsSecure, MimeRender (mimeRender),
MimeUnrender (mimeUnrender), NoContent (NoContent), QueryFlag,
QueryParam', QueryParams, Raw, ReflectMethod (..), RemoteHost,
ReqBody', SBoolI, Stream, StreamBody', Summary, ToHttpApiData,
- Vault, Verb, WithNamedContext, contentType, getHeadersHList,
- getResponse, toQueryParam, toUrlPiece)
+ ToSourceIO (..), Vault, Verb, WithNamedContext, contentType,
+ getHeadersHList, getResponse, toQueryParam, toUrlPiece)
import Servant.API.ContentTypes
(contentTypes)
import Servant.API.Modifiers
@@ -538,7 +541,7 @@ instance (MimeRender ct a, HasClient m api)
hoistClientMonad pm (Proxy :: Proxy api) f (cl a)
instance
- ( HasClient m api
+ ( HasClient m api, MimeRender ctype chunk, FramingRender framing, ToSourceIO chunk a
) => HasClient m (StreamBody' mods framing ctype a :> api)
where
@@ -547,7 +550,39 @@ instance
hoistClientMonad pm _ f cl = \a ->
hoistClientMonad pm (Proxy :: Proxy api) f (cl a)
- clientWithRoute _pm Proxy _req _body = error "HasClient @StreamBody"
+ clientWithRoute pm Proxy req body
+ = clientWithRoute pm (Proxy :: Proxy api)
+ $ setRequestBody (RequestBodyStreamChunked givesPopper) (contentType ctypeP) req
+ where
+ ctypeP = Proxy :: Proxy ctype
+ framingP = Proxy :: Proxy framing
+
+ sourceIO = framingRender
+ framingP
+ (mimeRender ctypeP :: chunk -> BL.ByteString)
+ (toSourceIO body)
+
+ -- not pretty.
+ givesPopper :: (IO BS.ByteString -> IO ()) -> IO ()
+ givesPopper needsPopper = S.unSourceT sourceIO $ \step0 -> do
+ ref <- newMVar step0
+
+ -- Note sure we need locking, but it's feels safer.
+ let popper :: IO BS.ByteString
+ popper = modifyMVar ref nextBs
+
+ needsPopper popper
+
+ nextBs S.Stop = return (S.Stop, BS.empty)
+ nextBs (S.Error err) = fail err
+ nextBs (S.Skip s) = nextBs s
+ nextBs (S.Effect ms) = ms >>= nextBs
+ nextBs (S.Yield lbs s) = case BL.toChunks lbs of
+ [] -> nextBs s
+ (x:xs) | BS.null x -> nextBs step'
+ | otherwise -> return (step', x)
+ where
+ step' = S.Yield (BL.fromChunks xs) s

View File

@@ -0,0 +1,16 @@
diff --git a/System/Xattr.hsc b/System/Xattr.hsc
index adaf9cb..9b49996 100644
--- a/System/Xattr.hsc
+++ b/System/Xattr.hsc
@@ -45,11 +45,7 @@ module System.Xattr
where
#include <sys/types.h>
-#ifdef __APPLE__
#include <sys/xattr.h>
-#else
-#include <attr/xattr.h>
-#endif
import Data.Functor ((<$>))
import Foreign.C

View File

@@ -1,107 +0,0 @@
From 86595e193e8d46c769ab2a1cee961e8e04dfd1b9 Mon Sep 17 00:00:00 2001
From: Michiel Derhaeg <derhaeg.michiel@gmail.com>
Date: Tue, 20 Mar 2018 22:06:18 +0100
Subject: [PATCH] update to work with GHC 8.4.1
---
XMonad/Hooks/FadeWindows.hs | 6 +++++-
XMonad/Hooks/WallpaperSetter.hs | 6 +++++-
XMonad/Layout/Mosaic.hs | 6 +++++-
xmonad-contrib.cabal | 5 +++--
5 files changed, 33 insertions(+), 5 deletions(-)
diff --git a/XMonad/Hooks/FadeWindows.hs b/XMonad/Hooks/FadeWindows.hs
index 4b8e62b6..01d06792 100644
--- a/XMonad/Hooks/FadeWindows.hs
+++ b/XMonad/Hooks/FadeWindows.hs
@@ -61,7 +61,8 @@ import Control.Monad.Reader (ask
,asks)
import Control.Monad.State (gets)
import qualified Data.Map as M
-import Data.Monoid
+import Data.Monoid hiding ((<>))
+import Data.Semigroup
import Graphics.X11.Xlib.Extras (Event(..))
@@ -134,6 +135,9 @@ instance Monoid Opacity where
r `mappend` OEmpty = r
_ `mappend` r = r
+instance Semigroup Opacity where
+ (<>) = mappend
+
-- | A FadeHook is similar to a ManageHook, but records window opacity.
type FadeHook = Query Opacity
diff --git a/XMonad/Hooks/WallpaperSetter.hs b/XMonad/Hooks/WallpaperSetter.hs
index 00a3b1c3..d4f5ccb2 100644
--- a/XMonad/Hooks/WallpaperSetter.hs
+++ b/XMonad/Hooks/WallpaperSetter.hs
@@ -41,7 +41,8 @@ import Data.Ord (comparing)
import Control.Monad
import Control.Applicative
import Data.Maybe
-import Data.Monoid
+import Data.Monoid hiding ((<>))
+import Data.Semigroup
-- $usage
-- This module requires imagemagick and feh to be installed, as these are utilized
@@ -86,6 +87,9 @@ instance Monoid WallpaperList where
mappend (WallpaperList w1) (WallpaperList w2) =
WallpaperList $ M.toList $ (M.fromList w2) `M.union` (M.fromList w1)
+instance Semigroup WallpaperList where
+ (<>) = mappend
+
-- | Complete wallpaper configuration passed to the hook
data WallpaperConf = WallpaperConf {
wallpaperBaseDir :: FilePath -- ^ Where the wallpapers reside (if empty, will look in \~\/.wallpapers/)
diff --git a/XMonad/Layout/Mosaic.hs b/XMonad/Layout/Mosaic.hs
index 05655d4c..da44fc50 100644
--- a/XMonad/Layout/Mosaic.hs
+++ b/XMonad/Layout/Mosaic.hs
@@ -38,7 +38,8 @@ import Control.Monad(mplus)
import Data.Foldable(Foldable,foldMap, sum)
import Data.Function(on)
import Data.List(sortBy)
-import Data.Monoid(Monoid,mempty, mappend)
+import Data.Monoid(Monoid,mempty, mappend, (<>))
+import Data.Semigroup
-- $usage
@@ -202,6 +203,9 @@ instance Monoid (Tree a) where
mappend x Empty = x
mappend x y = Branch x y
+instance Semigroup (Tree a) where
+ (<>) = mappend
+
makeTree :: (Num a1, Ord a1) => (a -> a1) -> [a] -> Tree a
makeTree _ [] = Empty
makeTree _ [x] = Leaf x
diff --git a/xmonad-contrib.cabal b/xmonad-contrib.cabal
index dde3ccda..c401c6e6 100644
--- a/xmonad-contrib.cabal
+++ b/xmonad-contrib.cabal
@@ -36,7 +36,7 @@ cabal-version: >= 1.6
build-type: Simple
bug-reports: https://github.com/xmonad/xmonad-contrib/issues
-tested-with: GHC==7.6.3, GHC==7.8.4, GHC==7.10.3, GHC==8.0.1
+tested-with: GHC==7.6.3, GHC==7.8.4, GHC==7.10.3, GHC==8.0.1, GHC==8.2.2, GHC==8.4.1
source-repository head
type: git
@@ -66,7 +66,8 @@ library
unix,
X11>=1.6.1 && < 1.9,
xmonad>=0.13 && < 0.14,
- utf8-string
+ utf8-string,
+ semigroups
if flag(use_xft)
build-depends: X11-xft >= 0.2

View File

@@ -1,11 +1,11 @@
addStackArgs () {
if [ -d "$1/lib" ] && [[ "$STACK_IN_NIX_EXTRA_ARGS" != *"--extra-lib-dirs=$1/lib"* ]]; then
if [ -n "$(echo $1/lib/lib*)" ]; then
STACK_IN_NIX_EXTRA_ARGS+=" --extra-lib-dirs=$1/lib"
fi
if [ -d "$1/include" ] && [[ "$STACK_IN_NIX_EXTRA_ARGS" != *"--extra-include-dirs=$1/include"* ]]; then
if [ -d "$1/include" ]; then
STACK_IN_NIX_EXTRA_ARGS+=" --extra-include-dirs=$1/include"
fi
}
addEnvHooks "$hostOffset" addStackArgs
addEnvHooks "$targetOffset" addStackArgs