rpkg 1.57 Release Notes

Released on December 07, 2018

Python compatibility

rpkg works with Python 2.6, 2.7, 3.6 and 3.7.

What’s new in rpkg 1.57

Send source mtime to “dist-git”

Modification time of uploaded files is now sent to dist-git.

New subcommand “flatpak-build”

The flatpak-build subcommand starts a build of the current git repository as a Flatpak. It’s pretty much identical to container-build, but the build target is determined by looking up the module that will be built into the flatpak in container.yaml and then determining what platform version that uses by traversing module dependencies.

Requires Python-2.7 and newer. Also libmodulemd library.

Support for “Factory”

Add the ability to pass in buildrequire and require overrides on a module build.

Add config options to parse the base module (e.g. platform) stream from the dist-git branch and apply a buildrequire override.

Raise an error if the module-build command receives optional arguments that conflict

Validate the “module build” - “optional” argument

When parsing arguments, rpkg will validate the module build - optional argument. Its format is unchanged. Example:

--optional', 'scmurl=git://pkgs.fedoraproject.org/modules/testmodule?#1234

Improve running tests with “tox”

Specify dependent packages in one place

setup.py is the place to inject dependent packages, both install or tests. All the packages are read from pip requirements files pypi.txt and test-pypi.txt, then modified and packages specific for Python 2.6 are added in setup.py.

tox.ini is updated accordingly as well. Major changes are:

  • some deeper dependent packages, which have dropped Python 2.6 support, are listed for “py26” specificially.

  • instead of enabling tox config usedevelop, install dependent packages listed in setup.py by pip install -e option.

  • run tests by setup.py nosetests which can install packages listed in tests_require.

As a result, dependent packages for all supported Python versions should be added to pypi.txt, which will be in install_requires eventually. Any packages specific to Python 2.6 or not should be listed in setup.py explicitly.

Refine test runner for “py26”

Dependent tools to run tests do not support Python 2.6 recently, like tox, that causes tox -e py26 fails to create a virtual environment with python2.6 interpreter.

This patch uses a Makefile to create a Python 2.6 environment with virtualenv manually and to organize steps to run tests with Python 2.6 and other Python versions in only one command make test.

make test can also use environment variable TOX_POSARGS to pass additional parameters to internal tox call.

Tests against py26 could be ignored by setting environment variable IGNORE_PY26.

Set configuration in case of “clone --branches” as well

Currently, the configuration settings for credential.helper and credential.useHttpPath and the template from clone_config are only applied when cloning into a single target directory. This change applies them to all target directories when called with the option --branches set.

Specify package manager for “mock-config”

The package manager setting has to be specified from the outside. Koji will happily return incorrect config without it.

“Contributing guide” added

File CONTRIBUTING.md was added. It contains recommendations and instructions how to successfully contribute to this project.

Change Logs

  • Use idna 2.7 for Python 2.6 (lsedlar)

  • Imports are sorted (onosek)

  • libmodulemd is missing on el7 - #402 (onosek)

  • Initialize bash autocompletion (onosek)

  • Set configuration in case of “clone –branches” as well (tim)

  • Fix fake spec file for clog tests - #400 (cqi)

  • Move argparse fix from fedpkg - #398 (onosek)

  • Send source mtime to dist-git - #220 (lsedlar)

  • Fix tests for mock package manager (lsedlar)

  • Specify package manager for mock-config (lsedlar)

  • Add contributing guide (onosek)

  • Validate the module build optional argument when parsing the argument (mprahl)

  • Add config options to parse the base module (e.g. platform) stream from the dist-git branch and apply a buildrequire override (mprahl)

  • Add the ability to pass in buildrequire and require overrides on a module build (mprahl)

  • Raise an error if the module build command receives optional arguments that conflict (mprahl)

  • Silence Python3 SafeConfigParser warnings - #388 (mmathesi)

  • Allow to pass posargs to tox from make (cqi)

  • Specify dependent packages in one place (cqi)

  • Don’t registry flatpak-build command on Python-2.6 (otaylor)

  • Add flatpak-build subcommand (otaylor)

  • Don’t pass the MBS API URL around as a parameter (otaylor)

  • TestContainerBuildWithKoji: tear down the mock appropriately (otaylor)

  • Refine test runner for py26 (cqi)