From 33e9751390d4ccb0bb19ef7a40f1abd68e10e597 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Gr=C3=B6ber?= Date: Sun, 10 Jan 2016 22:01:33 +0100 Subject: [PATCH] Fix writeAutogen when no systemwide ghc is installed (#660) --- Language/Haskell/GhcMod/CabalHelper.hs | 35 ++++++++++++-------------- ghc-mod.cabal | 2 +- 2 files changed, 17 insertions(+), 20 deletions(-) diff --git a/Language/Haskell/GhcMod/CabalHelper.hs b/Language/Haskell/GhcMod/CabalHelper.hs index 7785613..119f745 100644 --- a/Language/Haskell/GhcMod/CabalHelper.hs +++ b/Language/Haskell/GhcMod/CabalHelper.hs @@ -113,32 +113,30 @@ getComponents = chCached $ \distdir -> Cached { , (a', c) <- lc , a == a' ] -runCHQuery :: (IOish m, GmOut m, GmEnv m) => Query m b -> m b -runCHQuery a = do + +getQueryEnv :: (IOish m, GmOut m, GmEnv m) => m QueryEnv +getQueryEnv = do crdl <- cradle + progs <- patchStackPrograms crdl =<< (optPrograms <$> options) + readProc <- gmReadProcess let projdir = cradleRootDir crdl distdir = projdir cradleDistDir crdl + return (defaultQueryEnv projdir distdir) { + qeReadProcess = readProc + , qePrograms = helperProgs progs + } - opts <- options - progs <- patchStackPrograms crdl (optPrograms opts) - - readProc <- gmReadProcess - - let qe = (defaultQueryEnv projdir distdir) { - qeReadProcess = readProc - , qePrograms = helperProgs progs - } +runCHQuery :: (IOish m, GmOut m, GmEnv m) => Query m b -> m b +runCHQuery a = do + qe <- getQueryEnv runQuery qe a prepareCabalHelper :: (IOish m, GmEnv m, GmOut m, GmLog m) => m () prepareCabalHelper = do crdl <- cradle - let projdir = cradleRootDir crdl - distdir = projdir cradleDistDir crdl - readProc <- gmReadProcess when (isCabalHelperProject $ cradleProject crdl) $ - withCabal $ liftIO $ prepare readProc projdir distdir + withCabal $ prepare' =<< getQueryEnv withAutogen :: (IOish m, GmEnv m, GmOut m, GmLog m) => m a -> m a withAutogen action = do @@ -155,15 +153,14 @@ withAutogen action = do when (mCabalMacroHeader < mCabalFile || mCabalPathsModule < mCabalFile) $ do gmLog GmDebug "" $ strDoc $ "autogen files out of sync" - writeAutogen projdir distdir + writeAutogen action where - writeAutogen projdir distdir = do - readProc <- gmReadProcess + writeAutogen = do gmLog GmDebug "" $ strDoc $ "writing Cabal autogen files" - liftIO $ writeAutogenFiles readProc projdir distdir + writeAutogenFiles' =<< getQueryEnv withCabal :: (IOish m, GmEnv m, GmOut m, GmLog m) => m a -> m a diff --git a/ghc-mod.cabal b/ghc-mod.cabal index 04364b3..8de41e9 100644 --- a/ghc-mod.cabal +++ b/ghc-mod.cabal @@ -160,7 +160,7 @@ Library , bytestring < 0.11 , binary < 0.8 && >= 0.5.1.0 , containers < 0.6 - , cabal-helper < 0.7 && >= 0.6.1.0 + , cabal-helper < 0.7 && >= 0.6.3.0 , deepseq < 1.5 , directory < 1.3 , filepath < 1.5