ghc-wrapper now detects installed pkgs automatically.
svn path=/nixpkgs/trunk/; revision=15301
This commit is contained in:
21
pkgs/development/compilers/ghc/ghc-get-packages.sh
Executable file
21
pkgs/development/compilers/ghc/ghc-get-packages.sh
Executable file
@@ -0,0 +1,21 @@
|
||||
#! /bin/sh
|
||||
# Usage:
|
||||
# $1: version of GHC
|
||||
# $2: invocation path of GHC
|
||||
# $3: prefix
|
||||
version="$1"
|
||||
if test -z "$3"; then
|
||||
prefix="-package-conf "
|
||||
else
|
||||
prefix="$3"
|
||||
fi
|
||||
PATH="$2:$PATH"
|
||||
IFS=":"
|
||||
PKGS=""
|
||||
for p in $PATH; do
|
||||
PkgDir="$p/../lib/ghc-pkgs/ghc-$version"
|
||||
for i in $PkgDir/*.installedconf; do
|
||||
test -f $i && PKGS="$PKGS $prefix$i"
|
||||
done
|
||||
done
|
||||
echo $PKGS
|
||||
@@ -1,17 +0,0 @@
|
||||
# Create isolated package config
|
||||
packages_db=$TMPDIR/.package.conf
|
||||
cp @ghc@/lib/ghc-*/package.conf $packages_db
|
||||
chmod u+w $packages_db
|
||||
|
||||
export GHC_PACKAGE_PATH=$packages_db
|
||||
|
||||
# Env hook to add packages to the package config
|
||||
addLibToPackageConf () {
|
||||
local fn
|
||||
shopt -s nullglob
|
||||
for fn in $1/lib/ghc-pkgs/ghc-@ghcVersion@/*.conf; do
|
||||
@ghc@/bin/ghc-pkg register --force $fn
|
||||
done
|
||||
}
|
||||
|
||||
envHooks=(${envHooks[@]} addLibToPackageConf)
|
||||
@@ -1,14 +1,27 @@
|
||||
{stdenv, ghc}:
|
||||
{stdenv, ghc, makeWrapper}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "ghc-wrapper-${ghc.version}";
|
||||
name = "ghc-${ghc.version}-wrapper";
|
||||
|
||||
buildInputs = [makeWrapper];
|
||||
propagatedBuildInputs = [ghc];
|
||||
|
||||
unpackPhase = "true";
|
||||
installPhase = "true";
|
||||
installPhase = ''
|
||||
ensureDir $out/bin
|
||||
cp $GHCGetPackages $out/bin/ghc-get-packages.sh
|
||||
chmod 755 $out/bin/ghc-get-packages.sh
|
||||
for prg in ghc ghci ghc-${ghc.version} ghci-${ghc.version} runghc runhaskell; do
|
||||
makeWrapper $ghc/bin/$prg $out/bin/$prg --add-flags "\$($out/bin/ghc-get-packages.sh ${ghc.version} \"\$(dirname \$0)\")"
|
||||
done
|
||||
for prg in ghc-pkg ghc-pkg-${ghc.version}; do
|
||||
makeWrapper $ghc/bin/$prg $out/bin/$prg --add-flags "\$($out/bin/ghc-get-packages.sh ${ghc.version} \"\$(dirname \$0)\" --package-conf=)"
|
||||
done
|
||||
ensureDir $out/nix-support
|
||||
ln -s $out/nix-support/propagated-build-inputs $out/nix-support/propagated-user-env-packages
|
||||
'';
|
||||
|
||||
setupHook = ./setup-hook.sh;
|
||||
GHCGetPackages = ./ghc-get-packages.sh;
|
||||
|
||||
inherit ghc;
|
||||
ghcVersion = ghc.version;
|
||||
|
||||
Reference in New Issue
Block a user