> 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 don't think I understand your assumption. What do you mean "during
the build"? I think the only way to make sure that your paths are
correct is to do a "fake" install into a temp directory and then do a
recursive copy.

For instance, I think we have dist/build/foo/foo.exe (or something)
would get installed in /usr/bin/foo.exe, and dist/doc/foo.html would
be installed in /usr/share/doc/foo/foo.html.  So the install paths
aren't correct at build time, only at install time.

Sorry for being a bit unclear. My algorithm takes a directory prefix
such as /tmp and recursively creates a list of absolute paths with the
prefix removed. Example:

Actuall files and dirs:

/tmp/usr/bin/foo.exe
/tmp/usr/share/doc/doc.txt

The log file I create would look like this when run with /tmp as prefix:

/usr/bin/foo.exe _SHA-1_or_something_
/usr/share/doc/doc.txt _SHA-1_or_something_

I have a function:

-- | @writeInstallLog file dir@ creates a file @file@ that contains a list of
-- all directories and files in @dir@ with the prefix @dir@ removed and /
-- prepended.
writeInstallLog :: FilePath -> FilePath -> IO ()

> 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.

And maybe a sha1 sum?

Perhaps it would be a good idea to come up with things that could go
wrong during an uninstall. Here are some:

* File missing (deleted by user).
* File modified.
* File shared with some other Cabal package.
* Configuration file (may not be removed).

- Johan
_______________________________________________
cabal-devel mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cabal-devel

Reply via email to