@@ -72,16 +72,12 @@ import System.Directory
72import System.Environment (getExecutablePath)
72import System.Environment (getExecutablePath)
73import System.FilePath
73import System.FilePath
74import qualified System.Info
74import qualified System.Info
75−import System.IO (hClose, hGetLine)
76import System.IO.Temp (withSystemTempDirectory)
75import System.IO.Temp (withSystemTempDirectory)
77−import System.Process (CreateProcess (..), StdStream (..))
79import Obelisk.App (MonadObelisk, getObelisk, runObelisk)
77import Obelisk.App (MonadObelisk, getObelisk, runObelisk)
80import Obelisk.CliApp (
78import Obelisk.CliApp (
81 Severity (..),
79 Severity (..),
87 readCreateProcessWithExitCode,
83 readCreateProcessWithExitCode,
@@ -481,7 +477,7 @@ getGhciSessionSettings (toList -> packageInfos) pathBase useRelativePaths = do
481 -- all paths to 'pathBase'.
477 -- all paths to 'pathBase'.
482 selfExe <- liftIO $ canonicalizePath =<< getExecutablePath
478 selfExe <- liftIO $ canonicalizePath =<< getExecutablePath
483 canonicalPathBase <- liftIO $ canonicalizePath pathBase
479 canonicalPathBase <- liftIO $ canonicalizePath pathBase
484− installedPackageIndex <- loadPackageIndex pathBase
480+ installedPackageIndex <- loadPackageIndex packageInfos pathBase
486 (pkgFiles, pkgSrcPaths :: [NonEmpty FilePath]) <- fmap unzip $ liftIO $ for packageInfos $ \pkg -> do
482 (pkgFiles, pkgSrcPaths :: [NonEmpty FilePath]) <- fmap unzip $ liftIO $ for packageInfos $ \pkg -> do
487 canonicalSrcDirs <- traverse canonicalizePath $ (_cabalPackageInfo_packageRoot pkg </>) <$> _cabalPackageInfo_sourceDirs pkg
483 canonicalSrcDirs <- traverse canonicalizePath $ (_cabalPackageInfo_packageRoot pkg </>) <$> _cabalPackageInfo_sourceDirs pkg
@@ -514,8 +510,8 @@ getGhciSessionSettings (toList -> packageInfos) pathBase useRelativePaths = do
514 _ -> error $ "Couldn't resolve dependency for " <> prettyShow dep
510 _ -> error $ "Couldn't resolve dependency for " <> prettyShow dep
516-- Load the package index used by the GHC in this path's nix project
512-- Load the package index used by the GHC in this path's nix project
517−loadPackageIndex :: (MonadObelisk m) => FilePath -> m InstalledPackageIndex
513+loadPackageIndex :: MonadObelisk m => [CabalPackageInfo] -> FilePath -> m InstalledPackageIndex
518−loadPackageIndex root = do
514+loadPackageIndex packageInfos root = do
519 ghcPath <- getPathInNixEnvironment "bash -c 'type -p ghc'"
515 ghcPath <- getPathInNixEnvironment "bash -c 'type -p ghc'"
520 ghcPkgPath <- getPathInNixEnvironment "bash -c 'type -p ghc-pkg'"
516 ghcPkgPath <- getPathInNixEnvironment "bash -c 'type -p ghc-pkg'"
521 (compiler, _platform, programDb) <- liftIO
517 (compiler, _platform, programDb) <- liftIO
@@ -523,13 +519,8 @@ loadPackageIndex root = do
523 liftIO $ getInstalledPackages Verbosity.silent compiler [GlobalPackageDB] programDb
519 liftIO $ getInstalledPackages Verbosity.silent compiler [GlobalPackageDB] programDb
525 getPathInNixEnvironment cmd = do
521 getPathInNixEnvironment cmd = do
526− procSpec <- runProc <$> nixShellRunConfig root True (Just cmd)
522+ path <- readProcessAndLogStderr Debug =<< mkObNixShellProc root False True (packageInfoToNamePathMap packageInfos) "ghc" (Just cmd)
527− (_,Just h,_,_) <- createProcess_ "loadPackageIndex" procSpec
528− path <- liftIO $ hGetLine h >>= canonicalizePath
523+ liftIO $ canonicalizePath $ T.unpack $ T.strip path
532− overCreateProcess (\cs -> cs { std_out = CreatePipe }) . nixShellRunProc
534baseGhciOptions :: [String]
525baseGhciOptions :: [String]
535baseGhciOptions =
526baseGhciOptions =