Koji 1.23.0 Release notes

All changes can be found at pagure. Most important changes are listed here.

Migrating from Koji 1.22/1.22.1

For details on migrating see Migrating to Koji 1.23

Security Fixes


Client Changes

cli: clone-tag fails on failed multicalls

Previously some errors could have been hidden which could have led to missing content in target tag. Now we are failing on any error.

improved download_file

In the previous version we introduced unified download_file method which also checks downloaded content. There are minor updates improving this function especially in reaction to errors.

cli: add –task and –source options to list-builds command

Builds now can be queried via task or source fields.

show log urls for failed tasks

When watching for task progress, failed tasks will also display links to relevant logs.

load plugins also from /usr/lib64

Fix of the bug which missed plugins in /usr/lib64 prefix.

clone-tag –config also clones extra info

Formerly cloning skipped extra values. Nevertheless, extra values are becoming an important part of config, so from now we are cloning them.

Library Changes

getRPMHeaders now fetch all headers by default

Simple change of library function default behaviour.

API Changes

lowercase sigkeys during import/query where needed

Case of signature hashes is properly ignored.

tagChangedSince reacts on changes in extra

It is probably mostly used by kojira, but it can be of some interest to automation scripts.

Because of this, kojira will now correctly regenerate repos when tag extra values change.

getAverageBuildDuration sliding window

The getAverageBuildDuration hub call returned an average for all builds for the given package. However, old data could be irrelevant to new versions of packages. Now the call offers an age option to limit the query (specified as number of months).

The koji builder daemon now uses this option with a value of 6 months when adjusting the weight of buildArch tasks.

getBuildConfig returns inheritance history

Additional option return inheritance chain for extra values and architectures. This behaviour is meant to be used with next change.

blocking inherited extra

Inherited tag extra fields could have been overridden but not removed. Now it can be done via CLIs edit-tag or editTag2 respectively which has a new block_extra option.

deprecate getGlobalInheritance

This call was never used in Koji. Clients should instead use the readFullInheritance call. The getGlobalInheritance call will be completely removed in Koji 1.25.

remove deprecated list-tag-history / tagHistory

Final removal.

Remove deprecated host.getTask call

Final removal.

Builder Changes

builder: configurable TTL for buildroots

Previously these times were hard coded. The buildroot_basic_cleanup_delay setting controls how long the builder will wait before basic cleanup of the buildroot (removing most content but leaving the directory). The default value is two minutes. The buildroot_final_cleanup_delay setting controls how long the build will wait before final cleanup of the buildroot (removing the rest). The default value is one day. Both values are specified in seconds.

For historical context on why there are two separate delays, see this bug <https://bugzilla.redhat.com/show_bug.cgi?id=192153>.

livemedia-creator: pass –nomacboot on non-x86_64

Additional option was needed for booting on non-x86_64 archs.

builder: handle btrfs subvolumes in ApplianceTask

BTRFS needed special handling in ApplianceTask to work.

kojid: fix extra-boot-args option

Bug which prevented proper usage of bootloader --append in kickstarts.

kojid: waitrepo on deleted tag

Previously, if a tag was deleted while a waitrepo task was watching it, the task would not notice and wait until the timeout expired. Now it will fail when it detects that the tag has been deleted.

System Changes

dropping python 2.6 / RHEL6 / yum support

One of the most significant changes in this release is dropping support for older python versions. Koji no longer supports python 2.6, and only supports python 2.7 for the builder and cli.

This effectively means ending support for RHEL/CentOS 6 builders. We are dropping yum support (it was used only with dist-repos) as RHEL7 and newer have full dnf stack.

report versions of components

There is a new hub API call named getVersion (don’t confuse with getAPIVersion) which returns the version of Koji that the hub is running. Similarly, the koji library provides its version in koji.__version__.


proton: persistent message queue

As qpid (or other amqps broker) can be unreachable for long periods of time we’ve implemented a fallback queue in the database to avoid lost messages. This behaviour needs to be enabled - see the documentation.

Utilities Changes


parallel rmtree

Deleting old repos is now done in parallel.


PostgreSQL requirements for partitioning

release process

more info about permission system

setting rpm macros for build tags

livecd/livemedia updates