úÎbR_¦)      !"#$%&'( Safe-Inferred DThis structure is how all kinds of useful data is fed into Dyre. Of  course, only the ,  , and   fields E are really necessary. By using the set of default values provided  as ", you can get all the benefits of E using Dyre to configure your program in only five or six lines of  code. ;The name of the project. This needs to also be the name of ; the executable, and the name of the configuration file. CShould Dyre look for and attempt to compile custom configurations? < Useful for creating program entry points that bypass Dyre's ( recompilation, for testing purposes. 3The directory to look for a configuration file in. ;The directory to store build files in, including the final  generated executable. :The main function of the program. When Dyre has completed > all of its recompilation, it passes the configuration data - to this function and gets out of the way. ;This function is used to display error messages that occur ? during recompilation, by allowing the program to modify its  initial configuration. 3Packages that need to be hidden during compilation /Miscellaneous GHC compilation settings go here -Should GHC be given the -fforce-recomp flag? 7A status output function. Will be called with messages ; when Dyre recompiles or launches anything. A good value  is 'hPutStrLn stderr' , assuming there is no pressing ) reason to not put messages on stderr. 9Whether to append, or replace GHC runtime system options  with others. ?Whether to add current directory to include list (set False to 9 prevent name shadowing within project directory.) --      None Remove all Dyre'0s options from the given commandline arguments.  Store Dyre''s command-line options to the IO-Store dyre, 8 and then execute the provided IO action with all Dyre's 4 options removed from the command-line arguments. Get the value of the '--force-reconf' flag, which is used 5 to force a recompile of the custom configuration. Get the value of the '--deny-reconf' flag, which disables ! recompilation. This overrides --force-reconf, too. Get the value of the '--dyre-debug' flag, which is used : to debug a program without installation. Specifically, $ it forces the application to use  './cache/' as the cache  directory, and ./! as the configuration directory. >Get the path to the master binary. This is set to the path of # the *current* binary unless the '--dyre-master-binary=' flag " is set. Obviously, we pass the '--dyre-master-binary=' flag to = the custom configured application from the master binary. ?Get the path to a persistent state file. This is set only when  the '--dyre-state-persist='# flag is passed to the program. It  is used internally by   to save and restore ' state when relaunching the program. CReturn the set of options which will be passed to another instance D of Dyre. Preserves the master binary, state file, and debug mode  flags, but doesn'/t pass along the forced-recompile flag. Can be C passed a set of other arguments to use, or it defaults to using % the current arguments when passed ). *9Look for the given flag in the argument array, and store 0 its value under the given name if it exists. +9The array of all arguments that Dyre recognizes. Used to + make sure none of them are visible past  *+ *+None;What it says on the tin. Gets the current PID as a string. B Used to determine the name for the state file during restarts. :Called whenever execution needs to be transferred over to  a different binary. None'Just relaunch the master binary. We don't have any important ( state to worry about. (Or, like when 'relaunchWith<X>State' calls  it, we':re managing state on our own). It takes an argument which C can optionally specify a new set of arguments. If it is given a  value of ), the current value of getArgs will be used. ;Relaunch the master binary, but first preserve the program  state so that we can use the   functions to  get it back again later. /Serialize the state for later restoration with !, ( and then relaunch the master binary. ,;Calculate the path that will be used for saving the state. @ The path used to load the state, meanwhile, is passed to the  program with the '--dyre-persist-state=<path>' flag. 6Serialize a state as text, for later loading with the    function. 9Serialize a state as binary data, for later loading with  the ! function. 4Restore state which has been serialized through the  $ function. Takes a default which is  returned if the state doesn' t exist. !4Restore state which has been serialized through the  $ function. Takes a default which is  returned if the state doesn' t exist. , ! ! !, !None"BReturn the paths to, respectively, the current binary, the custom 5 binary, the config file, and the cache directory. #CCheck if a file exists. If it exists, return Just the modification  time. If it doesn't exist, return Nothing. "#"#"#"#None$#Return the path to the error file. %@If the error file exists and actually has some contents, return  -$ the error string. Otherwise return ). &AAttempts to compile the configuration file. Will return a string # containing any compiler output. .<Assemble the arguments to GHC so everything compiles right. $%&.$%&&$%$%&.None'CA set of reasonable defaults for configuring Dyre. The fields that  have to be filled are ,  , and  . ((= is how Dyre recieves control of the program. It is expected D that it will be partially applied with its parameters to yield a main 1 entry point, which will then be called by the main function, as well $ as by any custom configurations. /&Filters GHC runtime system arguments: '(01/23 '(( ''(01/234      !"#$%&'()*+,-./012345612789:;<=> dyre-0.8.11Config.Dyre.ParamsConfig.Dyre.OptionsConfig.Dyre.CompatConfig.Dyre.RelaunchConfig.Dyre.PathsConfig.Dyre.Compile Config.Dyre defaultParamsRelaunchRTSOptionHandling RTSAppend RTSReplaceParams projectName configCheck configDircacheDirrealMain showError hidePackagesghcOpts forceRecomp statusOutrtsOptsHandlingincludeCurrentDirectoryremoveDyreOptionswithDyreOptionsgetForceReconf getDenyReconfgetDebuggetMasterBinarygetStatePersist customOptions getPIDString customExecrelaunchMasterrelaunchWithTextStaterelaunchWithBinaryState saveTextStatesaveBinaryStaterestoreTextStaterestoreBinaryStategetPaths maybeModTime getErrorPathgetErrorString customCompilewrapMainbase Data.MaybeNothing storeFlagdyreArgs genStatePathJust makeFlags filterRTSArgsrecFilesassertMeditRTSOptionshandleRTSOptions