Bug 1579350 - DNF solver treats requirements of default modules as if they were enabled
Summary: DNF solver treats requirements of default modules as if they were enabled
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Fedora
Classification: Fedora
Component: dnf
Version: 28
Hardware: All
OS: Linux
unspecified
urgent
Target Milestone: ---
Assignee: rpm-software-management
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
: 1599643 (view as bug list)
Depends On:
Blocks: 1478068
TreeView+ depends on / blocked
 
Reported: 2018-05-17 12:39 UTC by Stephen Gallagher
Modified: 2018-12-06 10:29 UTC (History)
13 users (show)

Fixed In Version: dnf-4.0.4
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2018-11-22 18:15:27 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Stephen Gallagher 2018-05-17 12:39:56 UTC
Description of problem:
Fedora 28 shipped with the reviewboard:2.5 module stream as being the default stream for those packages. It has a runtime requirement on a non-default stream of django:1.6. The DNF solver is therefore treating the packages from django:1.6 as if they should suppress the RPMs it provides from the traditional RPM repository.

DNF should only treat the chained requirements this way if it is actually enabled (meaning that the reviewboard:2.5 module has been enabled on the system). Put another way, the "default" status of a module must not recurse down to its dependents automatically.

Version-Release number of selected component (if applicable):
dnf-2.7.5-12.fc28.noarch

How reproducible:
Every time

Steps to Reproduce:
1. Install Fedora 28 Server Edition
2. `dnf install python3-django`
3. `dnf install python-django-bash-completion`

Actual results:
python3-django cannot be installed:
Error: 
 Problem: conflicting requests
  - nothing provides python-django-bash-completion = 2.0.5-1.fc28 needed by python3-django-2.0.5-1.fc28.noarch


python-bash-completion comes from the django:1.6 module instead of the base RPM repo:
Installing:
 python-django-bash-completion    noarch    1.6.11.7-2.module_1595+34c51ab8     updates-modular     21 k


Expected results:
Unless the reviewboard stream has been enabled (either explicitly or by installing a package it provides), its dependencies that are themselves not explicitly listed as default streams must not impact the package selection.

It must be possible to install python3-django while the modular repos are present on the system.

Additional info:

The enablement of reviewboard:2.5 as a default module was also a mistake and we have since added policy prohibiting this in the future, but DNF must not behave poorly in situations such as this.

Comment 1 Stephen Gallagher 2018-05-21 16:16:18 UTC
*** Bug 1577394 has been marked as a duplicate of this bug. ***

Comment 2 Stephen Gallagher 2018-07-16 16:20:19 UTC
*** Bug 1599643 has been marked as a duplicate of this bug. ***

Comment 3 Stephen Gallagher 2018-07-16 16:22:30 UTC
Can we get an update on this ticket? It's causing real-world problems on F28 for anyone who is trying to use Django, so we would really like to see this fixed.

Even if the fix is to add a hack to ignore "reviewboard"'s default temporarily.

Comment 4 Martin Hatina 2018-07-25 13:24:04 UTC
Fixed in https://github.com/rpm-software-management/dnf/pull/1144

Comment 5 John Florian 2018-07-26 14:43:42 UTC
Count me among those caught out by this.  In my case I'm trying to deploy my own Django apps on F28 that have nothing to do with reviewboard.  What's my best immediate recourse, `rpm -i --nodeps python3-django`?

Comment 7 Jérôme Benoit 2018-12-06 10:29:23 UTC
Any chance to get the fix backported to dnf in currently supported fedora version ?


Note You need to log in before you can comment on or make changes to this bug.