-
-
Notifications
You must be signed in to change notification settings - Fork 345
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Dependency processing #32
Comments
As @NathanKell pointed out on IRC, this isn't safe if one mod needs to overwrite part of another mod (which also relates to #15 ). We may need some sort of signal to indicate that dependencies need to be installed first. If we do go down that route, using it should be discouraged, as well-packaged mods should be install-order independent. |
Discouraged but still present - for example, mods for mods (how meta) will definitely need this. |
@Wizarth : Most mods of mods use ModuleManager to do their changes. This means they don't need to overwrite any files, and install order is truly unimportant. So while RealismOverhaul must be installed after TACLS, it can be installed before before or after any of the other mods it depends upon, just as long as they're all present before one starts the actual game. So while dependencies themselves are super common (and cyclical dependencies are fine), dependency ordering should be quite rare (and cyclical dependencies are disallowed). |
Stealing from the debian policy manual, I'm going to suggest we have I'm also rather partial to their entire relationship model, which includes:
In #11 we also suggest having a @NathanKell, in the example we had of RealismOverhaul, we might say that it A typical install ( (Actual switch options are indicative only, and may change.) |
Sounds good to me. |
Okay, this is my work unit for the day, and also quite possibly the biggest remaining bit of needed functionality. We'll be abstracting a bunch of things into a generalised relationship class. We'll generate a list of install rounds; nominally just one, but if something has a pre-depends that will create an install round before it (and if there's a pre-depends in that, then another install round before that and so on). To start with, I'll just be doing dependency resolution; anything with a 'pre-depends' will just throw an exception for now. |
I'm following dependency chains, but they're raising a few issues. When we install a module, we must install its dependencies, and we may install its But what do we do in the case of chained recommendations? If A depends on B, and B recommends C, then do we install C when asked to install A? I'm inclined to go with the following rules:
This meas that the default experience (with recommends) gives both user and module authors the configuration they'd expect. Recommends is a strong relationship, so those things should be installed. Users running Users running Thoughts and feedback welcome. |
Do we know what apt-get does in this circumstance, for reference? On Sun, Oct 12, 2014 at 6:33 PM, Paul Fenwick notifications@github.com
|
Aaah, WWAGD? I don't know, but that's a good thing to check. :) |
It looks like apt-get switches things on and off the whole way down. So by default, you get all the recommended packages for everything. With suggests turned on, you get a kitchen sink. So I'm essentially doing the same there, but tweaking But thanks for mentioning that, WWAGD was indeed the obvious way to see if my plan had potential for sanity. :) ¹ Debian lore has it that installing gparted with suggestions will also give you apache, and a full dev environment for three different languages. |
Part of KSP-CKAN#32. Looks like it's mostly working. Will have to remove some diagnostics from here, and have discovered bugs in the installer which need fixing.
Part of KSP-CKAN#32. Looks like it's mostly working. Will have to remove some diagnostics from here, and have discovered bugs in the installer which need fixing.
Part of KSP-CKAN#32. Looks like it's mostly working. Will have to remove some diagnostics from here, and have discovered bugs in the installer which need fixing.
Part of KSP-CKAN#32. Looks like it's mostly working. Will have to remove some diagnostics from here, and have discovered bugs in the installer which need fixing.
Implements much of #32 (relationship handling).
More progress on this in 306cc03 with |
It sure looks like we're doing the core of this now, so closing. |
Part of KSP-CKAN#32. Looks like it's mostly working. Will have to remove some diagnostics from here, and have discovered bugs in the installer which need fixing.
Make certain that at least the default repo exists
We need to be able to do dependency processing. Right now, we just check if your dependencies are installed, and fail if they're not. That's not ideal.
Real Solar System is a good example of something with "hard" dependencies here. It depends upon its texture files, but there are multiple texture files available, and they in turn depend upon having the RSS base installed.
I think the following algorithm should work:
provides
field, as mentioned in the spec.This means installing RSS with a texture pack works fine. Installing just an RSS texture pack will pull in the dependency on RSS, which should work fine.
It's important that we do allow circular dependencies, because they already exist (X + Y must be installed together type things).
In order to add dependencies, we need features to allow the client to be aware of all mods it has available.
The text was updated successfully, but these errors were encountered: