
Generally, it shouldn't (and doesn't), but here some packages have to be reinstalled because they have to be built against different dependencies.
I'd prefer cabal install to refuse here (overridable with a --force flag) because reinstalling boot libs (containers, filepath, directory, process, time) tends to be a bad idea.
Seconded! I've had my setup screwed up because some package wanted to recompile base against a tiny version bump on the random package for whatever reason. The presence of two bases with the same version, one in the ghc dir and one in /usr/local/lib proceded to screw up all kinds of things. It took a long time to figure out because I wasn't expecting two copies of base with the same version, and it somehow managed to overwrite the package file in package.conf.d so the original metadata was gone. Eventually I gave up and reinstalled ghc. And all I did was accidentally run cabal upgrade somepackage when I wanted to install a newer version of somepackage. By the time I realized it was apparently still aliased to cabal break-everything and hit ^C it was too late. And it's not like I haven't been warned away from cabal upgrade either... but it made me think, if the command is so dangerous, should it have a scarier name?