project-installcheck.py: Honour installcheck-ignore-conflicts config

Now we have some packages in the distro which fail installcheck
semi-intentionally: libstdc++6-gccX (with X < system GCC) conflicts with rpm
indirectly. While this can be ignored in stagings already, this caused an issue
once it's in the distro: The installcheck failure contains the release number
and so it gets rebuilt all the time in the hope to make it installable again.
This commit is contained in:
Fabian Vogt 2023-06-13 10:40:16 +02:00
parent 925f91325c
commit 6b1a26be30

View File

@ -240,10 +240,14 @@ class RepoChecker():
per_source = dict() per_source = dict()
ignore_conflicts = Config.get(self.apiurl, project).get('installcheck-ignore-conflicts', '').split(' ')
for package, entry in parsed.items(): for package, entry in parsed.items():
source = "{}/{}/{}/{}".format(project, repository, arch, entry['source']) source = "{}/{}/{}/{}".format(project, repository, arch, entry['source'])
per_source.setdefault(source, {'output': [], 'buildresult': buildresult.get(entry['source'], 'gone')}) per_source.setdefault(source, {'output': [], 'buildresult': buildresult.get(entry['source'], 'gone'), 'ignored': True})
per_source[source]['output'].extend(entry['output']) per_source[source]['output'].extend(entry['output'])
if package not in ignore_conflicts:
per_source[source]['ignored'] = False
rebuilds = set() rebuilds = set()
@ -254,6 +258,9 @@ class RepoChecker():
self.logger.debug(" " + "\n ".join(per_source[source]['output'])) self.logger.debug(" " + "\n ".join(per_source[source]['output']))
if per_source[source]['buildresult'] != 'succeeded': # nothing we can do if per_source[source]['buildresult'] != 'succeeded': # nothing we can do
continue continue
if per_source[source]['ignored']:
self.logger.debug("All binaries failing the check are ignored")
continue
old_output = oldstate['check'].get(source, {}).get('problem', []) old_output = oldstate['check'].get(source, {}).get('problem', [])
if sorted(old_output) == sorted(per_source[source]['output']): if sorted(old_output) == sorted(per_source[source]['output']):
self.logger.debug("unchanged problem") self.logger.debug("unchanged problem")