google / sagetv

SageTV is a cross-platform networked DVR and media management system
http://forums.sagetv.com/
Apache License 2.0
267 stars 174 forks source link

Update Plugin Manager to remove unneeded plugin dependencies #18

Open tmiranda1962 opened 9 years ago

tmiranda1962 commented 9 years ago

When a plugin is uninstalled the plugin manager should also remove all dependencies that are not needed for any other plugin. I have written code to do this for the "Remove Plugin and dependencies" plugin.

CraziFuzzy commented 9 years ago

The issue is we need to somehow mark what plugins were manually installed. It's entirely possible, for instance, that a manually installed plugin (Phoenix Core for instance), is meeting a prerequisite for only a single downstream plugin. In most cases, you would not always want removing BMT to also remove the Phoenix Core. Even though BMT might have been the only plugin that was using Phoenix Core, we can't assume that removing BMT should also remove the core. right?

tmiranda1962 commented 9 years ago

Correct. I wrote some code that uses a recursive algorithm to walk the plugin tree and only remove those dependency plugins that are not dependencies of other plugins. Take a look here: https://code.google.com/p/tmiranda/source/browse/#svn%2Ftrunk%2FRPAD%2Fsrc%2Ftmiranda%2Frpad

Once I wrap my head around the core I could take a shot at it but right now I'm not up to it.

On Mon, Aug 17, 2015 at 9:11 PM, Christopher Piper <notifications@github.com

wrote:

The issue is we need to somehow mark what plugins were manually installed. It's entirely possible, for instance, that a manually installed plugin (Phoenix Core for instance), is meeting a prerequisite for only a single downstream plugin. In most cases, you would not always want removing BMT to also remove the Phoenix Core. Even though BMT might have been the only plugin that was using Phoenix Core, we can't assume that removing BMT should also remove the core. right?

— Reply to this email directly or view it on GitHub https://github.com/google/sagetv/issues/18#issuecomment-132015281.

Narflex commented 9 years ago

I agree with Fuzzy's comment...I don't think this is a good idea to do unless we are also tracking which plugins were manually installed. Otherwise you could remove something the user manually requested to install.

tmiranda1962 commented 9 years ago

Maybe make it an option? I think there are very few users who will manually install a plugin that happens to be a dependency of another plugin. Why would a user do that in the first place? On Aug 18, 2015 2:38 PM, "Jeffrey Kardatzke" notifications@github.com wrote:

I agree with Fuzzy's comment...I don't think this is a good idea to do unless we are also tracking which plugins were manually installed. Otherwise you could remove something the user manually requested to install.

— Reply to this email directly or view it on GitHub https://github.com/google/sagetv/issues/18#issuecomment-132312697.

Narflex commented 9 years ago

Fuzzy gave a reason why someone would do it. :) And I don't see that much actual benefit from removing plugins that are no longer needed as they aren't hurting anything....but if you remove something the user actually wanted there, then that's a problem.

Making some other option that removes all the unneeded dependencies via first figuring them out, and then prompting the user about what's going to be removed, that would be fine with me. :) But would of course then require extra things in the STV to make that happen. Lol...I guess this could actually be a plugin. :D

tmiranda1962 commented 9 years ago

Ok, you win :) On Aug 18, 2015 3:19 PM, "Jeffrey Kardatzke" notifications@github.com wrote:

Fuzzy gave a reason why someone would do it. :) And I don't see that much actual benefit from removing plugins that are no longer needed as they aren't hurting anything....but if you remove something the user actually wanted there, then that's a problem.

Making some other option that removes all the unneeded dependencies via first figuring them out, and then prompting the user about what's going to be removed, that would be fine with me. :) But would of course then require extra things in the STV to make that happen. Lol...I guess this could actually be a plugin. :D

— Reply to this email directly or view it on GitHub https://github.com/google/sagetv/issues/18#issuecomment-132323126.

kkuhler commented 9 years ago

What about the ability to see what a plugin is dependent on and what dependents on it in its properties. That at least allows for manually removing unneeded plugins.

Narflex commented 9 years ago

Not a bad idea at all. :)