Include the delete request analysis in the text file

This commit is contained in:
Stephan Kulow 2019-03-27 07:34:20 +01:00
parent 9a259088c8
commit 2f3379467c

View File

@ -75,13 +75,13 @@ class InstallChecker(object):
self.existing_problems = self.binary_list_existing_problem(api.project, api.cmain_repo) self.existing_problems = self.binary_list_existing_problem(api.project, api.cmain_repo)
def check_required_by(self, fileinfo, provides, requiredby, built_binaries): def check_required_by(self, fileinfo, provides, requiredby, built_binaries, comments):
if requiredby.get('name') in built_binaries: if requiredby.get('name') in built_binaries:
return True return True
# extract >= and the like # extract >= and the like
provide = provides.get('dep') provide = provides.get('dep')
provide = provide.split(' ')[0] provide = provide.split(' ')[0]
self.logger.info('{} provides {} required by {}'.format(fileinfo.find('name').text, provide, requiredby.get('name'))) comments.append('{} provides {} required by {}'.format(fileinfo.find('name').text, provide, requiredby.get('name')))
url = api.makeurl(['build', api.project, api.cmain_repo, 'x86_64', '_repository', requiredby.get('name') + '.rpm'], url = api.makeurl(['build', api.project, api.cmain_repo, 'x86_64', '_repository', requiredby.get('name') + '.rpm'],
{'view': 'fileinfo_ext'}) {'view': 'fileinfo_ext'})
reverse_fileinfo = ET.parse(osc.core.http_GET(url)).getroot() reverse_fileinfo = ET.parse(osc.core.http_GET(url)).getroot()
@ -93,12 +93,12 @@ class InstallChecker(object):
for provided_by in require.findall('providedby'): for provided_by in require.findall('providedby'):
if provided_by.get('name') in built_binaries: if provided_by.get('name') in built_binaries:
continue continue
self.logger.info(' also provided by {} -> ignoring'.format(provided_by.get('name'))) comments.append(' also provided by {} -> ignoring'.format(provided_by.get('name')))
return True return True
self.logger.warn('missing requires') comments.append('Error: missing alternative provides for {}'.format(provide))
return False return False
def check_delete_request(self, req, to_ignore): def check_delete_request(self, req, to_ignore, comments):
package = req['package'] package = req['package']
if package in to_ignore: if package in to_ignore:
self.logger.info('Delete request for package {} ignored'.format(package)) self.logger.info('Delete request for package {} ignored'.format(package))
@ -114,7 +114,7 @@ class InstallChecker(object):
for fileinfo in file_infos: for fileinfo in file_infos:
for provides in fileinfo.findall('provides_ext'): for provides in fileinfo.findall('provides_ext'):
for requiredby in provides.findall('requiredby[@name]'): for requiredby in provides.findall('requiredby[@name]'):
result = result and self.check_required_by(fileinfo, provides, requiredby, built_binaries) result = result and self.check_required_by(fileinfo, provides, requiredby, built_binaries, comments)
what_depends_on = depends_on(api.apiurl, api.project, api.cmain_repo, [package], True) what_depends_on = depends_on(api.apiurl, api.project, api.cmain_repo, [package], True)
@ -124,7 +124,7 @@ class InstallChecker(object):
what_depends_on.remove(package) what_depends_on.remove(package)
if len(what_depends_on): if len(what_depends_on):
self.logger.warn('{} is still a build requirement of:\n\n- {}'.format( comments.append('{} is still a build requirement of:\n\n- {}'.format(
package, '\n- '.join(sorted(what_depends_on)))) package, '\n- '.join(sorted(what_depends_on))))
return False return False
@ -193,13 +193,13 @@ class InstallChecker(object):
self.logger.error('no project status for {}'.format(project)) self.logger.error('no project status for {}'.format(project))
return False return False
result_comment = []
to_ignore = self.packages_to_ignore(project) to_ignore = self.packages_to_ignore(project)
meta = api.load_prj_pseudometa(status['description']) meta = api.load_prj_pseudometa(status['description'])
for req in meta['requests']: for req in meta['requests']:
if req['type'] == 'delete': if req['type'] == 'delete':
result = result and self.check_delete_request(req, to_ignore) result = result and self.check_delete_request(req, to_ignore, result_comment)
result_comment = []
for arch in architectures: for arch in architectures:
# hit the first repository in the target project (if existant) # hit the first repository in the target project (if existant)