power to the packagers
Clone or download
yac tests: introduce coverage reports using pytest-cov
Modify tox.ini to generate test coverage reports for unit tests.
Add a custom post-run action to generate html report and fetch them
to job results.
Ensure tox venv pythonpath is set to avoid conflict with system
packages since the venv are created with site-packages.

Change-Id: Ibe266494c78498594f911834f6f3587a925f2b1f
Latest commit d637f8a Nov 27, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
doc doc: fix spelling of rdopkg Sep 25, 2018
examples info: use distroinfo to access rdoinfo Jun 27, 2018
features spec: fix detection on short %macros Nov 26, 2018
playbooks tests: introduce coverage reports using pytest-cov Dec 10, 2018
rdopkg Add support for *info in clone command Nov 29, 2018
releasenotes/notes Start using reno to manage release notes Aug 15, 2018
tests tests: use pytest.parametrize in spec tests Sep 26, 2018
.gitreview Migrate to softwarefactory-project.io Jun 6, 2017
.zuul.yaml tests: introduce coverage reports using pytest-cov Dec 10, 2018
HACKING.md Remove legacy coprbuild action Sep 12, 2017
LICENSE Initial commit Dec 9, 2014
Makefile Remove rdopkg.spec that moved to Fedora distgit Sep 7, 2017
README.md Typo fixes from topy Sep 25, 2017
setup.cfg meta: update setup.cfg summary Sep 11, 2018
setup.py setup.py: remove versioned requires Jul 25, 2017
test-requirements.txt tests: introduce coverage reports using pytest-cov Dec 10, 2018
tox.ini tests: introduce coverage reports using pytest-cov Dec 10, 2018



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 under constant development, serving mainly the needs of the mighty RDO packager-warriors and their weapons such as DLRN, but it strives to help all RPM packagers. 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.

rdopkg is fully reusable but the goal of also serving as packaging CLI tool framework as described in pwnpkg proved to be out of scope. However, (not only jruzicka's) rants ignited rpkg2 project which aims to provide exactly that. If you're interested in writing you own packaging tools such as new fedpkg/copr-cli we deserve, rpkg2 seems like a good place to start and influence with good ideas.


from Fedora/EPEL repos (default)

rdopkg is available on Fedora 25 and newer:

dnf install rdopkg

On CentOS/RHEL 7, rdopkg is available from EPEL.

On CentOS 7:

yum install epel-release
yum install rdopkg

On RHEL 7:

yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum 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
cd rdopkg
python setup.py develop --user

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
python setup.py develop
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 python2-rpm(resp. python3-rpm) package installed in order for RPM macro related featuers 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.


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