[kernel] r11178 - people/waldi/dkt/lib/dkt/hooks/modules

Bastian Blank waldi at alioth.debian.org
Fri Apr 25 14:35:35 UTC 2008


Author: waldi
Date: Fri Apr 25 14:35:33 2008
New Revision: 11178

Log:
lib/dkt/hooks/modules/backward_kpkg_symlinks.py:
Add backward compatible bootloader code.


Modified:
   people/waldi/dkt/lib/dkt/hooks/modules/backward_kpkg_symlinks.py

Modified: people/waldi/dkt/lib/dkt/hooks/modules/backward_kpkg_symlinks.py
==============================================================================
--- people/waldi/dkt/lib/dkt/hooks/modules/backward_kpkg_symlinks.py	(original)
+++ people/waldi/dkt/lib/dkt/hooks/modules/backward_kpkg_symlinks.py	Fri Apr 25 14:35:33 2008
@@ -7,6 +7,16 @@
 from dkt.support.system import architecture
 
 class Hook(object):
+    bootloaders = {
+        'amd64': 'lilo',
+        'i386': 'lilo',
+        'powerpc': None,
+        's390': 'zipl',
+        'sparc': None,
+    }
+
+    safe_path = '/usr/sbin', '/sbin', '/usr/bin', '/bin'
+
     def _check_active(self, systemconfig):
         return systemconfig.get_parse_boolean('backward-compatibility', 'kpkg-do-symlinks', False)
 
@@ -178,7 +188,28 @@
                     os.symlink(target, file)
 
         if systemconfig.get_parse_boolean('backward-compatibility', 'kpkg-do-bootloader', False):
-            raise NotImplementedError()
+            try:
+                bootloader = self.bootloaders.get(architecture)
+            except KeyError:
+                raise NotImplementedError("Backward compatible bootloader setup not supported for arch %s" % architecture)
+
+            if bootloader is not None:
+                bootloader_filename = None
+
+                for i in self.safe_path:
+                    f = os.path.join(i, hook)
+                    if os.access(f, os.X_OK):
+                        bootloader_filename = f
+                        break
+
+                    if bootloader_filename is None:
+                        raise RuntimeError("Can't find bootloader: %s" % bootloader)
+
+                    ret = subprocess.call([bootloader_filename], stdin = subprocess.PIPE, stdout = subprocess.PIPE)
+                    if ret:
+                        raise RuntimeError("Failed to run bootloader (%s): %d" % (bootloader, ret))
+
+                raise NotImplementedError()
 
         return True
 



More information about the Kernel-svn-changes mailing list