Description of problem: Let's say you installed version 1 of ModuleB with rpms: TestG and TestH. Then you update it to version 2 which has rpms TestG and TestI. TestH is not removed. Version-Release number of selected component (if applicable): 0:2.7.5-13 How reproducible: always Steps to Reproduce: 1. --- document: modulemd version: 2 data: artifacts: rpms: ["TestG-0:1-1.modB.noarch", "TestH-0:1-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: f26 summary: Module ModuleB summary version: 1 --- data: artifacts: rpms: ["TestG-0:1-2.modB.noarch", "TestI-0:1-1.modB.noarch"] components: rpms: TestG: {rationale: 'rationale for TestG'} TestI: {rationale: 'rationale for TestI'} description: Module ModuleB description license: module: [MIT] name: ModuleB profiles: default: rpms: [TestG, TestI] stream: f26 summary: Module ModuleB summary version: 2 document: modulemd version: 2 2. Install ModuleB:f26:1 3. Update ModuleB Actual results: TestH is kept in the system Expected results: TestH is removed rpmdb changes are | State | Packages | | upgraded | TestG/1-2.modB | | removed | TestH/1-1.modB | | installed | TestI/1-1.modB | Additional info:
Module version doesn't obsolete older module versions. DNF merges NEVRAs from all existing module versions within a stream and let depsolver to pick the best versions. If an RPM is supposed to be obsoleted, another RPM has to obsolete as usual.