Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
shellFor: Refactor for consistency and cross
This makes it work like work-on-multi from Reflex Platform. In particular, rather than making `.env` from `shellFor`, we make `.env` the primitive, and `shellFor` works by combining together the arguments of all the packages to `generic-builder` and taking the `.env` of the resulting mashup-package. There are 2 benefits of this: 1. The dependency logic is deduplicated. generic builder just concatted lists, whereas all the envs until now would sieve apart haskell and system build inputs. Now, they both decide haskell vs system the same way: according to the argument list and without reflection. Consistency is good, especially because it mean that if the build works, the shell is more likely to work. 2. Cross is handled better. For native builds, because the `ghcWithPackages` calls would shadow, we through both the regular component (lib, exe, test, bench) haskell deps and Setup.hs haskell deps in the same `ghcWithPackages` call. But for cross builds we use `buildPackages.ghcWithPackages` to get the setup deps. This ensures everything works correctly.
- Loading branch information
1 parent
ba9066a
commit 7d67db3
Showing
4 changed files
with
192 additions
and
64 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
{ stdenv, haskellPackages, cabal-install }: | ||
|
||
haskellPackages.shellFor { | ||
packages = p: [ p.database-id-class p.constraints-extras ]; | ||
nativeBuildInputs = [ cabal-install ]; | ||
phases = [ "unpackPhase" "buildPhase" "installPhase" ]; | ||
unpackPhase = '' | ||
sourceRoot=$(pwd)/scratch | ||
mkdir -p "$sourceRoot" | ||
cd "$sourceRoot" | ||
tar -xf ${haskellPackages.database-id-class.src} | ||
tar -xf ${haskellPackages.constraints-extras.src} | ||
cp ${builtins.toFile "cabal.project" "packages: database-id-class* constraints-extras*"} cabal.project | ||
''; | ||
buildPhase = '' | ||
export HOME=$(mktemp -d) | ||
mkdir -p $HOME/.cabal | ||
touch $HOME/.cabal/config | ||
cabal v2-build --offline --verbose database-id-class constraints-extras --ghc-options="-O0 -j$NIX_BUILD_CORES" | ||
''; | ||
installPhase = '' | ||
touch $out | ||
''; | ||
} |