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