Skip to content

openSUSE/product-composer

Repository files navigation

product-composer

This is the successor of product-builder. A tool to create rpm product repositories inside of Open Build Service based on a larger pool of packages.

It is starting as small as possible, just enough for ALP products atm.

Currently it supports:
  • processing based on a list of rpm package names
  • optional filters for architectures, versions and flavors can be defined
  • it can either just take a single rpm of a given name or all of them
  • it can post process updateinfo data
  • post processing like rpm meta data generation
Not yet implemented:
  • create bootable iso files

Development

Create the development environment:

$ python -m venv .venv
$ .venv/bin/python -m pip install -e ".[dev]"

Run tests:

$ .venv/bin/python -m pytest -v tests/

Build documentation:

$ make docs

Installation

Packaging and distributing a Python application is dependent on the target operating system(s) and execution environment, which could be a Python virtual environment, Linux container, or native application.

Install the application to a self-contained Python virtual environment:

$ python -m venv .venv $ .venv/bin/python -m pip install <project source> $ cp -r <project source>/etc .venv/ $ .venv/bin/productcomposer --help

Execution

The installed application includes a wrapper script for command line execution. The location of this scripts depends on how the application was installed.

Configuration

The application uses TOML files for configuration. Configuration supports runtime parameter substitution via a shell-like variable syntax, i.e. var = ${VALUE}. CLI invocation will use the current environment for parameter substitution, which makes it simple to pass host-specific values to the application without needing to change the config file for every installation.

mailhost = $SENDMAIL_HOST

Logging

The application uses standard Python logging. All loggins is to STDERR, nd the logging level can be set via the config file or on the command line.