From Fedora Project Wiki
Line 15: Line 15:
There is a document [https://fedoraproject.org/wiki/Modularity/Development/Developing_and_Building_Modules#How_to_get_the_list_of_all_the_dependencies.3F Developing and Building Modules] that shows how to get the list of dependencies that need to be added to the modulemd file so that the module can be built.
There is a document [https://fedoraproject.org/wiki/Modularity/Development/Developing_and_Building_Modules#How_to_get_the_list_of_all_the_dependencies.3F Developing and Building Modules] that shows how to get the list of dependencies that need to be added to the modulemd file so that the module can be built.


Once the modulemd file is finished, it is a good idea to check if there any errors in the yaml syntax.
The [https://github.com/fedora-modularity/check_modulemd check_modulemd] program checks modulemd files for errors. You need to install some packages to use this:
The [https://github.com/fedora-modularity/check_modulemd check_modulemd] program checks modulemd files for errors. You need to install some packages to use this:
* python2-aexpect - dependency for python-avocado
* python2-aexpect - dependency for python-avocado

Revision as of 11:11, 18 January 2017

Adding and building a module for Fedora

This document describes the process of adding a new module to the Fedora Modularity project, how to build it locally and how to build it in Fedora infrastructure

Process and policy for how to add a module to Fedora

Adding a module repository is a manual process atm. Find someone from the releas-engineering group to add the new repository and give you write access. Later on this will be automated by MBS, the module build server, but this is still being worked on.

Writing a new modulemd file and verifying its syntax

A modulemd file is a yaml file that contains the module metadata like description, license and dependencies. The sample file in the upstream git repository of modulemd contains a complete documentation of the required and optional yaml tags.

The Modularity team uses a shorter modulemd file to test builds, but it can also be used as a base for new modules. Another good example is base-runtime.yml

There is a document Developing and Building Modules that shows how to get the list of dependencies that need to be added to the modulemd file so that the module can be built.

Once the modulemd file is finished, it is a good idea to check if there any errors in the yaml syntax. The check_modulemd program checks modulemd files for errors. You need to install some packages to use this:

  • python2-aexpect - dependency for python-avocado
  • python2-avocado - avocado testing framework
  • python2-modulemd - Module metadata manipulation library
  • python-enchant - spell checker library (needed only for check_modulemd.py)
  • hunspell-en-US - English dictionary (needed only for check_modulemd.py)


Then run

./run-checkmmd.sh /path/to/modulemd/file

and check the output for errors.

Building the module locally

The build_module script from the build-module repository on github makes local module builds really easy. It sets up the environment and then builds a module and its components locally with mock. The only requirement besides the build-module repository is to have docker installed and running on your system.

Building the module in Fedora infrastructure

This step requires that the git repo with the modulemd file has been pushed to git://pkgs.stg.fedoraproject.org/modules/. Check with rel-eng to gain write access there. Also note that this is currently using the Fedora staging infrastructure as modules haven't been enabled in the Fedora production environment yet.