OLD | NEW |
1 import os, logging, datetime, glob | 1 import os, logging, datetime, glob, shutil |
2 import shutil | |
3 from autotest_lib.client.bin import utils, os_dep | 2 from autotest_lib.client.bin import utils, os_dep |
4 from autotest_lib.client.common_lib import error | 3 from autotest_lib.client.common_lib import error |
5 import kvm_utils | 4 import virt_utils, virt_installer |
6 | |
7 | |
8 def check_configure_options(script_path): | |
9 """ | |
10 Return the list of available options (flags) of a given kvm configure build | |
11 script. | |
12 | |
13 @param script: Path to the configure script | |
14 """ | |
15 abspath = os.path.abspath(script_path) | |
16 help_raw = utils.system_output('%s --help' % abspath, ignore_status=True) | |
17 help_output = help_raw.split("\n") | |
18 option_list = [] | |
19 for line in help_output: | |
20 cleaned_line = line.lstrip() | |
21 if cleaned_line.startswith("--"): | |
22 option = cleaned_line.split()[0] | |
23 option = option.split("=")[0] | |
24 option_list.append(option) | |
25 | |
26 return option_list | |
27 | 5 |
28 | 6 |
29 def kill_qemu_processes(): | 7 def kill_qemu_processes(): |
30 """ | 8 """ |
31 Kills all qemu processes, also kills all processes holding /dev/kvm down. | 9 Kills all qemu processes, also kills all processes holding /dev/kvm down. |
32 """ | 10 """ |
33 logging.debug("Killing any qemu processes that might be left behind") | 11 logging.debug("Killing any qemu processes that might be left behind") |
34 utils.system("pkill qemu", ignore_status=True) | 12 utils.system("pkill qemu", ignore_status=True) |
35 # Let's double check to see if some other process is holding /dev/kvm | 13 # Let's double check to see if some other process is holding /dev/kvm |
36 if os.path.isfile("/dev/kvm"): | 14 if os.path.isfile("/dev/kvm"): |
37 utils.system("fuser -k /dev/kvm", ignore_status=True) | 15 utils.system("fuser -k /dev/kvm", ignore_status=True) |
38 | 16 |
39 | 17 |
40 def cpu_vendor(): | |
41 vendor = "intel" | |
42 if os.system("grep vmx /proc/cpuinfo 1>/dev/null") != 0: | |
43 vendor = "amd" | |
44 logging.debug("Detected CPU vendor as '%s'", vendor) | |
45 return vendor | |
46 | |
47 | |
48 def _unload_kvm_modules(mod_list): | 18 def _unload_kvm_modules(mod_list): |
49 logging.info("Unloading previously loaded KVM modules") | 19 logging.info("Unloading previously loaded KVM modules") |
50 for module in reversed(mod_list): | 20 for module in reversed(mod_list): |
51 utils.unload_module(module) | 21 utils.unload_module(module) |
52 | 22 |
53 | 23 |
54 def _load_kvm_modules(mod_list, module_dir=None, load_stock=False): | 24 def _load_kvm_modules(mod_list, module_dir=None, load_stock=False): |
55 """ | 25 """ |
56 Just load the KVM modules, without killing Qemu or unloading previous | 26 Just load the KVM modules, without killing Qemu or unloading previous |
57 modules. | 27 modules. |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
153 | 123 |
154 def install_roms(rom_dir, prefix): | 124 def install_roms(rom_dir, prefix): |
155 logging.debug("Path to roms specified. Copying roms to install prefix") | 125 logging.debug("Path to roms specified. Copying roms to install prefix") |
156 rom_dst_dir = os.path.join(prefix, 'share', 'qemu') | 126 rom_dst_dir = os.path.join(prefix, 'share', 'qemu') |
157 for rom_src in glob.glob('%s/*.bin' % rom_dir): | 127 for rom_src in glob.glob('%s/*.bin' % rom_dir): |
158 rom_dst = os.path.join(rom_dst_dir, os.path.basename(rom_src)) | 128 rom_dst = os.path.join(rom_dst_dir, os.path.basename(rom_src)) |
159 logging.debug("Copying rom file %s to %s", rom_src, rom_dst) | 129 logging.debug("Copying rom file %s to %s", rom_src, rom_dst) |
160 shutil.copy(rom_src, rom_dst) | 130 shutil.copy(rom_src, rom_dst) |
161 | 131 |
162 | 132 |
163 def save_build(build_dir, dest_dir): | |
164 logging.debug('Saving the result of the build on %s', dest_dir) | |
165 base_name = os.path.basename(build_dir) | |
166 tarball_name = base_name + '.tar.bz2' | |
167 os.chdir(os.path.dirname(build_dir)) | |
168 utils.system('tar -cjf %s %s' % (tarball_name, base_name)) | |
169 shutil.move(tarball_name, os.path.join(dest_dir, tarball_name)) | |
170 | |
171 | |
172 class KvmInstallException(Exception): | 133 class KvmInstallException(Exception): |
173 pass | 134 pass |
174 | 135 |
175 | 136 |
176 class FailedKvmInstall(KvmInstallException): | 137 class FailedKvmInstall(KvmInstallException): |
177 pass | 138 pass |
178 | 139 |
179 | 140 |
180 class KvmNotInstalled(KvmInstallException): | 141 class KvmNotInstalled(KvmInstallException): |
181 pass | 142 pass |
(...skipping 11 matching lines...) Expand all Loading... |
193 | 154 |
194 load_modules = params.get('load_modules', 'no') | 155 load_modules = params.get('load_modules', 'no') |
195 if not load_modules or load_modules == 'yes': | 156 if not load_modules or load_modules == 'yes': |
196 self.should_load_modules = True | 157 self.should_load_modules = True |
197 elif load_modules == 'no': | 158 elif load_modules == 'no': |
198 self.should_load_modules = False | 159 self.should_load_modules = False |
199 default_extra_modules = str(None) | 160 default_extra_modules = str(None) |
200 self.extra_modules = eval(params.get("extra_modules", | 161 self.extra_modules = eval(params.get("extra_modules", |
201 default_extra_modules)) | 162 default_extra_modules)) |
202 | 163 |
203 self.cpu_vendor = cpu_vendor() | 164 self.cpu_vendor = virt_installer.cpu_vendor() |
204 | 165 |
205 self.srcdir = test.srcdir | 166 self.srcdir = test.srcdir |
206 if not os.path.isdir(self.srcdir): | 167 if not os.path.isdir(self.srcdir): |
207 os.makedirs(self.srcdir) | 168 os.makedirs(self.srcdir) |
208 | 169 |
209 self.test_bindir = test.bindir | 170 self.test_bindir = test.bindir |
210 self.results_dir = test.resultsdir | 171 self.results_dir = test.resultsdir |
211 | 172 |
212 # KVM build prefix, for the modes that do need it | 173 # KVM build prefix, for the modes that do need it |
213 prefix = os.path.join(test.bindir, 'build') | 174 prefix = os.path.join(test.bindir, 'build') |
(...skipping 19 matching lines...) Expand all Loading... |
233 | 194 |
234 def install_unittests(self): | 195 def install_unittests(self): |
235 userspace_srcdir = os.path.join(self.srcdir, "kvm_userspace") | 196 userspace_srcdir = os.path.join(self.srcdir, "kvm_userspace") |
236 test_repo = self.params.get("test_git_repo") | 197 test_repo = self.params.get("test_git_repo") |
237 test_branch = self.params.get("test_branch", "master") | 198 test_branch = self.params.get("test_branch", "master") |
238 test_commit = self.params.get("test_commit", None) | 199 test_commit = self.params.get("test_commit", None) |
239 test_lbranch = self.params.get("test_lbranch", "master") | 200 test_lbranch = self.params.get("test_lbranch", "master") |
240 | 201 |
241 if test_repo: | 202 if test_repo: |
242 test_srcdir = os.path.join(self.srcdir, "kvm-unit-tests") | 203 test_srcdir = os.path.join(self.srcdir, "kvm-unit-tests") |
243 kvm_utils.get_git_branch(test_repo, test_branch, test_srcdir, | 204 virt_utils.get_git_branch(test_repo, test_branch, test_srcdir, |
244 test_commit, test_lbranch) | 205 test_commit, test_lbranch) |
245 unittest_cfg = os.path.join(test_srcdir, 'x86', | 206 unittest_cfg = os.path.join(test_srcdir, 'x86', |
246 'unittests.cfg') | 207 'unittests.cfg') |
247 self.test_srcdir = test_srcdir | 208 self.test_srcdir = test_srcdir |
248 else: | 209 else: |
249 unittest_cfg = os.path.join(userspace_srcdir, 'kvm', 'test', 'x86', | 210 unittest_cfg = os.path.join(userspace_srcdir, 'kvm', 'test', 'x86', |
250 'unittests.cfg') | 211 'unittests.cfg') |
251 self.unittest_cfg = None | 212 self.unittest_cfg = None |
252 if os.path.isfile(unittest_cfg): | 213 if os.path.isfile(unittest_cfg): |
253 self.unittest_cfg = unittest_cfg | 214 self.unittest_cfg = unittest_cfg |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
379 def install(self): | 340 def install(self): |
380 self.install_unittests() | 341 self.install_unittests() |
381 self._clean_previous_installs() | 342 self._clean_previous_installs() |
382 self._get_packages() | 343 self._get_packages() |
383 self._install_packages() | 344 self._install_packages() |
384 create_symlinks(test_bindir=self.test_bindir, | 345 create_symlinks(test_bindir=self.test_bindir, |
385 bin_list=self.qemu_bin_paths, | 346 bin_list=self.qemu_bin_paths, |
386 unittest=self.unittest_prefix) | 347 unittest=self.unittest_prefix) |
387 self.reload_modules_if_needed() | 348 self.reload_modules_if_needed() |
388 if self.save_results: | 349 if self.save_results: |
389 save_build(self.srcdir, self.results_dir) | 350 virt_installer.save_build(self.srcdir, self.results_dir) |
390 | 351 |
391 | 352 |
392 class KojiInstaller(YumInstaller): | 353 class KojiInstaller(YumInstaller): |
393 """ | 354 """ |
394 Class that handles installing KVM from the fedora build service, koji. | 355 Class that handles installing KVM from the fedora build service, koji. |
395 | 356 It uses yum to install and remove packages. |
396 It uses yum to install and remove packages. Packages are specified | |
397 according to the syntax defined in the PkgSpec class. | |
398 """ | 357 """ |
399 load_stock_modules = True | 358 load_stock_modules = True |
400 def set_install_params(self, test, params): | 359 def set_install_params(self, test, params): |
401 """ | 360 """ |
402 Gets parameters and initializes the package downloader. | 361 Gets parameters and initializes the package downloader. |
403 | 362 |
404 @param test: kvm test object | 363 @param test: kvm test object |
405 @param params: Dictionary with test arguments | 364 @param params: Dictionary with test arguments |
406 """ | 365 """ |
407 super(KojiInstaller, self).set_install_params(test, params) | 366 super(KojiInstaller, self).set_install_params(test, params) |
| 367 default_koji_cmd = '/usr/bin/koji' |
| 368 default_src_pkg = 'qemu' |
| 369 self.src_pkg = params.get("src_pkg", default_src_pkg) |
408 self.tag = params.get("koji_tag", None) | 370 self.tag = params.get("koji_tag", None) |
409 self.koji_cmd = params.get("koji_cmd", None) | 371 self.build = params.get("koji_build", None) |
410 if self.tag is not None: | 372 self.koji_cmd = params.get("koji_cmd", default_koji_cmd) |
411 kvm_utils.set_default_koji_tag(self.tag) | |
412 self.koji_pkgs = eval(params.get("koji_pkgs", "[]")) | |
413 | 373 |
414 | 374 |
415 def _get_packages(self): | 375 def _get_packages(self): |
416 """ | 376 """ |
417 Downloads the specific arch RPMs for the specific build name. | 377 Downloads the specific arch RPMs for the specific build name. |
418 """ | 378 """ |
419 koji_client = kvm_utils.KojiClient(cmd=self.koji_cmd) | 379 downloader = virt_utils.KojiDownloader(cmd=self.koji_cmd) |
420 for pkg_text in self.koji_pkgs: | 380 downloader.get(src_package=self.src_pkg, tag=self.tag, |
421 pkg = kvm_utils.KojiPkgSpec(pkg_text) | 381 build=self.build, dst_dir=self.srcdir) |
422 if pkg.is_valid(): | |
423 koji_client.get_pkgs(pkg, dst_dir=self.srcdir) | |
424 else: | |
425 logging.error('Package specification (%s) is invalid: %s', pkg, | |
426 pkg.describe_invalid()) | |
427 | |
428 | |
429 def _clean_previous_installs(self): | |
430 kill_qemu_processes() | |
431 removable_packages = " ".join(self._get_rpm_names()) | |
432 utils.system("yum -y remove %s" % removable_packages) | |
433 | 382 |
434 | 383 |
435 def install(self): | 384 def install(self): |
436 self._clean_previous_installs() | 385 super(KojiInstaller, self)._clean_previous_installs() |
437 self._get_packages() | 386 self._get_packages() |
438 self._install_packages() | 387 super(KojiInstaller, self)._install_packages() |
439 self.install_unittests() | 388 self.install_unittests() |
440 create_symlinks(test_bindir=self.test_bindir, | 389 create_symlinks(test_bindir=self.test_bindir, |
441 bin_list=self.qemu_bin_paths, | 390 bin_list=self.qemu_bin_paths, |
442 unittest=self.unittest_prefix) | 391 unittest=self.unittest_prefix) |
443 self.reload_modules_if_needed() | 392 self.reload_modules_if_needed() |
444 if self.save_results: | 393 if self.save_results: |
445 save_build(self.srcdir, self.results_dir) | 394 virt_installer.save_build(self.srcdir, self.results_dir) |
446 | |
447 | |
448 def _get_rpm_names(self): | |
449 all_rpm_names = [] | |
450 koji_client = kvm_utils.KojiClient(cmd=self.koji_cmd) | |
451 for pkg_text in self.koji_pkgs: | |
452 pkg = kvm_utils.KojiPkgSpec(pkg_text) | |
453 rpm_names = koji_client.get_pkg_rpm_names(pkg) | |
454 all_rpm_names += rpm_names | |
455 return all_rpm_names | |
456 | |
457 | |
458 def _get_rpm_file_names(self): | |
459 all_rpm_file_names = [] | |
460 koji_client = kvm_utils.KojiClient(cmd=self.koji_cmd) | |
461 for pkg_text in self.koji_pkgs: | |
462 pkg = kvm_utils.KojiPkgSpec(pkg_text) | |
463 rpm_file_names = koji_client.get_pkg_rpm_file_names(pkg) | |
464 all_rpm_file_names += rpm_file_names | |
465 return all_rpm_file_names | |
466 | |
467 | |
468 def _install_packages(self): | |
469 """ | |
470 Install all downloaded packages. | |
471 """ | |
472 os.chdir(self.srcdir) | |
473 rpm_file_names = " ".join(self._get_rpm_file_names()) | |
474 utils.system("yum --nogpgcheck -y localinstall %s" % rpm_file_names) | |
475 | 395 |
476 | 396 |
477 class SourceDirInstaller(BaseInstaller): | 397 class SourceDirInstaller(BaseInstaller): |
478 """ | 398 """ |
479 Class that handles building/installing KVM directly from a tarball or | 399 Class that handles building/installing KVM directly from a tarball or |
480 a single source code dir. | 400 a single source code dir. |
481 """ | 401 """ |
482 def set_install_params(self, test, params): | 402 def set_install_params(self, test, params): |
483 """ | 403 """ |
484 Initializes class attributes, and retrieves KVM code. | 404 Initializes class attributes, and retrieves KVM code. |
(...skipping 17 matching lines...) Expand all Loading... |
502 "control file.") | 422 "control file.") |
503 else: | 423 else: |
504 shutil.copytree(srcdir, self.srcdir) | 424 shutil.copytree(srcdir, self.srcdir) |
505 | 425 |
506 if self.install_mode == 'release': | 426 if self.install_mode == 'release': |
507 release_tag = params.get("release_tag") | 427 release_tag = params.get("release_tag") |
508 release_dir = params.get("release_dir") | 428 release_dir = params.get("release_dir") |
509 release_listing = params.get("release_listing") | 429 release_listing = params.get("release_listing") |
510 logging.info("Installing KVM from release tarball") | 430 logging.info("Installing KVM from release tarball") |
511 if not release_tag: | 431 if not release_tag: |
512 release_tag = kvm_utils.get_latest_kvm_release_tag( | 432 release_tag = virt_utils.get_latest_kvm_release_tag( |
513 release_listing) | 433 release_listing) |
514 tarball = os.path.join(release_dir, 'kvm', release_tag, | 434 tarball = os.path.join(release_dir, 'kvm', release_tag, |
515 "kvm-%s.tar.gz" % release_tag) | 435 "kvm-%s.tar.gz" % release_tag) |
516 logging.info("Retrieving release kvm-%s" % release_tag) | 436 logging.info("Retrieving release kvm-%s" % release_tag) |
517 tarball = utils.unmap_url("/", tarball, "/tmp") | 437 tarball = utils.unmap_url("/", tarball, "/tmp") |
518 | 438 |
519 elif self.install_mode == 'snapshot': | 439 elif self.install_mode == 'snapshot': |
520 logging.info("Installing KVM from snapshot") | 440 logging.info("Installing KVM from snapshot") |
521 snapshot_dir = params.get("snapshot_dir") | 441 snapshot_dir = params.get("snapshot_dir") |
522 if not snapshot_dir: | 442 if not snapshot_dir: |
(...skipping 15 matching lines...) Expand all Loading... |
538 raise error.TestError("KVM Tarball install specified but no" | 458 raise error.TestError("KVM Tarball install specified but no" |
539 " tarball provided on control file.") | 459 " tarball provided on control file.") |
540 logging.info("Installing KVM from a local tarball") | 460 logging.info("Installing KVM from a local tarball") |
541 logging.info("Using tarball %s") | 461 logging.info("Using tarball %s") |
542 tarball = utils.unmap_url("/", params.get("tarball"), "/tmp") | 462 tarball = utils.unmap_url("/", params.get("tarball"), "/tmp") |
543 | 463 |
544 if self.install_mode in ['release', 'snapshot', 'localtar']: | 464 if self.install_mode in ['release', 'snapshot', 'localtar']: |
545 utils.extract_tarball_to_dir(tarball, self.srcdir) | 465 utils.extract_tarball_to_dir(tarball, self.srcdir) |
546 | 466 |
547 if self.install_mode in ['release', 'snapshot', 'localtar', 'srcdir']: | 467 if self.install_mode in ['release', 'snapshot', 'localtar', 'srcdir']: |
548 self.repo_type = kvm_utils.check_kvm_source_dir(self.srcdir) | 468 self.repo_type = virt_utils.check_kvm_source_dir(self.srcdir) |
549 configure_script = os.path.join(self.srcdir, 'configure') | 469 p = os.path.join(self.srcdir, 'configure') |
550 self.configure_options = check_configure_options(configure_script) | 470 self.configure_options = virt_installer.check_configure_options(p) |
551 | 471 |
552 | 472 |
553 def _build(self): | 473 def _build(self): |
554 make_jobs = utils.count_cpus() | 474 make_jobs = utils.count_cpus() |
555 os.chdir(self.srcdir) | 475 os.chdir(self.srcdir) |
556 # For testing purposes, it's better to build qemu binaries with | 476 # For testing purposes, it's better to build qemu binaries with |
557 # debugging symbols, so we can extract more meaningful stack traces. | 477 # debugging symbols, so we can extract more meaningful stack traces. |
558 cfg = "./configure --prefix=%s" % self.prefix | 478 cfg = "./configure --prefix=%s" % self.prefix |
559 if "--disable-strip" in self.configure_options: | 479 if "--disable-strip" in self.configure_options: |
560 cfg += " --disable-strip" | 480 cfg += " --disable-strip" |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
628 else: | 548 else: |
629 logging.info("Loading stock KVM modules") | 549 logging.info("Loading stock KVM modules") |
630 _load_kvm_modules(mod_list, load_stock=True) | 550 _load_kvm_modules(mod_list, load_stock=True) |
631 | 551 |
632 | 552 |
633 def install(self): | 553 def install(self): |
634 self._build() | 554 self._build() |
635 self._install() | 555 self._install() |
636 self.reload_modules_if_needed() | 556 self.reload_modules_if_needed() |
637 if self.save_results: | 557 if self.save_results: |
638 save_build(self.srcdir, self.results_dir) | 558 virt_installer.save_build(self.srcdir, self.results_dir) |
639 | 559 |
640 | 560 |
641 class GitInstaller(SourceDirInstaller): | 561 class GitInstaller(SourceDirInstaller): |
642 def _pull_code(self): | 562 def _pull_code(self): |
643 """ | 563 """ |
644 Retrieves code from git repositories. | 564 Retrieves code from git repositories. |
645 """ | 565 """ |
646 params = self.params | 566 params = self.params |
647 | 567 |
648 kernel_repo = params.get("git_repo") | 568 kernel_repo = params.get("git_repo") |
(...skipping 15 matching lines...) Expand all Loading... |
664 kernel_patches = eval(params.get("kernel_patches", "[]")) | 584 kernel_patches = eval(params.get("kernel_patches", "[]")) |
665 user_patches = eval(params.get("user_patches", "[]")) | 585 user_patches = eval(params.get("user_patches", "[]")) |
666 kmod_patches = eval(params.get("user_patches", "[]")) | 586 kmod_patches = eval(params.get("user_patches", "[]")) |
667 | 587 |
668 if not user_repo: | 588 if not user_repo: |
669 message = "KVM user git repository path not specified" | 589 message = "KVM user git repository path not specified" |
670 logging.error(message) | 590 logging.error(message) |
671 raise error.TestError(message) | 591 raise error.TestError(message) |
672 | 592 |
673 userspace_srcdir = os.path.join(self.srcdir, "kvm_userspace") | 593 userspace_srcdir = os.path.join(self.srcdir, "kvm_userspace") |
674 kvm_utils.get_git_branch(user_repo, user_branch, userspace_srcdir, | 594 virt_utils.get_git_branch(user_repo, user_branch, userspace_srcdir, |
675 user_commit, user_lbranch) | 595 user_commit, user_lbranch) |
676 self.userspace_srcdir = userspace_srcdir | 596 self.userspace_srcdir = userspace_srcdir |
677 | 597 |
678 if user_patches: | 598 if user_patches: |
679 os.chdir(self.userspace_srcdir) | 599 os.chdir(self.userspace_srcdir) |
680 for patch in user_patches: | 600 for patch in user_patches: |
681 utils.get_file(patch, os.path.join(self.userspace_srcdir, | 601 utils.get_file(patch, os.path.join(self.userspace_srcdir, |
682 os.path.basename(patch))) | 602 os.path.basename(patch))) |
683 utils.system('patch -p1 < %s' % os.path.basename(patch)) | 603 utils.system('patch -p1 < %s' % os.path.basename(patch)) |
684 | 604 |
685 if kernel_repo: | 605 if kernel_repo: |
686 kernel_srcdir = os.path.join(self.srcdir, "kvm") | 606 kernel_srcdir = os.path.join(self.srcdir, "kvm") |
687 kvm_utils.get_git_branch(kernel_repo, kernel_branch, kernel_srcdir, | 607 virt_utils.get_git_branch(kernel_repo, kernel_branch, kernel_srcdir, |
688 kernel_commit, kernel_lbranch) | 608 kernel_commit, kernel_lbranch) |
689 self.kernel_srcdir = kernel_srcdir | 609 self.kernel_srcdir = kernel_srcdir |
690 if kernel_patches: | 610 if kernel_patches: |
691 os.chdir(self.kernel_srcdir) | 611 os.chdir(self.kernel_srcdir) |
692 for patch in kernel_patches: | 612 for patch in kernel_patches: |
693 utils.get_file(patch, os.path.join(self.userspace_srcdir, | 613 utils.get_file(patch, os.path.join(self.userspace_srcdir, |
694 os.path.basename(patch))) | 614 os.path.basename(patch))) |
695 utils.system('patch -p1 < %s' % os.path.basename(patch)) | 615 utils.system('patch -p1 < %s' % os.path.basename(patch)) |
696 else: | 616 else: |
697 self.kernel_srcdir = None | 617 self.kernel_srcdir = None |
698 | 618 |
699 if kmod_repo: | 619 if kmod_repo: |
700 kmod_srcdir = os.path.join (self.srcdir, "kvm_kmod") | 620 kmod_srcdir = os.path.join (self.srcdir, "kvm_kmod") |
701 kvm_utils.get_git_branch(kmod_repo, kmod_branch, kmod_srcdir, | 621 virt_utils.get_git_branch(kmod_repo, kmod_branch, kmod_srcdir, |
702 kmod_commit, kmod_lbranch) | 622 kmod_commit, kmod_lbranch) |
703 self.kmod_srcdir = kmod_srcdir | 623 self.kmod_srcdir = kmod_srcdir |
704 if kmod_patches: | 624 if kmod_patches: |
705 os.chdir(self.kmod_srcdir) | 625 os.chdir(self.kmod_srcdir) |
706 for patch in kmod_patches: | 626 for patch in kmod_patches: |
707 utils.get_file(patch, os.path.join(self.userspace_srcdir, | 627 utils.get_file(patch, os.path.join(self.userspace_srcdir, |
708 os.path.basename(patch))) | 628 os.path.basename(patch))) |
709 utils.system('patch -p1 < %s' % os.path.basename(patch)) | 629 utils.system('patch -p1 < %s' % os.path.basename(patch)) |
710 else: | 630 else: |
711 self.kmod_srcdir = None | 631 self.kmod_srcdir = None |
712 | 632 |
713 configure_script = os.path.join(self.userspace_srcdir, 'configure') | 633 p = os.path.join(self.userspace_srcdir, 'configure') |
714 self.configure_options = check_configure_options(configure_script) | 634 self.configure_options = virt_installer.check_configure_options(p) |
715 | 635 |
716 | 636 |
717 def _build(self): | 637 def _build(self): |
718 make_jobs = utils.count_cpus() | 638 make_jobs = utils.count_cpus() |
719 cfg = './configure' | 639 cfg = './configure' |
720 if self.kmod_srcdir: | 640 if self.kmod_srcdir: |
721 logging.info('Building KVM modules') | 641 logging.info('Building KVM modules') |
722 os.chdir(self.kmod_srcdir) | 642 os.chdir(self.kmod_srcdir) |
723 module_build_steps = [cfg, | 643 module_build_steps = [cfg, |
724 'make clean', | 644 'make clean', |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
777 bin_list=None, | 697 bin_list=None, |
778 unittest=self.unittest_prefix) | 698 unittest=self.unittest_prefix) |
779 | 699 |
780 | 700 |
781 def install(self): | 701 def install(self): |
782 self._pull_code() | 702 self._pull_code() |
783 self._build() | 703 self._build() |
784 self._install() | 704 self._install() |
785 self.reload_modules_if_needed() | 705 self.reload_modules_if_needed() |
786 if self.save_results: | 706 if self.save_results: |
787 save_build(self.srcdir, self.results_dir) | 707 virt_installer.save_build(self.srcdir, self.results_dir) |
788 | 708 |
789 | 709 |
790 class PreInstalledKvm(BaseInstaller): | 710 class PreInstalledKvm(BaseInstaller): |
791 # load_modules() will use the stock modules: | 711 # load_modules() will use the stock modules: |
792 load_stock_modules = True | 712 load_stock_modules = True |
793 def install(self): | 713 def install(self): |
794 logging.info("Expecting KVM to be already installed. Doing nothing") | 714 logging.info("Expecting KVM to be already installed. Doing nothing") |
795 | 715 |
796 | 716 |
797 class FailedInstaller: | 717 class FailedInstaller: |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
829 return c | 749 return c |
830 | 750 |
831 | 751 |
832 def make_installer(params): | 752 def make_installer(params): |
833 # priority: | 753 # priority: |
834 # - 'install_mode' param | 754 # - 'install_mode' param |
835 # - 'mode' param | 755 # - 'mode' param |
836 mode = params.get("install_mode", params.get("mode")) | 756 mode = params.get("install_mode", params.get("mode")) |
837 klass = _installer_class(mode) | 757 klass = _installer_class(mode) |
838 return klass(mode) | 758 return klass(mode) |
OLD | NEW |