Bug 1581160

Summary: [modularity] Enabling different stream of installed module does not disable obsolete dependency
Product: [Fedora] Fedora Reporter: Rafael Fonseca <rdossant>
Component: dnfAssignee: rpm-software-management
Status: CLOSED WONTFIX QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: rawhideCC: dmach, mhatina, mmathesi, packaging-team-maint, rpm-software-management, vmukhame
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
: 1581226 (view as bug list) Environment:
Last Closed: 2018-05-28 11:23:57 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1478068, 1581226    

Description Rafael Fonseca 2018-05-22 09:21:37 UTC
Description of problem: If you enable a different stream of an installed moduleE depending on moduleD and the new stream depends on ModuleB, moduleD is not disable neither are its deps removed.


Version-Release number of selected component (if applicable): 2.7.5-13

How reproducible: always


Steps to Reproduce:
1.      data:
        artifacts:
          rpms: ["TestG-0:2-1.modB.noarch", "TestH-0:2-1.modB.noarch"]
        components:
          rpms:
            TestG: {rationale: 'rationale for TestG'}
            TestH: {rationale: 'rationale for TestH'}
        description: Module ModuleB description
        license:
          module: [MIT]
        name: ModuleB
        profiles:
          default:
            rpms: [TestG, TestH]
        stream: f27
        summary: Module ModuleB summary
        version: 1
      document: modulemd
      version: 2
      ---
      data:
        artifacts:
          rpms: ["TestM-0:1-1.modD.noarch"]
        components:
          rpms:
            TestM: {rationale: 'rationale for TestM'}
        description: Module ModuleD description
        license:
          module: [MIT]
        name: ModuleD
        profiles:
          default:
            rpms: [TestM]
        stream: f26
        summary: Module ModuleD summary
        version: 1 
      document: modulemd
      version: 2 
      ---
      data:
        artifacts:
          rpms: ["TestP-0:1-1.modE.noarch"]
        components:
          rpms:
            TestP: {rationale: 'rationale for TestP'}
        dependencies:
          - requires:
              ModuleD: ["f26"]
        description: Module ModuleE description
        license:
          module: [MIT]
        name: ModuleE
        profiles:
          default:
            rpms: [TestP]
        stream: f26
        summary: Module ModuleE summary
        version: 1 
      document: modulemd
      version: 2 
      ---
      data:
        artifacts:
          rpms: ["TestN-0:1-1.modD.noarch"]
        components:
          rpms:
            TestN: {rationale: 'rationale for TestN'}
        dependencies:
          - requires:
              ModuleB: ["f27"]
        description: Module ModuleE description
        license:
          module: [MIT]
        name: ModuleE
        profiles:
          default:
            rpms: [TestN]
        stream: f27
        summary: Module ModuleE summary
        version: 1 
      document: modulemd
      version: 2 

2. Enable moduleE:f26
3. Install moduleE:f26
4. Enable moduleE:f27

Actual results: moduleD is enabled and its packages are installed


Expected results: moduleD is disabled and its packages are removed


Additional info:

Comment 1 Merlin Mathesius 2018-05-22 16:29:28 UTC
The same problematic behavior occurs when step 4 in the description is replaced with "Install ModuleE:f27".

Comment 2 Martin Hatina 2018-05-28 11:23:57 UTC
Dnf shouldn't disable anything automatically, it's pretty dangerous behaviour and can possibly break system.