← Back to team overview

launchpad-reviewers team mailing list archive

lp:~nick-moffitt/launchpad-buildd/qemu-syscall-emulated-arm-support into lp:launchpad-buildd

 

Nick Moffitt has proposed merging lp:~nick-moffitt/launchpad-buildd/qemu-syscall-emulated-arm-support into lp:launchpad-buildd.

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)

For more details, see:
https://code.launchpad.net/~nick-moffitt/launchpad-buildd/qemu-syscall-emulated-arm-support/+merge/83651

This branch adds support for syscall-emulated qemu arm chroots, mostly by adjusting the logic surrounding ia32 builds on amd64 hosts.  I had to make the qemu-user-static package a Recommends rather than a Depends because these systems currently support Hardy, and qemu-user-static is in Universe only from natty onwards.
-- 
https://code.launchpad.net/~nick-moffitt/launchpad-buildd/qemu-syscall-emulated-arm-support/+merge/83651
Your team Launchpad code reviewers is requested to review the proposed merge of lp:~nick-moffitt/launchpad-buildd/qemu-syscall-emulated-arm-support into lp:launchpad-buildd.
=== modified file 'debian/changelog'
--- debian/changelog	2011-11-21 05:29:09 +0000
+++ debian/changelog	2011-11-28 17:35:40 +0000
@@ -1,3 +1,12 @@
+launchpad-buildd (108) hardy; urgency=low
+
+  * Fixed up sbuild-package and update-debian-chroot to support
+    syscall-emulated ARM builds on non-ARM hardware.
+  * Added Recommends for qemu-user-static to launchpad-buildd, as the
+    package only exists in Universe in natty and later.
+
+ -- Nick Moffitt <nick.moffitt@xxxxxxxxxxxxx>  Mon, 28 Nov 2011 17:12:04 +0000
+
 launchpad-buildd (107) hardy; urgency=low
 
   * Correction to generate-translation-templates for the new file location.

=== modified file 'debian/control'
--- debian/control	2011-11-21 03:40:27 +0000
+++ debian/control	2011-11-28 17:35:40 +0000
@@ -11,6 +11,7 @@
 Depends: python-lpbuildd (=${source:Version}), python, debootstrap, dpkg-dev,
  linux32, file, bzip2, sudo, ntpdate, adduser, apt-transport-https, lsb-release,
  apache2, pristine-tar, python-apt, ${misc:Depends}
+Recommends: qemu-user-static
 Conflicts: sbuild
 Description: Launchpad buildd slave
  This is the launchpad buildd slave package. It contains everything needed to

=== modified file 'sbuild-package'
--- sbuild-package	2011-11-09 07:50:56 +0000
+++ sbuild-package	2011-11-28 17:35:40 +0000
@@ -42,15 +42,17 @@
     SBUILD="linux32 $SBUILD"
     WARN="--warnonly"
     ;;
-  i386|lpia|armel)
+  i386|lpia|arm*)
     # SBUILD is already correct
     WARN="--warnonly"
     ;;
   amd64)
-    if [ "$hostarch" != "$ARCHITECTURETAG" ]; then
-      SBUILD="linux32 $SBUILD"
-      WARN="--warnonly"
-    fi
+    case "$ARCHITECTURETAG" in
+      i386|lpia)
+        SBUILD="linux32 $SBUILD"
+      ;;
+    esac
+    WARN="--warnonly"
     ;;
   ia64)
     ;;

=== modified file 'update-debian-chroot'
--- update-debian-chroot	2011-11-09 07:50:56 +0000
+++ update-debian-chroot	2011-11-28 17:35:40 +0000
@@ -30,12 +30,27 @@
     CHROOT="linux32 $CHROOT"
     ;;
   amd64)
-    if [ "$hostarch" != "$ARCHITECTURETAG" ]; then
-      CHROOT="linux32 $CHROOT"
-    fi
+    case "$ARCHITECTURETAG" in
+      i386|lpia)
+        CHROOT="linux32 $CHROOT"
+        ;;
+    esac
     ;;
 esac
 
+# Anything more fancy than amd64->ia32 is done with qemu+syscall
+# emulation, handled via binfmt.misc hints to the kernel that require
+# the statically-compiled qemu binary to appear in the same place both
+# inside and outside the chroot.
+if [ "$hostarch" != "$ARCHITECTURETAG" ]
+then
+  case "$ARCHITECTURETAG" in
+    arm*)
+      /usr/bin/install /usr/bin/qemu-arm-static $ROOT/usr/bin/
+      ;;
+  esac
+fi
+
 export LANG=C
 export DEBIAN_FRONTEND=noninteractive
 export TTY=unknown


Follow ups