From Fedora Project Wiki
(Replaced content with "{{admon/important|This page is deprecated| All Fedora Modularity Documentation has moved to the new [https://docs.pagure.org/modularity/ Fedora Modularity Documentation we...")
(32 intermediate revisions by 3 users not shown)
Line 1: Line 1:
= Adding and building a module for Fedora =
{{admon/important|This page is deprecated| All Fedora Modularity Documentation has moved to the new [https://docs.pagure.org/modularity/ Fedora Modularity Documentation website] with source hosted along side the code in the [https://pagure.io/modularity Fedora Modularity website git repository]}}
 
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 [https://pagure.io/modulemd/raw/master/f/spec.yaml sample file] in the upstream git repository of modulemd contains a complete documentation of the required and optional yaml tags.
 
The Modularity team uses [http://pkgs.stg.fedoraproject.org/cgit/modules/testmodule.git/tree/testmodule.yaml a shorter modulemd file] to test builds, but it can also be used as a base for new modules. Another good example is
[http://pkgs.stg.fedoraproject.org/cgit/modules/base-runtime.git/plain/base-runtime.yaml base-runtime.yml]
 
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:
* 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)
<br>
Then run <pre>./run-checkmmd.sh /path/to/modulemd/file</pre> and check the output for errors.
 
== Building the module locally ==
 
The build_module script from the [https://github.com/asamalik/build-module 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.

Revision as of 07:57, 20 February 2017

Important.png
This page is deprecated
All Fedora Modularity Documentation has moved to the new Fedora Modularity Documentation website with source hosted along side the code in the Fedora Modularity website git repository