Add --buildrequires/--requires options to build_module_locally

Overriding the platform stream with, e.g, platform:el8.3.1
is necessary to correctly pick up the right build dependencies for some
configurations. Match the fedpkg/rhpkg module-build way of doing this by adding
--buildrequires and --requires options to build_module_locally.
This commit is contained in:
Owen W. Taylor
2020-12-07 13:11:21 -05:00
parent 7761bbf5b4
commit 4026900f4f

View File

@@ -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