Exclude DLLs being upgraded to full modules #4250
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
If you manully install RPM alongside a CKAN install of Deferred and then try to upgrade RPM to CKAN-managed, it doesn't let you:
Cause
As of #4067, a DLL can be upgraded to a full module, but the relationship resolver's consistency check still checks conflicts against the pre-upgrade DLL list.
In the case of Deferred, it conflicts with older versions of RPM, but versions can't be checked with DLLs, so the registry starts out in a conflicted state and remains that way despite the planned upgrade to a non-conflicting module.
Changes
Now the relationship resolver computes a post-install set of DLLs based on the list from the registry minus the identifiers of modules being installed. This allows upgrading a version-specifically-conflicted DLL to a module with a version that doesn't match the conflict. A test is included to catch any future regressions.
Fixes #4225.