Index: python/appcenter/app.py =================================================================== --- python/appcenter/app.py (Revision 71204) +++ python/appcenter/app.py (Arbeitskopie) @@ -1004,17 +1004,26 @@ required_version = self.required_ucs_version if not required_version: return True + current_version = self.get_current_ucs_version_as_string() + + if not self.is_fitting_ucs_version(required_version, current_version): + return {'required_version': required_version} + return True + + @staticmethod + def get_current_ucs_version_as_string(): ucr_load() - version_bits = re.match(r'^(\d+)\.(\d+)-(\d+)(?: errata(\d+))?$', required_version).groups() - major, minor = ucr_get('version/version').split('.', 1) + version = ucr_get('version/version') patchlevel = ucr_get('version/patchlevel') - errata = ucr_get('version/erratalevel') - comparisons = zip(version_bits, [major, minor, patchlevel, errata]) - for required, present in comparisons: - if int(required or 0) > int(present): - return {'required_version': required_version} - return True + erratalevel = ucr_get('version/erratalevel') + current_version = '{version}-{patchlevel} errata{erratalevel}'.format(version=version, patchlevel=patchlevel, erratalevel=erratalevel) + return current_version + + @staticmethod + def is_fitting_ucs_version(required_version, current_version): # type: (str, str) -> bool + return LooseVersion(required_version) <= LooseVersion(current_version) + @hard_requirement('install', 'upgrade') def must_have_fitting_kernel_version(self): if self.docker: