Enable kvm build function
authory0169.zhang <y0169.zhang@samsung.com>
Tue, 27 Sep 2016 03:04:49 +0000 (12:04 +0900)
committerSoonKyu Park <sk7.park@samsung.com>
Mon, 26 Dec 2016 12:34:51 +0000 (21:34 +0900)
Change-Id: I1a52eb496882ddaae4a7b52495cf5544110ce3bf

data/initrd [new file with mode: 0644]
data/vmlinuz [new file with mode: 0644]
debian/rules
gitbuildsys/cmd_build.py
packaging/gbs.spec
tools/gbs

diff --git a/data/initrd b/data/initrd
new file mode 100644 (file)
index 0000000..9ca3983
Binary files /dev/null and b/data/initrd differ
diff --git a/data/vmlinuz b/data/vmlinuz
new file mode 100644 (file)
index 0000000..b091bab
Binary files /dev/null and b/data/vmlinuz differ
index 6f59c1c..0e50bdd 100644 (file)
@@ -7,7 +7,10 @@ override_dh_auto_install:
        python setup.py install --root=debian/tmp --prefix=/usr
        make man
        mkdir -p debian/tmp/usr/share/man/man1
+       mkdir -p debian/tmp/usr/share/gbs
        install -m644 docs/gbs.1 debian/tmp/usr/share/man/man1
+       install -m644 data/initrd debian/tmp/usr/share/gbs
+       install -m644 data/vmlinuz debian/tmp/usr/share/gbs
        for job_name in $(shell ls jenkins-jobs/configs); do \
                mkdir -p debian/tmp/var/lib/jenkins/jobs/$$job_name; \
                install -m644 jenkins-jobs/configs/$$job_name/config.xml debian/tmp/var/lib/jenkins/jobs/$$job_name; \
index 594c76c..a9b5292 100644 (file)
@@ -252,10 +252,28 @@ def prepare_depanneur_opts(args):
     if args.rdeps:
         cmd_opts += ['--rdeps']
 
+    if args.kvm:
+        cmd_opts += ['--clean']
+        cmd_opts += ['--vm-type=kvm']
+        cmd_opts += ['--vm-memory=%s' % args.vm_memory]
+        cmd_opts += ['--vm-disk=%s' % args.vm_disk]
+        cmd_opts += ['--vm-swap=%s' % args.vm_swap]
+        cmd_opts += ['--vm-diskfilesystem=%s' % args.vm_diskfilesystem]
+        if not os.path.exists(args.vm_initrd):
+            raise GbsError("Check file to exists vm-initrd")
+        cmd_opts += ['--vm-initrd=%s' % args.vm_initrd]
+        if not os.path.exists(args.vm_kernel):
+            raise GbsError("Check file to exists vm-kernel")
+        cmd_opts += ['--vm-kernel=%s' % args.vm_kernel]
+
     if args.icecream > 0:
         cmd_opts += ['--icecream=%s' % args.icecream]
 
     cmd_opts += ['--threads=%s' % args.threads]
+    if args.kvm:
+        loopdev = len([name for name in os.listdir('/dev') if bool(re.search("loop[0-9]",name))])
+        if not args.threads < loopdev:
+            raise GbsError('When using the kvm, loop device should be larger than the threads option.')
     cmd_opts += ['--packaging-dir=%s' % get_packaging_dir(args)]
 
     return cmd_opts
index 5a0b4d8..3b7a16a 100644 (file)
@@ -112,7 +112,10 @@ make man
 %{__python} setup.py install --prefix=%{_prefix} --root=%{buildroot}
 
 mkdir -p %{buildroot}/%{_prefix}/share/man/man1
+mkdir -p %{buildroot}/%{_prefix}/share/gbs
 install -m644 docs/gbs.1 %{buildroot}/%{_prefix}/share/man/man1
+install -m644 data/initrd %{buildroot}/%{_prefix}/share/gbs
+install -m644 data/vmlinuz %{buildroot}/%{_prefix}/share/gbs
 
 # Install Jenkins Jobs
 for job_name in $(ls jenkins-jobs/configs)
@@ -131,7 +134,9 @@ rm -rf %{buildroot}
 %files
 %defattr(-,root,root,-)
 %doc README.rst docs/RELEASE_NOTES
+%dir %{_prefix}/share/gbs
 %{_mandir}/man1/*
+%{_prefix}/share/gbs/*
 %{python_sitelib}/gitbuildsys/cmd_build.py*
 %{python_sitelib}/gitbuildsys/cmd_changelog.py*
 %{python_sitelib}/gitbuildsys/cmd_chroot.py*
index d7b5622..935db9e 100755 (executable)
--- a/tools/gbs
+++ b/tools/gbs
@@ -212,6 +212,20 @@ def build_parser(parser):
                         'build root')
     group.add_argument('--use-higher-deps', action='store_true',
                         help='Which repo provides higher version deps, use it')
+    group.add_argument('--kvm', action='store_true',
+                        help='Launch a kvm machine to build package instead of using chroot')
+    group.add_argument('--vm-memory', type=int, default=4096,
+                        help='The memory size of kvm machine')
+    group.add_argument('--vm-disk', type=int, default=32768,
+                        help='The disk size of kvm machine')
+    group.add_argument('--vm-swap', type=int, default=8192,
+                        help='The swap size of kvm machine')
+    group.add_argument('--vm-diskfilesystem', type=str, default='ext4',
+                        help='The filesystem type of kvm machine')
+    group.add_argument('--vm-initrd', type=str, default='/usr/share/gbs/initrd',
+                        help='The initrd of kvm machine')
+    group.add_argument('--vm-kernel', type=str, default='/usr/share/gbs/vmlinuz',
+                        help='The kernel of kvm machine')
 
     group = parser.add_argument_group('speed up building options')
     group.add_argument('--incremental', action='store_true',