
Hi Everyone! I'm new here, trying to learn the GHC API. using 944 with cabal 3.8.1.0. How do I correctly set a GHC Session's DynFlags (and/or other properties) to ensure local libraries imported by the main target are resolved properly at compile time? What flags need to be set so that GHC is able to load/analyze/compile all relevant Libraries in a package? This is my current code: withPath :: FilePath -> IO () withPath target = do let targetDir = takeDirectory target let targetFile = takeFileName target listing <- listDirectory targetDir let imports = filter (\f -> takeExtension f == ".hs") listing print imports let moduleName = mkModuleName targetFile g <- defaultErrorHandler defaultFatalMessager defaultFlushOut $ runGhc (Just libdir) $ do initGhcMonad (Just libdir) dynflags <- getSessionDynFlags setSessionDynFlags $ dynflags { ghcLink = LinkInMemory , ghcMode = CompManager , backend = Interpreter , mainModuleNameIs = moduleName , workingDirectory = Just targetDir , importPaths = [targetDir] ++ importPaths dynflags } targets <- mapM (\t -> guessTarget t Nothing Nothing) imports setTargets targets setContext [ IIDecl $ simpleImportDecl (mkModuleName "Prelude") ] load LoadAllTargets liftIO . print . ppr =<< getTargets getModuleGraph putStrLn "Here we go!" print $ ppr $ mgModSummaries g putStrLn "☝️ " However, when I run it (passing to example/app/Main.hs, in which directory are Lib.hs and Lib2.hs, the latter being imported into Main), I get: $ cabal run cli -- example/app/Main.hs Up to date ["Main.hs","Lib.hs","Lib2.hs"] [main:Main.hs, main:Lib.hs, main:Lib2.hs] Here we go! [ModSummary { ms_hs_hash = 23f9c4415bad851a1e36db9d813f34be ms_mod = Lib, unit = main ms_textual_imps = [(, Prelude)] ms_srcimps = [] }, ModSummary { ms_hs_hash = e1eccc23af49f3498a5a9566e63abefd ms_mod = Lib2, unit = main ms_textual_imps = [(, Prelude)] ms_srcimps = [] }, ModSummary { ms_hs_hash = 5f6751d7f0d5547a1bdf39af84f8c07f ms_mod = Main, unit = main ms_textual_imps = [(, Prelude), (, Lib2)] ms_srcimps = [] }] ☝ example/app/Main.hs:4:1: error: Could not find module ‘Lib2’ Use -v (or `:set -v` in ghci) to see a list of the files searched for. | 4 |import qualified Lib2 as L2 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ cli: example/app/Main.hs:4:1: error: Could not find module `Lib2' Use -v (or `:set -v` in ghci) to see a list of the files searched for. What do I need to do differently to make this work? I have a local Cabal file I could use, but to know what I need out of it, I need to understand the minimum required info to get this to work. TIA! Sincerely, Bob Sent with [Proton Mail](https://proton.me/) secure email.