[Hackage] #234: track installed files to allow uninstall

#234: track installed files to allow uninstall -----------------------------+---------------------------------------------- Reporter: duncan | Owner: Type: enhancement | Status: new Priority: normal | Milestone: Component: Cabal library | Version: 1.2.3.0 Severity: normal | Keywords: Difficulty: hard (< 1 day) | Ghcversion: 6.8.2 Platform: | -----------------------------+---------------------------------------------- `cabal-install` needs to be able to track all the files it installs so that it'll be possible to uninstall packages. The copy/install code should be extended to be able to generate a list of files and hashes of files that will be installed. `cabal-install` could use that to write out a manifest file and use that later to allow uninstalling. One solution might be to restructure the install code to gather the source files that it would install rather than just doing it. Once that list of files is known we can copy them all in one go, and do other things like check for clashing target files and generate manifests etc. -- Ticket URL: http://hackage.haskell.org/trac/hackage/ticket/234 Hackage http://haskell.org/cabal/ Hackage: Cabal and related projects

#234: track installed files to allow uninstall ----------------------------+----------------------------------------------- Reporter: duncan | Owner: Type: enhancement | Status: new Priority: normal | Milestone: Cabal-1.6 Component: Cabal library | Version: 1.2.3.0 Severity: normal | Resolution: Keywords: | Difficulty: hard (< 1 day) Ghcversion: 6.8.2 | Platform: ----------------------------+----------------------------------------------- Changes (by duncan): * milestone: => Cabal-1.6 -- Ticket URL: http://hackage.haskell.org/trac/hackage/ticket/234#comment:1 Hackage http://haskell.org/cabal/ Hackage: Cabal and related projects

#234: track installed files to allow uninstall
----------------------------+-----------------------------------------------
Reporter: duncan | Owner:
Type: enhancement | Status: new
Priority: normal | Milestone: Cabal-1.6
Component: Cabal library | Version: 1.2.3.0
Severity: normal | Resolution:
Keywords: | Difficulty: hard (< 1 day)
Ghcversion: 6.8.2 | Platform:
----------------------------+-----------------------------------------------
Changes (by guest):
* cc: Misha, Aizatulin,

#234: track installed files to allow uninstall ----------------------------+----------------------------------------------- Reporter: duncan | Owner: Type: enhancement | Status: new Priority: normal | Milestone: Cabal-1.6 Component: Cabal library | Version: 1.2.3.0 Severity: normal | Resolution: Keywords: | Difficulty: hard (< 1 day) Ghcversion: 6.8.2 | Platform: ----------------------------+----------------------------------------------- Changes (by claus): * cc: claus (added) Comment: (following Duncan's suggestion to record my opinion on the importance of this ticket) When I suggested "uninstall", 2 years ago (#106), I was very surprised that it wasn't rated as both urgent and important. The *only* reason for delaying it is that it is not something you'd want to get wrong (mostly: removing stuff you're not supposed to touch; though leaving garbage all over the place isn't nice, either). The very first thing I check about new software is how to get out of it after I start it, and, having had some trouble with nearly-impossible-to- uninstall software, I've come to see software that installs itself without providing for proper uninstallation as deeply unprofessional, the never- use-their-stuff-again kind of experience (installing everything into a single new directory that can be removed without causing damage is okay as a minimum requirement, but if you do anything else, you'd better know how to undo it). Doing temporary test-installs before releases (to ensure that packages are complete), forgetting/changing installation prefixes (Cabal's handling of which differs between platforms), having different compiler versions with different Cabals, Cabal evolving and putting things in different places, more and more packages on Hackage that people will want to install to try them out - all reasons why uninstall support is needed before spreading the news about Hackage/Cabal leaves potential Haskellers with a bad taste (not to mention that left-overs from previous installs bring the risk of inconsistent installations). I really thought the importance and urgency of this ticket was self- evident but, if not, I hope this explains my point of view?-) Btw, there seems to have been some relevant discussion in this thread http://www.haskell.org/pipermail/cabal-devel/2008-May/002907.html concluding, I think, that some refactoring would be needed before tracking could work. -- Ticket URL: http://hackage.haskell.org/trac/hackage/ticket/234#comment:3 Hackage http://haskell.org/cabal/ Hackage: Cabal and related projects

#234: track installed files to allow uninstall ----------------------------+----------------------------------------------- Reporter: duncan | Owner: Type: enhancement | Status: new Priority: normal | Milestone: Cabal-1.8 Component: Cabal library | Version: 1.2.3.0 Severity: normal | Resolution: Keywords: | Difficulty: hard (< 1 day) Ghcversion: 6.8.2 | Platform: ----------------------------+----------------------------------------------- Changes (by duncan): * milestone: Cabal-1.6 => Cabal-1.8 -- Ticket URL: http://hackage.haskell.org/trac/hackage/ticket/234#comment:4 Hackage http://haskell.org/cabal/ Hackage: Cabal and related projects

#234: track installed files to allow uninstall ----------------------------+----------------------------------------------- Reporter: duncan | Owner: SamB Type: enhancement | Status: assigned Priority: normal | Milestone: Cabal-1.8 Component: Cabal library | Version: 1.2.3.0 Severity: major | Resolution: Keywords: | Difficulty: hard (< 1 day) Ghcversion: 6.8.2 | Platform: ----------------------------+----------------------------------------------- Changes (by SamB): * status: new => assigned * owner: => SamB * severity: normal => major -- Ticket URL: http://hackage.haskell.org/trac/hackage/ticket/234#comment:5 Hackage http://haskell.org/cabal/ Hackage: Cabal and related projects

#234: track installed files to allow uninstall ----------------------------+----------------------------------------------- Reporter: duncan | Owner: SamB Type: enhancement | Status: assigned Priority: normal | Milestone: Cabal-1.8 Component: Cabal library | Version: 1.2.3.0 Severity: major | Resolution: Keywords: | Difficulty: hard (< 1 day) Ghcversion: 6.8.2 | Platform: ----------------------------+----------------------------------------------- Comment (by igloo): A related problem is bindists: For GHC, we want to put files like {{{ dist/build/libHSbase-4.0.a }}} in bindists, so that to install a bindist we can just run (more or less) "Setup install". However, we don't want to include files that don't get installed like {{{ dist/build/Data/String.o }}} as that bloats the bindist size, so we can't just include the whole `dist/` directory. Currently we break the abstraction and pick out the files that we want when creating the bindists, but it would be nice to be able to ask Cabal what files it needs to use in order to do the installation. -- Ticket URL: http://hackage.haskell.org/trac/hackage/ticket/234#comment:6 Hackage http://haskell.org/cabal/ Hackage: Cabal and related projects

#234: track installed files to allow uninstall ----------------------------+----------------------------------------------- Reporter: duncan | Owner: SamB Type: enhancement | Status: assigned Priority: normal | Milestone: Cabal-1.8 Component: Cabal library | Version: 1.2.3.0 Severity: major | Resolution: Keywords: | Difficulty: hard (< 1 day) Ghcversion: 6.8.2 | Platform: ----------------------------+----------------------------------------------- Comment (by duncan): Replying to [comment:6 igloo]:
A related problem is bindists:
Why not just construct the bindist from the result of `Setup copy --destdir=image` ? -- Ticket URL: http://hackage.haskell.org/trac/hackage/ticket/234#comment:7 Hackage http://haskell.org/cabal/ Hackage: Cabal and related projects

#234: track installed files to allow uninstall ----------------------------+----------------------------------------------- Reporter: duncan | Owner: SamB Type: enhancement | Status: assigned Priority: normal | Milestone: Cabal-1.8 Component: Cabal library | Version: 1.2.3.0 Severity: major | Resolution: Keywords: | Difficulty: hard (< 1 day) Ghcversion: 6.8.2 | Platform: ----------------------------+----------------------------------------------- Comment (by igloo): Replying to [comment:7 duncan]:
Replying to [comment:6 igloo]:
A related problem is bindists:
Why not just construct the bindist from the result of `Setup copy --destdir=image` ?
That puts paths into wrapper scripts, `package.conf`, etc. -- Ticket URL: http://hackage.haskell.org/trac/hackage/ticket/234#comment:8 Hackage http://haskell.org/cabal/ Hackage: Cabal and related projects

#234: track installed files to allow uninstall ----------------------------+----------------------------------------------- Reporter: duncan | Owner: SamB Type: enhancement | Status: assigned Priority: normal | Milestone: Cabal-1.8 Component: Cabal library | Version: 1.2.3.0 Severity: major | Resolution: Keywords: | Difficulty: hard (< 1 day) Ghcversion: 6.8.2 | Platform: ----------------------------+----------------------------------------------- Changes (by mkrauskopf): * cc: mkrauskopf (added) -- Ticket URL: http://hackage.haskell.org/trac/hackage/ticket/234#comment:9 Hackage http://haskell.org/cabal/ Hackage: Cabal and related projects

#234: track installed files to allow uninstall ---------------------------------+------------------------------------------ Reporter: duncan | Owner: Type: enhancement | Status: new Priority: normal | Milestone: Cabal-1.8 Component: cabal-install tool | Version: 1.2.3.0 Severity: major | Resolution: Keywords: | Difficulty: hard (< 1 day) Ghcversion: | Platform: ---------------------------------+------------------------------------------ Changes (by duncan): * status: assigned => new * owner: SamB => * ghcversion: 6.8.2 => * component: Cabal library => cabal-install tool -- Ticket URL: http://hackage.haskell.org/trac/hackage/ticket/234#comment:10 Hackage http://haskell.org/cabal/ Hackage: Cabal and related projects

#234: track installed files to allow uninstall ---------------------------------+------------------------------------------ Reporter: duncan | Owner: Type: enhancement | Status: new Priority: normal | Milestone: Cabal-1.8 Component: cabal-install tool | Version: 1.2.3.0 Severity: major | Keywords: Difficulty: hard (< 1 day) | Ghcversion: Platform: | ---------------------------------+------------------------------------------ Comment(by Tobu): I am also interested in this. I wasn't able to find what code was copying the files from reading the source (sad), but mailing list threads provided more information: * http://www.haskell.org/pipermail/cabal-devel/2008-May/002817.html * http://www.haskell.org/pipermail/cabal-devel/2006-August/000152.html * http://www.haskell.org/pipermail/cabal-devel/2006-September/000168.html The September thread is helpful. Also note that the manifest should log ghc-pkg package registrations. -- Ticket URL: http://hackage.haskell.org/trac/hackage/ticket/234#comment:11 Hackage http://haskell.org/cabal/ Hackage: Cabal and related projects
participants (1)
-
Hackage