From c287332dc6f28bc60cf2b167c174cfb6dae409ed Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Diemer?= <stephane.diemer@ubicast.eu>
Date: Fri, 14 Oct 2016 15:32:27 +0200
Subject: [PATCH] Fixed selection of packages to purge in kernels cleaner.

---
 kernels_cleaner.py | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/kernels_cleaner.py b/kernels_cleaner.py
index 573f0210..61d0ddea 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.')
-- 
GitLab