at master 1.5 kB view raw
1diff -Naur ghc-paths-0.1.0.9/GHC/Paths.hs ghc-paths-0.1.0.9-new/GHC/Paths.hs 2--- ghc-paths-0.1.0.9/GHC/Paths.hs 2012-12-16 13:53:45.720148396 +0100 3+++ ghc-paths-0.1.0.9-new/GHC/Paths.hs 2012-12-16 17:22:12.765576568 +0100 4@@ -1,13 +1,35 @@ 5 {-# LANGUAGE CPP #-} 6+{-# LANGUAGE ScopedTypeVariables #-} 7 8 module GHC.Paths ( 9 ghc, ghc_pkg, libdir, docdir 10 ) where 11 12+import Control.Exception as E 13+import Data.Maybe 14+import System.Environment 15+import System.IO.Unsafe 16+ 17+-- Yes, there's lookupEnv now, but we want to be compatible 18+-- with older GHCs. 19+checkEnv :: String -> IO (Maybe String) 20+checkEnv var = E.catch (fmap Just (getEnv var)) 21+ (\ (e :: IOException) -> return Nothing) 22+ 23+nixLibdir, nixDocdir, nixGhc, nixGhcPkg :: Maybe FilePath 24+nixLibdir = unsafePerformIO (checkEnv "NIX_GHC_LIBDIR") 25+nixDocdir = unsafePerformIO (checkEnv "NIX_GHC_DOCDIR") 26+nixGhc = unsafePerformIO (checkEnv "NIX_GHC") 27+nixGhcPkg = unsafePerformIO (checkEnv "NIX_GHCPKG") 28+{-# NOINLINE nixLibdir #-} 29+{-# NOINLINE nixDocdir #-} 30+{-# NOINLINE nixGhc #-} 31+{-# NOINLINE nixGhcPkg #-} 32+ 33 libdir, docdir, ghc, ghc_pkg :: FilePath 34 35-libdir = GHC_PATHS_LIBDIR 36-docdir = GHC_PATHS_DOCDIR 37+libdir = fromMaybe GHC_PATHS_LIBDIR nixLibdir 38+docdir = fromMaybe GHC_PATHS_DOCDIR nixDocdir 39 40-ghc = GHC_PATHS_GHC 41-ghc_pkg = GHC_PATHS_GHC_PKG 42+ghc = fromMaybe GHC_PATHS_GHC nixGhc 43+ghc_pkg = fromMaybe GHC_PATHS_GHC_PKG nixGhcPkg