On Fri, Feb 6, 2009 at 2:32 PM, Robby Findler <robby at eecs.northwestern.edu> wrote: > On Fri, Feb 6, 2009 at 1:22 PM, Carl Eastlund <cce at ccs.neu.edu> wrote: >> Hmm. It does need to rebuild the index. And it needs to rebuild the >> index without the package being removed. But it doesn't want to >> reinstall the package if anything has a dependency on it... so it >> leaves the package installed. That much makes sense. Is there a way >> to do that, and either rebuild only the index (not any code / >> documentation) or else, when rebuilding other code, not follow >> dependencies into the package being removed? I can see why it's doing >> some rebuilding, and why the package is still in place, but it seems >> unfortunate that it gets pulled into the actual build process. >> >> We could try another tack. Remove the package, rebuild, but change >> the module resolver while rebuilding so that it reports an error >> during any attempts to retrieve that planet package. That would >> rebuild as much of the index as possible without the package, wouldn't >> traverse the package itself, and wouldn't replace it with any new >> download. > > That seems like an interesting thing to try. The idea is that error > should never be signaled, right?
No, the error may be signaled. You may have A:1.0 and B:1.0 that depends on A:1.0+. To upgrade A, you might first remove A:1.0 and then install A:1.1. While removing A:1.0, B:1.0 will signal an error because nothing satisfies its dependence on A. But that's an ok error to signal, it shouldn't interrupt setup-plt, but it does let the user know they have to replace A as their next step. If we're not trying to support this behavior of "remove a middle dependency and replace it later" -- which breaks down with multiple parts to the dependency anyway -- we should just remove the package outright and run setup-plt, and if anything depends on it that causes a re-download, the user "just shouldn't do that". Or, rather than special casing that you can't load that package, perhaps we should just disable the planet installation mechanism during planet remove -- no package should be installed, from web or from cache, during a remove. --Carl
