Will Donnelly <will.donne...@gmail.com> writes: Hi Will, > Hi Andy, > > I feel that I should offer a disclaimer here: You are misusing Dyre > somewhat by attempting to make it handle whole-program recompilation. > It is designed to recompile a single configuration file, generally > against an installed library form of the application. Some of its > code, specifically the part that decides when to recompile, is based > almost entirely on this assumption. I use dyre for develop dynamic gtk application, so i hope dyre do whole-program recompilaton and just recompile necessary files. Just recompile single file or force recompile all modules is not my desire.
It's better if dyre's support single file recompliation and whole-program recompilation, isn't? :) > > That aside, you should be able to accomplish your goals like this: > > 1. Set the 'forceRecomp' parameter (just added in Dyre 0.7.3) to > 'False'. This will remove the '-fforce-recomp' flag from GHC's > options. > 2. Run your executable with the '--force-reconf' flag, which will > cause Dyre to always enter the recompilation code. Now i use below code finish work: ------------------------------> code start <------------------------------ rebootParams :: Params Config rebootParams = defaultParams {projectName = "Main" ,realMain = manatee ,showError = rebootShowError ,cacheDir = Just $ return "/test/Download/cache/" ,configDir = Just getCurrentDirectory ,forceRecomp = False -- don't recompile all modules, steup for recompile whole-program } rebootOptions :: Maybe [String] rebootOptions = Just ["--force-reconf"] rebootShowError :: Config -> String -> Config rebootShowError cfg msg = cfg {errorMsg = Just msg} reboot :: IORefObject -> IO () reboot ioRefObject = do rs <- rebootGetState ioRefObject relaunchWithBinaryState rs rebootOptions ------------------------------> code end <------------------------------ BTW, looks dyre don't recommand user use function `customCompile`, when it will call in function `wrapMain' always. If i just use relaunch function, i just got simple error information: "Error occurred while loading configuration file." when recompile failed. How to display detail information when recompile failed? I missing something? Thanks! -- Andy > > In a test project I just created, this seems to do what you desire. > > Hope this helps clear things up > - Will Donnelly > > On Sun, Sep 6 2009 at 1:41 PM, Andy Stewart <lazycat.mana...@gmail.com> wrote: >> >> Hi all, >> >> I use below params for configure dyre: >> >> rebootParams :: Params Config >> rebootParams = defaultParams >> {projectName = "Main" >> ,realMain = manatee >> ,showError = rebootShowError >> ,cacheDir = Just $ return "/test/Download/cache/" >> ,configDir = Just getCurrentDirectory >> } >> >> There have two version of function `reboot` to reboot Master binary: >> >> reboot :: IORefObject -> IO () >> reboot ioRefObject = do >> rs <- rebootGetState ioRefObject >> relaunchWithBinaryState rs Nothing >> >> reboot :: IORefObject -> IO () >> reboot ioRefObject = do >> output <- customCompile rebootParams >> case output of >> Just o -> putStrLn o -- output recompile error >> Nothing -> do -- otherwise relaunch >> rs <- rebootGetState ioRefObject >> relaunchWithBinaryState rs Nothing >> >> Becuase i setup `projectName` with `Main`, so i want `dyre` recompile >> NECESSARY module when i change any module in my project. >> >> In first version of function `reboot`, i just use >> `relauncheWithBinaryState`, i found `dyre` just recompile all project when i >> modified Main.hs, if i modified any others module in project, `dyre` >> won't recompile those modified modules. >> >> In second version, i use `customCompile` for recompile, but this have >> another problem, `customComiple` use `-fforce-recomp` flags to remove >> all object files, so function `customComiple` will recompile all modules >> in project, and not just recompile NECESSARY modules. >> >> So how to make `dyre` just recompile NECCESSARY modules whatever i >> change any modules in project? >> >> Maybe add new option "--dyre-reconf-necessary" in `dyre`? >> >> Thanks! >> >> -- Andy _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe