nixpkgs/pkgs/development/libraries/haskell/generic/ghcPkgUtil.sh

38 lines
1.1 KiB
Bash
Raw Normal View History

# 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;
if test -n "$1"; then
local pkgdb=$1
else
local pkgdb=$out/nix-support/package.conf
fi
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
}