diff --git a/kernels_cleaner.py b/kernels_cleaner.py index 573f02101008b90520365ee5605c92271680ea45..61d0ddea61c720b0f13b994a67d2514c9c83f4be 100755 --- a/kernels_cleaner.py +++ b/kernels_cleaner.py @@ -46,6 +46,7 @@ def clean_kernels(): version = m.groups()[2] if version[-1] == '-': version = version[:-1] + version = [int(v) for v in version.replace('-', '.').split('.')] kernels.append((line.split('\t')[0], version)) log('Installed kernels:\n\t' + '\n\t'.join([n for n, v in kernels])) # get current kernel @@ -57,22 +58,23 @@ def clean_kernels(): log(RED + 'Failed to get current kernel.' + DEFAULT + '\nOut: ' + out + '\nErr: ' + err, error=True) return 1 try: - current = out.split(' ')[2] - if current.endswith('-generic'): - current = current[:-8] + current_str = out.split(' ')[2] + if current_str.endswith('-generic'): + current_str = current_str[:-8] + current = [int(v) for v in current_str.replace('-', '.').split('.')] except Exception as e: log(RED + 'Failed to get current kernel.' + DEFAULT + '\nError: ' + e, error=True) return 1 - log('Current kernel is: ' + PURPLE + current + DEFAULT) + log('Current kernel is: ' + PURPLE + current_str + DEFAULT) + # get most recent kernel + latest = current + for name, version in kernels: + if version > latest: + latest = version # get kernel packages to purge to_purge = list() - current_t = current.replace('-', '.').split('.') - latest = current_t for name, version in kernels: - version_t = version.replace('-', '.').split('.') - if version_t > latest: - latest = version_t - elif version_t < latest and version != current: + if version < latest and version != current: to_purge.append(name) if not to_purge: log('No kernel package to purge.')