rdopkg - RPM packaging automation tool

Clone this repo:
  1. 942d7a9 Add upstream_branch metadata to rdopkg releases by Alfredo Moralejo · 8 weeks ago master 1.8.0
  2. e5721d9 Update README information by Joel Capitao · 7 months ago
  3. fc74bf6 Add support of Python3.12 by Joel Capitao · 7 months ago 1.7.0
  4. 24ee21a Use rpm.ds(hdr) instead of hdr.dsFromHeader() by Joel Capitao · 7 months ago
  5. 51fc6ca Get rid of obsolete find_loader by Joel Capitao · 7 months ago

rdopkg

rdopkg is an RPM packaging automation tool. It provides automation for package maintenance including git-based patches management and automagic rebases to new upstream versions with nice .spec changes, changelogs and commit messages for both CLI and CI usage. It also contains various functionality we needed for RDO packaging, such as advanced requirements.txt management for python projects and rdoinfo integration.

Generic distgit and patches management functionality and conventions provided by rdopkg proved to be efficient way of packaging fast-moving upstream projects with minimal human effort but without losing control over individual packages.

rdopkg is now considered stable. It was originally developed to serve the needs of the mighty RDO packager-warriors and their weapons such as DLRN, but it can help with any RPM package. For example, see how you can manage your RPMs with rdopkg.

rdopkg uses software factory for CI and every commit goes through automatic unit, feature, and integration testing as well as human reviews.

See open rdopkg reviews.

Installation

rdopkg is currently compatible with both python 3 only.

from Fedora/EPEL repos (default)

rdopkg is available on Fedora 37 and newer:

dnf install rdopkg

On CentOS Stream/RHEL 8/9, rdopkg is available from EPEL.

On CentOS Stream 8:

dnf config-manager --set-enabled powertools
dnf install epel-release
dnf install rdopkg

On CentOS Stream 9:

dnf config-manager --set-enabled crb
dnf install epel-release
dnf install rdopkg

from source

If you want to hack rdopkg or just have the latest fixes without waiting for next release, I suggest using the git repo directly:

git clone https://github.com/softwarefactory-project/rdopkg
pip install -e rdopkg

You may set the preference over rdopkg RPM by correctly positioning ~/.local/bin/rdopkg in your $PATH.

Or you can use virtualenv to avoid conflicts with RPM:

git clone https://github.com/softwarefactory-project/rdopkg
cd rdopkg
virtualenv --system-site-packages ~/rdopkg-venv
source ~/rdopkg-venv/bin/activate
pip install -e .
ln `which rdopkg` ~/bin/rdopkg-dev

rdopkg-dev --version

Required python modules are listed in requirements.txt and also in rdopkg.spec as RPM Requires.

from PyPI

For your convenience, rdopkg is also available from the Cheese Shop. This should come in handy especially if you want to reuse rdopkg as a module.

pip install rdopkg

Note that you need to have python3-rpm package installed in order for RPM macro related features to work as it isn't available from PyPI.

The Manual

Exhaustive rdopkg manual is available, you can:

  • read it nicely rendered on github: rdopkg manual
  • run man rdopkg if you installed from RPM
  • render it to HTML/man using make doc

You might also be interested in RDO packaging intro which contains some examples of rdopkg usage and more.

Bugs

Please use the github Issues to report bugs. I usually fix critical bugs within days.