at 24.05-pre 57 lines 2.0 kB view raw
1{ lib, writeText, haskellPackages, cabal-install }: 2 3(haskellPackages.shellFor { 4 packages = p: [ p.constraints p.linear ]; 5 # WARNING: When updating this, make sure that the libraries passed to 6 # `extraDependencies` are not actually transitive dependencies of libraries in 7 # `packages` above. We explicitly want to test that it is possible to specify 8 # `extraDependencies` that are not in the closure of `packages`. 9 extraDependencies = p: { libraryHaskellDepends = [ p.conduit ]; }; 10 nativeBuildInputs = [ cabal-install ]; 11 phases = [ "unpackPhase" "buildPhase" "installPhase" ]; 12 unpackPhase = '' 13 sourceRoot=$(pwd)/scratch 14 mkdir -p "$sourceRoot" 15 cd "$sourceRoot" 16 tar -xf ${haskellPackages.constraints.src} 17 tar -xf ${haskellPackages.linear.src} 18 cp ${writeText "cabal.project" "packages: constraints* linear*"} cabal.project 19 ''; 20 buildPhase = '' 21 export HOME=$(mktemp -d) 22 mkdir -p $HOME/.cabal 23 touch $HOME/.cabal/config 24 25 # Check that the extraDependencies.libraryHaskellDepends arg is correctly 26 # picked up. This uses ghci to interpret a small Haskell program that uses 27 # a package from extraDependencies. 28 ghci <<EOF 29 :set -XOverloadedStrings 30 :m + Conduit 31 runResourceT $ connect (yield "done") (sinkFile "outfile") 32 EOF 33 34 if [[ "done" != "$(cat outfile)" ]]; then 35 echo "ERROR: extraDependencies appear not to be available in the environment" 36 exit 1 37 fi 38 39 # Check packages arg 40 cabal v2-build --offline --verbose constraints linear --ghc-options="-O0 -j$NIX_BUILD_CORES" 41 ''; 42 installPhase = '' 43 touch $out 44 ''; 45}).overrideAttrs (oldAttrs: { 46 meta = 47 let 48 oldMeta = oldAttrs.meta or {}; 49 oldMaintainers = oldMeta.maintainers or []; 50 additionalMaintainers = with lib.maintainers; [ cdepillabout ]; 51 allMaintainers = oldMaintainers ++ additionalMaintainers; 52 in 53 oldMeta // { 54 maintainers = allMaintainers; 55 inherit (cabal-install.meta) platforms; 56 }; 57})