For now, the formatting of the conflicts in the CUDF file (describing the universe of the resolution) is exactly the same as for regular dependencies.
This means that when a conflicting package version range is not present, the conflict is extended to all versions of this package instead of being removed.
- For a dependency A:1.0.0:2.0.0, if neither 1.0.0 nor 2.0.0 are available, we end up with depends: A, which makes sense because any version of A is better than nothing (still a warning to the user is needed)
- For a conflict A:1.0.0:2.0.0, if neither 1.0.0 nor 2.0.0 are available, we end up with conflicts: A, which is wrong because we would like to be able to install any other version of A
When the conflicting version range is not available in the CUDF universe, then set the conflict to a non-existing version instead of all versions (as we do for dependencies).
-> For the previous example, we should end up with conflicts: A = -2 which is basically removing the conflict