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 <[email protected]>
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 <[email protected]>
---
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