Description of problem: After switching on the --best option by default, I'm not able to install conditional package from group in case that the same package exists in higher version in a module. Module is not enabled and doesn't have any default stream. On top of this, when the group package is not conditional but default or mandatory, group gets installed without any problem, the right ursine package is selected. Setup: there exists wget-0:1.19.5-5.fc29.x86_64 in enabled ursine repo in modular repo: comps: <group> <id>dnf-ci-testgroup</id> <default>false</default> <uservisible>true</uservisible> <display_order>1024</display_order> <name>DNF-CI-Testgroup</name> <description>Testgroup for DNF CI testing</description> <packagelist> <packagereq type="conditional" requires="filesystem-content">wget</packagereq> </packagelist> </group> modules.yaml goes like this, no defaults are defined: --- data: description: Testing module without defaults defined name: DnfCiModuleNoDefaults stream: development summary: Testing module without defaults version: 1 artifacts: rpms: - wget-0:1.20.5-5.module.x86_64 document: modulemd version: 2 ... # dnf install filesystem-content # dnf group install DNF-CI-Testgroup Error: Problem: problem with installed package filesystem-content-3.9-2.fc29.x86_64 - cannot install the best candidate for the job - package wget-1.20.5-5.module.x86_64 is excluded (try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages) # dnf repoquery wget Last metadata expiration check: 0:00:47 ago on Pá 8. února 2019, 10:45:20 CET. wget-0:1.19.5-5.fc29.src wget-0:1.19.5-5.fc29.x86_64 wget-0:1.20.5-5.module.src Version-Release number of selected component (if applicable): dnf stack from nightly copr repo: $ rpm -q dnf libdnf dnf-4.1.0-0.24g2594b59f.fc29.noarch libdnf-0.26.0-0.27g9352e595.fc29.x86_64 How reproducible: deterministic Steps to Reproduce: 1. checkout "turbo" branch from ci-dnf-stack repo 2. cd dnf-behave-tests 3. ./run-tests -i group.feature -n 'Install condidional package if required package has been installed' Actual results: Error: Problem: problem with installed package filesystem-content-3.9-2.fc29.x86_64 - cannot install the best candidate for the job - package wget-1.20.5-5.module.x86_64 is excluded (try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages) Expected results: Group gets installed without any error.
I create a pull request https://github.com/openSUSE/libsolv/pull/301 that change a logic for identification of a best candidate.
The patch was rejected by upstream
It looks like that Fedora libsolv downstream do not care about resolving the issue. The solution was rejected by downstream https://src.fedoraproject.org/rpms/libsolv/pull-request/6. Sorry I did my best.