Hi cleber,

The ultimate idea is to build qemu and kernel using the git repo. 

So please add a comment in tests.cfg that 
# As for the defaults:
# * qemu and qemu-img are expected to be found under /usr/bin/qemu-kvm
and
#   /usr/bin/qemu-img respectively.
# * qemu and qemu-img are expected to be found
under ./install_root/bin/qemu-system-x86_64 and
#   ./install_root/bin/qemu-img respectively if qemu is build from git
repo in build.cfg

Also, if you are going to submit all the 5 patches for Virtfs at a time
then your patchset looks fine for me.

Thanks,
Madhuri
On Mon, 2012-01-02 at 23:35 -0300, Cleber Rosa wrote:
> Hi Madhuri,
> 
> I've posted your patch set, with some changes at:
> 
> https://github.com/clebergnu/autotest/tree/guest_kernel_9p
> 
> The current version is working for me, but in case you want to change 
> anything, now is the time. Let's work on that towards a final version!
> 
> Thanks for the great work you've done!
> 
> Cheers,
> CR.
> 
> On 12/26/2011 09:31 AM, Madhuri Appana wrote:
> > From: Madhuri Appana<[email protected]>
> >
> >
> > Signed-off-by: Madhuri Appana<[email protected]>
> > ---
> >   client/tests/kvm/build.cfg.sample |    9 ++++
> >   client/virt/base_installer.py     |    9 ++++
> >   client/virt/installer.py          |    5 ++
> >   client/virt/kvm_installer.py      |    8 +++-
> >   client/virt/virt_utils.py         |   95 
> > +++++++++++++++++++++++++++++++++++++
> >   5 files changed, 125 insertions(+), 1 deletions(-)
> >
> > diff --git a/client/tests/kvm/build.cfg.sample 
> > b/client/tests/kvm/build.cfg.sample
> > index 6e3d134..fd5217d 100644
> > --- a/client/tests/kvm/build.cfg.sample
> > +++ b/client/tests/kvm/build.cfg.sample
> > @@ -1,5 +1,6 @@
> >   # Copy this file to build.cfg and edit it.
> >
> > +include config.cfg
> >   vm_type = kvm
> >
> >   variants:
> > @@ -23,6 +24,14 @@ variants:
> >           # QEMU installation from a local source directory
> >           # local_src_qemu_path = /tmp/qemu-0.15.1
> >
> > +        # Guest Kernel installation from a GIT repo
> > +        git_repo_guest_kernel_uri = 
> > git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
> > +        git_repo_guest_kernel_branch = master
> > +        #git_repo_guest_kernel_patches = ['http://foo/bar.patch', 
> > 'http://foo/baz.patch']
> > +        guest_kernel_config =  http://foo/bar/kernel-config
> > +        guest_kernel_build_target = bzImage
> > +        guest_kernel_build_image  = arch/x86/boot/bzImage
> > +
> >           # QEMU installation from a GIT repo
> >           git_repo_qemu_uri = git://git.qemu.org/qemu.git
> >           git_repo_qemu_configure_options = --target-list=x86_64-softmmu 
> > --enable-spice
> > diff --git a/client/virt/base_installer.py b/client/virt/base_installer.py
> > index a414fde..94c2a4e 100644
> > --- a/client/virt/base_installer.py
> > +++ b/client/virt/base_installer.py
> > @@ -687,6 +687,15 @@ class GitRepoInstaller(BaseLocalSourceInstaller):
> >           self._set_build_helper()
> >
> >
> > +class GitRepoKernelInstaller(BaseLocalSourceInstaller):
> > +    def set_install_params(self, test, params):
> > +        super(GitRepoKernelInstaller, self).set_install_params(test, 
> > params)
> > +
> > +        self.content_helper = virt_utils.GitRepoParamHelper(params, 
> > self.name,
> > +                                                            
> > self.source_destination)
> > +        self.build_helper = virt_utils.LinuxKernelBuildHelper(params, 
> > self.name,
> > +                                                              
> > self.source_destination)
> > +
> >   class FailedInstaller:
> >       """
> >       Class used to be returned instead of the installer if a installation 
> > fails
> > diff --git a/client/virt/installer.py b/client/virt/installer.py
> > index 4e96853..b3f2b2e 100644
> > --- a/client/virt/installer.py
> > +++ b/client/virt/installer.py
> > @@ -103,6 +103,8 @@ INSTALLER_REGISTRY.register('koji',
> >                               base_installer.KojiInstaller)
> >   INSTALLER_REGISTRY.register('git_repo',
> >                               base_installer.GitRepoInstaller)
> > +INSTALLER_REGISTRY.register('git_kernel',
> > +                            base_installer.GitRepoKernelInstaller)
> >   INSTALLER_REGISTRY.register('local_src',
> >                               base_installer.LocalSourceDirInstaller)
> >   INSTALLER_REGISTRY.register('local_tar',
> > @@ -122,6 +124,9 @@ INSTALLER_REGISTRY.register('koji',
> >   INSTALLER_REGISTRY.register('git_repo',
> >                               kvm_installer.GitRepoInstaller,
> >                               'kvm')
> > +INSTALLER_REGISTRY.register('git_kernel',
> > +                            kvm_installer.GitRepoKernelInstaller,
> > +                            'kvm')
> >   INSTALLER_REGISTRY.register('local_src',
> >                               kvm_installer.LocalSourceDirInstaller,
> >                               'kvm')
> > diff --git a/client/virt/kvm_installer.py b/client/virt/kvm_installer.py
> > index c4002bc..f8b49d8 100644
> > --- a/client/virt/kvm_installer.py
> > +++ b/client/virt/kvm_installer.py
> > @@ -10,7 +10,7 @@ from autotest_lib.client.common_lib import error
> >   from autotest_lib.client.virt import base_installer
> >
> >
> > -__all__ = ['GitRepoInstaller', 'LocalSourceDirInstaller',
> > +__all__ = ['GitRepoInstaller', 'GitRepoKernelInstaller', 
> > 'LocalSourceDirInstaller',
> >              'LocalSourceTarInstaller', 'RemoteSourceTarInstaller']
> >
> >
> > @@ -215,6 +215,12 @@ class GitRepoInstaller(KVMBaseInstaller,
> >       '''
> >       pass
> >
> > +class GitRepoKernelInstaller(KVMBaseInstaller,
> > +                             base_installer.GitRepoKernelInstaller):
> > +    '''
> > +    Installer that deals with source code on Git repositories
> > +    '''
> > +    pass
> >
> >   class LocalSourceDirInstaller(KVMBaseInstaller,
> >                                 base_installer.LocalSourceDirInstaller):
> > diff --git a/client/virt/virt_utils.py b/client/virt/virt_utils.py
> > index 1b90d0f..952a559 100644
> > --- a/client/virt/virt_utils.py
> > +++ b/client/virt/virt_utils.py
> > @@ -3055,6 +3055,101 @@ class GnuSourceBuildHelper(object):
> >           self.configure()
> >           self.make()
> >
> > +class LinuxKernelBuildHelper(object):
> > +    '''
> > +    Handles Building Linux Kernel.
> > +
> > +    '''
> > +    def __init__(self, params, name, source):
> > +        '''
> > +        @type source: string
> > +        @param source: source directory or tarball
> > +        @type prefix: string
> > +        @param prefix: installation prefix
> > +        @throws: GnuSourceBuildInvalidSource
> > +        '''
> > +        self.params = params
> > +        self.name = name
> > +        self.source = source
> > +        self._parse_params()
> > +
> > +    def _parse_params(self):
> > +        '''
> > +        Parses the params items for entries related to guest kernel
> > +
> > +        '''
> > +        configure_opt_key = '%s_config' % self.name
> > +        self.config = self.params.get(configure_opt_key, '')
> > +
> > +        build_image_key = '%s_build_image' % self.name
> > +        self.build_image = self.params.get(build_image_key, 
> > 'arch/x86/boot/bzImage')
> > +
> > +        build_target_key = '%s_build_target' % self.name
> > +        self.build_target = self.params.get(build_target_key, 'bzImage')
> > +
> > +        kernel_path_key = '%s_kernel_path' % self.name
> > +        self.kernel_path = self.params.get(kernel_path_key, 
> > '/tmp/kvm_autotest_root/images/' + self.build_target)
> > +
> > +        logging.info('Parsing Linux kernel build parameters for %s' % 
> > self.name)
> > +
> > +
> > +    def make_guest_kernel(self):
> > +        '''
> > +        Runs "make", using a single job
> > +        '''
> > +        os.chdir(self.source)
> > +        logging.info("Building guest kernel")
> > +        logging.debug("Kernel config is %s" % self.config)
> > +        utils.get_file(self.config, '.config')
> > +
> > +        # FIXME currently no support for builddir
> > +        # run old config
> > +        utils.system('yes "" | make oldconfig>  /dev/null')
> > +        parallel_make_jobs = utils.count_cpus()
> > +        make_command = "make -j %s %s" % (parallel_make_jobs, 
> > self.build_target)
> > +        logging.info("Running parallel make on src dir")
> > +        utils.system(make_command)
> > +
> > +    def make_clean(self):
> > +        '''
> > +        Runs "make clean"
> > +        '''
> > +        os.chdir(self.source)
> > +        utils.system("make clean")
> > +
> > +
> > +    def make(self, failure_feedback=True):
> > +        '''
> > +        Runs a parallel make
> > +
> > +        @param failure_feedback: return information on build failure by 
> > raising
> > +                                 the appropriate exceptions
> > +        @raise: GnuSourceBuildParallelFailed if parallel build fails, or
> > +        '''
> > +        try:
> > +            self.make_clean()
> > +            self.make_guest_kernel()
> > +        except error.CmdError:
> > +            if failure_feedback:
> > +                raise GnuSourceBuildParallelFailed
> > +
> > +    def cp_linux_kernel(self):
> > +        '''
> > +        Copying Linux kernel to target path
> > +        '''
> > +        os.chdir(self.source)
> > +        utils.force_copy(self.build_image, self.kernel_path)
> > +
> > +
> > +    install = cp_linux_kernel
> > +
> > +
> > +    def execute(self):
> > +        '''
> > +        Runs appropriate steps for *building* this source code tree
> > +        '''
> > +        self.make()
> > +
> >
> >   class GnuSourceBuildParamHelper(GnuSourceBuildHelper):
> >       '''
> 


_______________________________________________
Autotest mailing list
[email protected]
http://test.kernel.org/cgi-bin/mailman/listinfo/autotest

Reply via email to