diff --git a/module_build_service/manage.py b/module_build_service/manage.py index 925b5031..1ea718b3 100755 --- a/module_build_service/manage.py +++ b/module_build_service/manage.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- # SPDX-License-Identifier: MIT from __future__ import absolute_import, print_function +from collections import defaultdict from functools import wraps import getpass import logging @@ -103,11 +104,33 @@ def import_module(mmd_file): import_mmd(db.session, mmd) +def collect_dep_overrides(overrides): + collected = defaultdict(list) + for value in overrides: + parts = value.split(":") + if len(parts) != 2: + raise ValueError("dependency overrides must be in the form name:stream") + name, stream = parts + collected[name].append(stream) + + return collected + + @manager.option("--stream", action="store", dest="stream") @manager.option("--file", action="store", dest="yaml_file") @manager.option("--srpm", action="append", default=[], dest="srpms", metavar="SRPM") @manager.option("--skiptests", action="store_true", dest="skiptests") @manager.option("--offline", action="store_true", dest="offline") +@manager.option( + '--buildrequires', action='append', metavar='name:stream', + dest='buildrequires', default=[], + help='Buildrequires to override in the form of "name:stream"' +) +@manager.option( + '--requires', action='append', metavar='name:stream', + dest='requires', default=[], + help='Requires to override in the form of "name:stream"' +) @manager.option("-d", "--debug", action="store_true", dest="log_debug") @manager.option("-l", "--add-local-build", action="append", default=None, dest="local_build_nsvs") @manager.option("-s", "--set-stream", action="append", default=[], dest="default_streams") @@ -125,6 +148,8 @@ def build_module_locally( offline=False, platform_repofiles=None, platform_id=None, + requires=None, + buildrequires=None, log_debug=False, ): """ Performs local module build using Mock @@ -163,7 +188,9 @@ def build_module_locally( params = { "local_build": True, - "default_streams": dict(ns.split(":") for ns in default_streams) + "default_streams": dict(ns.split(":") for ns in default_streams), + "require_overrides": collect_dep_overrides(requires), + "buildrequire_overrides": collect_dep_overrides(buildrequires), } if srpms: params["srpms"] = srpms