Add the same kind of logging that we use in kernel.kernel to
kernel.rpm_kernel.
From: John Admanski <jadmanski@google.com>
Signed-off-by: Martin Bligh <mbligh@google.com>
git-svn-id: http://test.kernel.org/svn/autotest/trunk@913 592f7852-d20e-0410-864c-8624ca9c26a4
diff --git a/client/bin/kernel.py b/client/bin/kernel.py
index e191cbe..cf19bcd 100755
--- a/client/bin/kernel.py
+++ b/client/bin/kernel.py
@@ -4,6 +4,24 @@
from autotest_utils import *
import kernel_config, test, os_dep
+
+def record(fn):
+ """ Decorator for logging calls to specific kernel methods.
+
+ Classes that make use of this dectorator will need to have job
+ and subdir attributes for the logging to function correctly.
+ """
+ def recorded_func(self, *args, **dargs):
+ name = "kernel.%s" % fn.__name__
+ try:
+ fn(self, *args, **dargs)
+ self.job.record('GOOD', self.subdir, name)
+ except Exception, detail:
+ self.job.record('FAIL', self.subdir, name, str(detail))
+ raise
+ return recorded_func
+
+
class kernel:
""" Class for compiling kernels.
@@ -113,34 +131,17 @@
self.patch(*base_components)
- def __record(self, fn, name, *args, **dargs):
- try:
- fn(*args, **dargs)
- self.job.record('GOOD', self.subdir, name)
- except Exception, detail:
- err = detail.__str__()
- self.job.record('FAIL', self.subdir, name, err)
- raise
-
-
- def _patch(self, *patches):
+ @record
+ def patch(self, *patches):
"""Apply a list of patches (in order)"""
if not patches:
return
- # if isinstance(patches, basestring):
- # patches = [patches]
print 'Applying patches: ', patches
- # self.job.stdout.redirect(os.path.join(self.log_dir, 'stdout'))
self.apply_patches(self.get_patches(patches))
- # self.job.stdout.restore()
- def patch(self, *args, **dargs):
- self.__record(self._patch, "kernel.patch", *args, **dargs)
-
-
- def _config(self, config_file = '', config_list = None,
- defconfig = False):
+ @record
+ def config(self, config_file = '', config_list = None, defconfig = False):
self.job.stdout.redirect(os.path.join(self.log_dir, 'stdout'))
self.set_cross_cc()
config = kernel_config.kernel_config(self.job, self.build_dir,
@@ -149,10 +150,6 @@
self.job.stdout.restore()
- def config(self, *args, **dargs):
- self.__record(self._config, "kernel.config", *args, **dargs)
-
-
def get_patches(self, patches):
"""fetch the patches to the local src_dir"""
local_patches = []
@@ -216,7 +213,8 @@
system('sed "%s" < Makefile.old > Makefile' % p)
- def _build(self, make_opts = '', logfile = '', extraversion='autotest'):
+ @record
+ def build(self, make_opts = '', logfile = '', extraversion='autotest'):
"""build the kernel
make_opts
@@ -255,10 +253,6 @@
force_copy(self.build_dir+'/System.map', self.results_dir)
- def build(self, *args, **dargs):
- self.__record(self._build, "kernel.build", *args, **dargs)
-
-
def build_timed(self, threads, timefile = '/dev/null', make_opts = '',
output = '/dev/null'):
"""time the bulding of the kernel"""
@@ -276,18 +270,16 @@
raise TestError("no vmlinux found, kernel build failed")
- def _clean(self):
+ @record
+ def clean(self):
"""make clean in the kernel tree"""
os.chdir(self.build_dir)
print "make clean"
system('make clean > /dev/null 2> /dev/null')
- def clean(self, *args, **dargs):
- self.__record(self._clean, "kernel.clean", *args, **dargs)
-
-
- def _mkinitrd(self, version, image, system_map, initrd):
+ @record
+ def mkinitrd(self, version, image, system_map, initrd):
"""Build kernel initrd image.
Try to use distro specific way to build initrd image.
Parameters:
@@ -324,15 +316,12 @@
raise TestError('Unsupported vendor %s' % vendor)
- def mkinitrd(self, *args, **dargs):
- self.__record(self._mkinitrd, "kernel.mkinitrd", *args, **dargs)
-
-
def set_build_image(self, image):
self.build_image = image
- def _install(self, tag='autotest', prefix = '/'):
+ @record
+ def install(self, tag='autotest', prefix = '/'):
"""make install in the kernel tree"""
# Record that we have installed the kernel, and
@@ -377,12 +366,8 @@
system('make modules_install INSTALL_MOD_PATH=%s' % prefix)
if prefix == '/':
self.initrd = self.boot_dir + '/initrd-' + tag
- self.mkinitrd(self.get_kernel_build_ver(), self.image, \
- self.system_map, self.initrd)
-
-
- def install(self, *args, **dargs):
- self.__record(self._install, "kernel.install", *args, **dargs)
+ self.mkinitrd(self.get_kernel_build_ver(), self.image,
+ self.system_map, self.initrd)
def add_to_bootloader(self, tag='autotest', args=''):
@@ -618,6 +603,7 @@
self.changelist = None
+ @record
def install(self, tag='autotest'):
self.installed_as = tag