
I think that logging & uninstall could be implemented quite effectively by tweaking the "install" target so that it first copies stuff into a temporary location, then uses a "find" type algorithm to discover all of the files that are meant to be installed.
I have essentially already implemented the find algorithm under the assumption that files that would be copied to for example /usr/bin will be but in /my/tmp/dir/usr/bin during the build. I've also written a piece of code that removes the files again given a log file with paths. The files are removed in a way that will also remove empty directories. I was thinking of putting a timestamp on the files as well. I also added a dry-run feature. Perhaps storing the log files somewhere under Cabal's install dir would be a good idea? Cheers, Johan