gather: Report missing comps packages
When a package mentioned in comps is not available in the package set, print a warning about this. Additionally there is a config option that allows to turn this warning into a fatal error. Fixes: https://pagure.io/pungi/issue/50 Fixes: https://pagure.io/pungi/issue/683 Signed-off-by: Lubomír Sedlář <lsedlar@redhat.com>
This commit is contained in:
parent
1d7617f783
commit
cef8650c3e
@ -627,6 +627,11 @@ Options
|
|||||||
(*bool*) -- Set to ``False`` if you don't want the compose to abort when
|
(*bool*) -- Set to ``False`` if you don't want the compose to abort when
|
||||||
some package has broken dependencies.
|
some package has broken dependencies.
|
||||||
|
|
||||||
|
**require_all_comps_packages** = False
|
||||||
|
(*bool*) -- Set to ``True`` to abort compose when package mentioned in
|
||||||
|
comps file can not be found in the package set. When disabled (the default,
|
||||||
|
such cases are still reported as warnings in the log.
|
||||||
|
|
||||||
**gather_source_mapping**
|
**gather_source_mapping**
|
||||||
(*str*) -- Only use when ``gather_source = "json"``. The value should be a
|
(*str*) -- Only use when ``gather_source = "json"``. The value should be a
|
||||||
path to JSON file with following mapping: ``{variant: {arch: {rpm_name:
|
path to JSON file with following mapping: ``{variant: {arch: {rpm_name:
|
||||||
|
@ -575,6 +575,10 @@ def _make_schema():
|
|||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"default": True
|
"default": True
|
||||||
},
|
},
|
||||||
|
"require_all_comps_packages": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": False,
|
||||||
|
},
|
||||||
"bootable": {
|
"bootable": {
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"default": False
|
"default": False
|
||||||
|
@ -154,6 +154,15 @@ def resolve_deps(compose, arch, variant):
|
|||||||
|
|
||||||
with open(pungi_log, "r") as f:
|
with open(pungi_log, "r") as f:
|
||||||
result = pungi_wrapper.get_packages(f)
|
result = pungi_wrapper.get_packages(f)
|
||||||
|
f.seek(0)
|
||||||
|
missing_comps_pkgs = pungi_wrapper.get_missing_comps_packages(f)
|
||||||
|
|
||||||
|
if missing_comps_pkgs:
|
||||||
|
msg = ("Packages mentioned in comps do not exist for %s.%s: %s"
|
||||||
|
% (variant.uid, arch, ", ".join(sorted(missing_comps_pkgs))))
|
||||||
|
compose.log_warning(msg)
|
||||||
|
if compose.conf['require_all_comps_packages']:
|
||||||
|
raise RuntimeError(msg)
|
||||||
|
|
||||||
compose.log_info("[DONE ] %s" % msg)
|
compose.log_info("[DONE ] %s" % msg)
|
||||||
return result
|
return result
|
||||||
|
@ -29,6 +29,8 @@ PACKAGES_RE = {
|
|||||||
|
|
||||||
UNRESOLVED_DEPENDENCY_RE = re.compile(r"^.*Unresolvable dependency (.+) in ([^ ]+).*$")
|
UNRESOLVED_DEPENDENCY_RE = re.compile(r"^.*Unresolvable dependency (.+) in ([^ ]+).*$")
|
||||||
|
|
||||||
|
MISSING_COMPS_PACKAGE_RE = re.compile(r"^.*Could not find a match for (.+) in any configured repo")
|
||||||
|
|
||||||
|
|
||||||
class PungiWrapper(object):
|
class PungiWrapper(object):
|
||||||
|
|
||||||
@ -221,6 +223,14 @@ class PungiWrapper(object):
|
|||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
def get_missing_comps_packages(self, f):
|
||||||
|
result = set()
|
||||||
|
for line in f:
|
||||||
|
match = MISSING_COMPS_PACKAGE_RE.match(line)
|
||||||
|
if match:
|
||||||
|
result.add(match.group(1))
|
||||||
|
return result
|
||||||
|
|
||||||
def get_missing_deps(self, f):
|
def get_missing_deps(self, f):
|
||||||
result = {}
|
result = {}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user