Hi Cleber,

The comments are fine. please go ahead and commit 

Thanks,
Madhuri

On Tue, 2012-01-03 at 08:48 -0300, Cleber Rosa wrote:
> On 01/03/2012 02:55 AM, madhuri appana wrote:
> > Hi cleber,
> >
> > The ultimate idea is to build qemu and kernel using the git repo.
> 
> I see.
> 
> >
> > 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.
> 
> Do you think those comments are needed? I mean, we already have these 
> assignments:
> 
>     - @qemu_kvm_9p_export:
>          qemu_binary = /usr/bin/qemu-kvm
>          qemu_img_binary = /usr/bin/qemu-img
>          qemu_io_binary = /usr/bin/qemu-io
> 
> > # * 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
> 
> This could be done, but it's not the most common way to do that. We 
> expect either the parameters qemu{,_img,_io}_binary to be set, or use 
> the binaries located at the test directory 
> (/usr/local/autotest/client/[tests]/kvm). During the build phase, a link 
> will be created, say, linking:
> 
> /usr/local/autotest/client/tests/kvm/qemu -> 
> /usr/local/autotest/client/tests/kvm/install_root/bin/qemu-system-x86_64
> 
> So, it's not needed to be set explicitly.
> 
> >
> > Also, if you are going to submit all the 5 patches for Virtfs at a time
> > then your patchset looks fine for me.
> 
> If you agree with the comments above, I'll merge this branch to master.
> 
> Thanks!
> 
> >
> > 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