summary refs log tree commit diff
path: root/pkgs/development/libraries/haskell/generic/ghcPkgUtil.sh
blob: e265195b321fe3600c23a4db01e499e0b2f152da (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# mantainer: Marc Weber (marco-oweber@gmx.de)
#
# example usage: add ghcPkgUtil to buildInputs then somewhere in buildPhase:
#
#  createEmptyPackageDatabaseAndSetupHook
#  configure --with-package-db=$PACKAGE_DB
#  ... compile ghc library ...
# add your library to propagatedBuildInputs instead of buildInputs 
# in all depending libraries



# creates a setup hook
# adding the package database 
# nix-support/package.conf to GHC_PACKAGE_PATH
# if not already contained
setupHookRegisteringPackageDatabase(){
  ensureDir $out/nix-support;
  local pkgdb=$out/nix-support/package.conf
  cat >> $out/nix-support/setup-hook << EOF
    
    echo \$GHC_PACKAGE_PATH | grep -l $pkgdb &> /dev/null || \
      export GHC_PACKAGE_PATH=\$GHC_PACKAGE_PATH\${GHC_PACKAGE_PATH:+$PATH_DELIMITER}$pkgdb;
EOF
}

# create an empty package database in which the new library can be registered. 
createEmptyPackageDatabaseAndSetupHook(){
  ensureDir $out/nix-support;
  PACKAGE_DB=$out/nix-support/package.conf;
  echo '[]' > $PACKAGE_DB";
  setupHookRegisteringPackageDatabase
}