Modularity

Module Obsoletes

Fedora 36 Modularity project comes with a new feature of EOL-ing/obsoleting of old modular streams.

The obsolete feature itself has been introduced in libmodulemd-2.10.0, but the full support within the modular pipeline became available in F36.

Using Module Obsoletes

  1. Add obsoletes in the module-defaults repository, branch f36. Use <module-name>:<stream>.yaml naming convention for the obsoletes metadata files. Make sure the files are stored in the obsoletes/ directory.

    Follow the module obsoletes specification for the obsoletes data format. As of the F36 release, there’s been v1 specification available and supported in the pipeline.

  2. Configure pungi to use the obsoletes and create a modular compose using pungi.

    The relevant pungi config snippet:

        module_obsoletes_dir = {
            'scm': 'git',
            'repo': 'https://pagure.io/releng/fedora-module-defaults.git',
            'branch': 'f36',  # must match the fedora-module-defaults branch
            'dir': 'obsoletes'
        }

    Follow pungi docs on how to create a modular compose. Check the gathering phase of a modular compose and the corresponding configuration reference.

  3. The obsoletes metadata will appear in the modules.yaml file of the resulting repodata.

    When the obsoletes metadata appear in the repodata (modules.yaml file), DNF is expected to handle the information regarding obsoletes and react accordingly.

For the detailed generic workflow, please follow the Fedora Modularity docs.

There’s a known bug in pungi which doesn’t allow to obsolete multiple streams of the same module. The issue is tracked in pungi#1592 in Pagure.