Koji 1.21.0 Release notes

Announcement: We’re going to drop python 2 support for hub and web in koji 1.22. Please, prepare yourself for deploying python 3 versions of these. Both are already supported and this is the next step in retiring python 2 codebase.

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

Migrating from Koji 1.20

For details on migrating see Migrating to Koji 1.21

Security Fixes


Client Changes

Add –no-delete option to clone-tag

clone-tag command was enhanced to produce ‘copy’ operation without deleting what is in the target tag. See PR for detailed semantics, as it could be confusing a bit.

display merge mode for external repos

Merge modes are now listed in taginfo command (and also in web ui)

koji download-build resuming downloads

download-build could often break for bigger builds. Resuming truncated download after relaunch is now default behaviour.

add-host work even if host already tried to log in

Previously, if builder contacted before its user was created in db, it was hard to fix it. Now, it could be forced via cli’s --force.

Allow to skip SRPM rebuild for scratch builds

Rebuilding SRPMs doesn’t make much sense in most of scratch builds. There is an option --no-rebuild-srpm which can be used to skip this step. Note, that it doesn’t work for regular builds, which needs to adhere to policy set by rel-engs.

Deprecating list-tag-history and tagHistory

These commands are superseded by list-history resp. queryHistory and will be removed in near future.

Add detail about known koji signatures to buildinfo

If koji knows about any signatures, they are now also printed.

deprecation of krb_login

gssapi_login should be now used wherever possible

Library Changes

Remove deprecated functions

md5/sha1 constructors and cgi.escape functions were removed.

API Changes

editTagExternalRepo is able to set merge_mode

Removing and re-adding external repo is no more needed if user just needs to change merge strategy.

Remove debugFunction API

Removed deprecated call

Builder Changes

make xz options configurable

xz compression for images now can be configured on builder level. It can be tuned accordingly to CPU/memory ratio available.

Delete oldest failed buildroot when there is no space

If there is no space on builder, we try to delete buildroots from oldest to newest. It could be harder to debug some failed builds, as those data can be already deleted, on the other hand, builders will not refuse to work due to lack of space.

System Changes

new policy for dist-repo

Previously only users with dist-repo permission were allowed to run it. Now, there could be a policy defined, mostly based on tag or user names.

Add ‘target’ policy

We used it before, but with generic tests like match. Now we have proper target policy test.

always set utf8 pg client encoding

We’re now forcing utf8 client encoding for database connection.

Limit final query by prechecking buildroot ids

Significant performance improvement for query_buildroots.

use real time for events

Events now should be created with real-world time, not with the beginning of transaction. It could have led to non-clear history in some cases, it should be better now.

log –force usage by admins

Using --force to override policies is now logged.

Add smtp authentication support

SMTP authentication is now available in kojid and koji-gc.


Sidetag plugin is now part of koji

We’ve integrated sidetag plugin to koji, so we can add more integrated functionality to it.

allow debuginfo for sidetag repos

sidetag repos can now contain debuginfo packages (--debuginfo option for add-sidetag command).

New call editSideTag

New API call allowing users of sidetags to modify certain values (debuginfo, package lists).

Emit user in PackageListChange messages

protonmsg now sends also user name and id.

limit size of extra field in proton msgs

extra field can be omitted from proton message if it exceeds configured threshold. Some content generators can create very big extra data which needn’t to be sent via message bus and can be queried on demand via API.

Utilities Changes

Garbage Collector

file locking for koji-gc

As GC can run for long periods of time, ensuring, that there is only one instance running is worthwile. --lock-file and --exit-on-lock


kojira monitors external repos changes

External repositories are now monitored and kojira will trigger newRepo tasks when their content changed.

reverse score ordering for tags

Fixed bug which regenerated repositories in least-important-first order.

Documentation Changes

Lot of documentation was added in last release in API and also in docs pages.