Package Development

Basic Packaging

Advanced Packaging

Setup

To be able to create packages that you can use you will need to fork the repository you want to contribute to, and set up a clone of your fork (this is described in Contributing to Portmod):

You will also need to adjust repos.cfg to reference your fork instead of the original package repository. This will allow you to install packages you have added or modified via the merge prefix subcommand, which is necessary for testing the package before you submit it.

Example repos.cfg
[<repo>]
location = /path/to/your/cloned/fork
# You may want to disable auto_sync, as it may not work properly on your fork
auto_sync = False
...

When you have finished working with the repository, you may want to revert your changes to repos.cfg to make sure the repository is kept up to date when you run portmod sync. Otherwise you will need to manually make sure your fork is up to date.

Packaging Mods

See Package Directories for the basics of the files which go into the package directory.

For details more specific to the game and repository you are packaging for, refer to the guides on the wiki. The package repositories for each supported game have different packaging conventions to match the installation requirements of the engines.

You may also want to consult the base pybuild documentation, which package repositories build on top of.

Custom Repositories

Alternatively, you can create your own package repository as described in repos.cfg. Full details of repository metadata are described in Package Repositories.

If you publish your custom repository other people can

This guide does not currently document the necessary requirements to set up a package repository for a completely new game. If you wish to do so, contact the authors for assistance (contact details are provided in Portmod’s README).