debian-koji/plugins/hub/kiwi.py
Neal Gompa a5dd795043 kiwi: Add support for overriding version and releasever
This allows for kiwi descriptions that are compatible across
multiple targets to be easily used without needless modifications.

Additionally, it allows for custom values when preparing milestone
releases without needlessly modifying the descriptions.
2024-08-26 10:02:43 -04:00

78 lines
2.9 KiB
Python

import koji
import koji.tasks
import kojihub
from koji.context import context
from koji.plugin import export
koji.tasks.LEGACY_SIGNATURES['kiwiBuild'] = [
[['target', 'arches', 'desc_url', 'desc_path', 'opts'],
None, None, (None,)]]
koji.tasks.LEGACY_SIGNATURES['createKiwiImage'] = [
[['name', 'version', 'release', 'arch',
'target_info', 'build_tag', 'repo_info', 'desc_url', 'desc_path', 'opts'],
None, None, (None,)]]
@export
def kiwiBuild(target, arches, desc_url, desc_path, optional_arches=None, profile=None,
scratch=False, priority=None, make_prep=False, repos=None, release=None,
type=None, type_attr=None, result_bundle_name_format=None, use_buildroot_repo=True,
version=None, repo_releasever=None):
context.session.assertPerm('image')
for i in [desc_url, desc_path, profile, version, release, repo_releasever]:
if i is not None:
kojihub.convert_value(i, cast=str, check_only=True)
if repos:
kojihub.convert_value(repos, cast=list, check_only=True)
if type_attr:
kojihub.convert_value(type_attr, cast=list, check_only=True)
if result_bundle_name_format:
kojihub.convert_value(result_bundle_name_format, cast=str, check_only=True)
kojihub.get_build_target(target, strict=True)
if isinstance(arches, list):
arches = " ".join(arches)
arches = koji.parse_arches(arches, to_list=True, strict=True, allow_none=False)
if isinstance(optional_arches, list):
optional_arches = " ".join(optional_arches)
optional_arches = koji.parse_arches(
optional_arches, to_list=True, strict=True, allow_none=True)
taskOpts = {
'channel': 'image',
}
if priority:
priority = kojihub.convert_value(priority, cast=int)
if priority < 0:
if not context.session.hasPerm('admin'):
raise koji.ActionNotAllowed(
'only admins may create high-priority tasks')
taskOpts['priority'] = koji.PRIO_DEFAULT + priority
opts = {}
if scratch:
opts['scratch'] = True
if profile:
opts['profile'] = profile
if version:
opts['version'] = version
if release:
opts['release'] = release
if optional_arches:
opts['optional_arches'] = optional_arches
if repos:
opts['repos'] = repos
if repo_releasever:
opts['repo_releasever'] = repo_releasever
if make_prep:
opts['make_prep'] = True
if type:
opts['type'] = type
if use_buildroot_repo:
opts['use_buildroot_repo'] = True
if type_attr:
opts['type_attr'] = type_attr
if result_bundle_name_format:
opts['result_bundle_name_format'] = result_bundle_name_format
return kojihub.make_task('kiwiBuild',
[target, arches, desc_url, desc_path, opts],
**taskOpts)