Package: qemubuilder                                                            
Version: 0.73                                                                   
Severity: wishlist
Tags: patch

Dear Maintainer,

while setting up a building environment I was astonished that
qemubuilder lacks support for armhf.

Please add armhf support to qemubuilder.

Regards
    Benedikt Spranger

-- System Information:
Debian Release: 8.0
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.16.0-4-amd64 (SMP w/8 CPU cores)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: sysvinit (via /sbin/init)

Versions of packages qemubuilder depends on:
ii  debootstrap     1.0.67
ii  libc6           2.19-15
ii  pbuilder        0.215+nmu3
ii  qemu-kvm [kvm]  1:2.1+dfsg-11
ii  qemu-system     1:2.1+dfsg-11

qemubuilder recommends no packages.

qemubuilder suggests no packages.

-- no debconf information
>From 7f7c51c84c6ccca066a66357f9af0d17728693d5 Mon Sep 17 00:00:00 2001
From: Benedikt Spranger <b.spran...@linutronix.de>
Date: Thu, 12 Mar 2015 00:27:57 +0100
Subject: [PATCH] Add armhf support

While setting up a building environment I was astonished that qemubuilder
lacks support for armhf.

Adding armhf support using existing armhf infrastucture i.e. Debian Kernel
and Initrd.

qemubuilder was tested with Kernel and Initrd from a fresh jessie install
and the following configuration:

KERNEL_IMAGE=vmlinuz-3.16.0-4-armmp
INITRD=initrd.img-3.16.0-4-armmp
MIRRORSITE=http://debian.tu-bs.de/debian
ARCH=armhf
BASEPATH=/var/cache/pbuilder/base-armhf.qemu
MEMORY_MEGS=1024
DISTRIBUTION=jessie

It works fine.

Signed-off-by: Benedikt Spranger <b.spran...@linutronix.de>
---
 qemuarch.c    | 11 ++++++++---
 qemubuilder.c | 25 ++++++++++++++++++++-----
 2 files changed, 28 insertions(+), 8 deletions(-)

diff --git a/qemuarch.c b/qemuarch.c
index fe2c4d3..3fe7f11 100644
--- a/qemuarch.c
+++ b/qemuarch.c
@@ -57,7 +57,8 @@ const char* qemu_arch_diskdevice(const struct pbuilderconfig* pc)
   dev_t consoledev;
 
   if (!strcmp(arch, "arm") ||
-      !strcmp(arch, "armel"))
+      !strcmp(arch, "armel") ||
+      !strcmp(arch, "armhf"))
     {
       consoledev = makedev(204, 64);
     }
@@ -113,7 +114,8 @@ char* get_host_dpkg_arch()
 const char* qemu_arch_qemu(const char* arch)
 {
   if (!strcmp(arch, "arm") ||
-      !strcmp(arch, "armel"))
+      !strcmp(arch, "armel") ||
+      !strcmp(arch, "armhf"))
     {
       return "qemu-system-arm";
     }
@@ -163,6 +165,8 @@ const char* qemu_arch_qemumachine(const char* arch)
   if (!strcmp(arch, "arm") ||
       !strcmp(arch, "armel"))
     return "versatilepb";
+  else if (!strcmp(arch, "armhf"))
+	   return "virt";
   else if (!strcmp(arch, "i386") ||
 	   !strcmp(arch, "hurd-i386") ||
            !strcmp(arch, "amd64"))
@@ -184,7 +188,8 @@ const char* qemu_arch_tty(const char* arch)
 {
 
   if (!strcmp(arch, "arm")||
-      !strcmp(arch, "armel"))
+      !strcmp(arch, "armel") ||
+      !strcmp(arch, "armhf"))
     {
       return "ttyAMA0,115200n8";
     }
diff --git a/qemubuilder.c b/qemubuilder.c
index 4e43ef7..957202e 100755
--- a/qemubuilder.c
+++ b/qemubuilder.c
@@ -275,7 +275,7 @@ static int fork_qemu(const char* hda, const char* hdb, const struct pbuilderconf
       const char* initrd = pc->initrd;
       char* mem;
       int argc = 0;
-      const int MAX_ARGS = 30;
+      const int MAX_ARGS = 40;
       char *argv[MAX_ARGS];
       int i;
 
@@ -286,10 +286,12 @@ static int fork_qemu(const char* hda, const char* hdb, const struct pbuilderconf
 
       asprintf(&mem, "%i", pc->memory_megs);
 
-      asprintf(&hda_command, "file=%s,index=0,media=disk,cache=writeback",
+      asprintf(&hda_command,
+	       "file=%s,index=0,media=disk,cache=writeback,id=hd0",
 	       strdupa(hda));
 
-      asprintf(&hdb_command, "file=%s,index=1,media=disk,cache=writeback",
+      asprintf(&hdb_command,
+	       "file=%s,index=1,media=disk,cache=writeback,id=hd1",
 	       strdupa(hdb));
 
       asprintf(&append_command,
@@ -329,8 +331,21 @@ static int fork_qemu(const char* hda, const char* hdb, const struct pbuilderconf
       argv[argc++]="stdio";
       argv[argc++]="-net";
       argv[argc++]="user";
-      argv[argc++]="-net";
-      argv[argc++]="nic";
+      if (!strcmp(machine, "virt")) {
+	argv[argc++]="-device";
+	argv[argc++]="virtio-scsi-device,id=scsi";
+	argv[argc++]="-device";
+	argv[argc++]="virtio-net-device,netdev=net0";
+	argv[argc++]="-device";
+	argv[argc++]="scsi-hd,drive=hd0";
+	argv[argc++]="-device";
+	argv[argc++]="scsi-hd,drive=hd1";
+	argv[argc++]="-netdev";
+	argv[argc++]="user,id=net0";
+      } else {
+	argv[argc++]="-net";
+	argv[argc++]="nic";
+      }
       argv[argc]=NULL;
       assert(argc < MAX_ARGS);
 
-- 
2.1.4

Reply via email to