Igor Pechtchanski wrote: > It'll work for simple programs, but not for packages where preremove > scripts erase files that are needed to run some programs from that > package. One example (not necessarily a perfect one) that comes to mind > right away is the base-files package, where the preremove script will > currently erase /etc/profile (so any script executing "bash -l" will not > get the expected results). I'm sure there are better examples... > > FWIW, this is probably somewhat similar to the issue of circular > dependencies of postinstall scripts -- there is no good general solution > if we assume monolithic scripts.
Wouldn't the "proper" way to do this be to build the dependency tree then remove packages in depth-first order, running each preremove before removing each package list? Example: Dependency tree: A / \ B C \ D So lets say you want to remove and then upgrade new versions of A, B, C, and D. You first get the depth-first order: D, C, B, A. Then you run: preremove(D), remove-files(D), preremove(C), remove-files(C), preremove(B), remove-files(B), preremove(A), remove-files(A) To install you do the same thing, except you'd do breadth-first and you'd do postinstall(X) after each install-files(X). (I know this is not the current method, where all postinstalls are run in a batch at the end.) Brian -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/