This is the field which is eventually used to populate the `-dependency` argument to `./Setup configure`. * Modify the dependency edges in `compLibDependencies` to indicate which dependencies are the promised ones (which is precisely components which are `BuildInPlaceOnly InMemory` build styles). * Augment the component repl targets to indicate that components required by the closure property (in addition to normal targets) will be loaded into the repl. * Mark the current components as `BuildInPlaceOnly InMemory`, which indicates to the compiler that it is to be built in a GHC multi-session. After the solver is completed then in `setRootTargets` and `pruneInstallPlan` we modify the install plan to enforce the closure property and mark which dependencies need to be promised. The solver is unmodified, the solver is given the repl targets and creates a build plan as before. Will populate the session and starts a multi-session with all theģ. `cabal-install` then invokes this command for each component which Starting the repl and instead instruct the command to write the The `./Setup repl` command is modified to allow a user to defer '-dependency=+cabal-install-solver=cabal-install-solver-3.9.0.0-inplace'Ģa. Setup configure specifies a promised dependency by prepending a "+" to a normal dependency specification. This allows us to configure all the packages we intend to load into the repl without building any dependenices which we will load in the same session, because the promise is satisifed due to loading the package and it's dependency into one multi-session which ensures the dependency is built before it is needed.Ī user of. Instead, we promise to the configure phase that we will have built it by the time we build the package. It is necessary to modify `./Setup configure` to allow users to configure a package *without* having previously built the dependency. Therefore cabal has already engineered that there is sourceĬode locally available for all packages which we will want to loadĢ. `z` exists then it is already made into an inplace package byĬabal). Only inplace packages are able to be loaded into a multi session (if a component Then `z` must also be loaded into the session.ġb. The same session that if `p` depends on `z` and `z` depends on `q` The closure property states that in order to load components `p` and `q` into When a user writes "cabal repl " then if the user is using a compiler > ghc-9.4.* then we will attempt to start a multi-session which loads the selected targets into one multi-package session of GHC. There are several parts to this patch which are logically distinct but work toge … ther to support the overal goal of starting a GHCi session with multiple packages loaded at once.ġ.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |