[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#643585: Bug 643585



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Daniel,

After taking your feedback, here is a set of 5 patches that
significantly reduce the line count and provide the needed functionality
for building cloud images (562 lines in the diff versus the ~2.5K
previous patches). The primary need for cloud images is that ability to
produce a "warm" file system suitable for running on Amazon AWS or Open
Stack.

Git Repo: https://github.com/utlemming/ubuntu-live-build

0001-Added-Ubuntu-Cloud-package-lists.patch:
      - Adds the Ubuntu Cloud package list definitions
      - Package lists are the official packages for the Ubuntu Cloud
images compatible with Maverick and later

0002-Fixed-rootfs-chroot-and-added-fs-label-support.patch
      - Fixed an issue where mkfs.ext? failed due to missing mtab while
formating file system in chroot
      - Added file system label support to rootfs for ext? file systems
      - Added /etc/fstab based on labels (allow rootfs to be used
independent of binary wrapper)

0003-Added-lb_binary_image-to-emit-standalone-rootfs-imag.patch:
      - Adds lb_binary_image to emit the chroot rootfs a file system
image named <LABEL>.<FS TYPE>
      - Provides the ability to build images suitable for running
      - For uses where the raw file system is needed
    
0004-Enablement-for-foreign-bootstrap-via-qemu-static.patch:
      Probably the most controversial of my patches
      - Adds foreign bootstrapping ability via "qemu-<ARCH>-static"
     
0005-Set-default-armel-linux-flavour-for-Ubuntu.patch:
      - Set default armel kernel flavour for Ubuntu to omap

As a side note, I've done a bit of work on the generation of VMDK and
QCOW2 images. If there is interest in supporting more complicated warm
file systems/images, I can do some work on porting those features. The
concern (and perhaps it is wrong) is that live-build is focused on
building bootable systems that use live-config, where cloud images
generally do not have nor need live-config.

~Ben

- -- 


Ben Howard
ben.howard@canonical.com
Canonical USA, Inc
GPG ID 0x5406A866


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)

iQIcBAEBAgAGBQJOhOFQAAoJEETWil5UBqhmwYgP/3+/JY8hmxU65nJ0iBUeheiT
z/9Tt9TRaCw74VKn7Z3bLxWXOwFhDdyZqGdW6S8TTo/YBuSR8jDCMARQXWPgHacv
u6i5AcRvoSJXKEaWOGDg/3ce8B+02g0s57F3/CMS3yqosJA74WMDk5SEqu8eHvOR
l5CG0979njah9AUIPt3h/dnAwx3fDVWQcZa6n4/tgwcij6YiLzs2FMD4PJBSf9G4
SmdXc4DyiR4E96zDxBt/IawPIQVPLQK6rOXRd/v4w2BHGJIqyGpeYegYGbgtDo19
u6LQydgZcq9LuCWIz4QILesHvx0zfgvzp8EqxaI9r6z3XD68HyRVur+CpWqsPX7J
n/TMUm1Lxz0ewZbYExY5P1tNNpHVGMC8hdBSdfDTEiuTayy23KSRTvsLb8irr3he
g0dYsiLFEmAYXtSrs4MwqH6dnFXtmV2HExnJqHEfuidEJZp/Babplhbm1Ij8vHkF
XKLeRcki8Xnp1ukmprmnrkUxESH8wkP2C6XeRvP/6LuZ+lKxGx01XSaolLrnVyN1
ocMHkXbumYJjJinvHwVLlyMdzs69VRqy1MEL+KLL6Qi7f9WrFdYTA6uv+LHRNczL
Z2muNth0V0NsylAlXNWSPJIVHH9IOM7XsxFECuALVw10XNs2mhcAX2d1EF8grKal
N5y+BVzRi0EXxuDmAuqS
=1tKy
-----END PGP SIGNATURE-----

>From f05b901e50e764006b24a7226ec882dd363fdfb9 Mon Sep 17 00:00:00 2001
From: Ben Howard <ben.howard@canonical.com>
Date: Thu, 29 Sep 2011 15:49:08 +0000
Subject: [PATCH 1/5] Added Ubuntu Cloud package lists

---
 package-lists/ubuntu-cloud         |   11 +++++++++++
 package-lists/ubuntu-cloud-desktop |   11 +++++++++++
 2 files changed, 22 insertions(+), 0 deletions(-)
 create mode 100644 package-lists/ubuntu-cloud
 create mode 100644 package-lists/ubuntu-cloud-desktop

diff --git a/package-lists/ubuntu-cloud b/package-lists/ubuntu-cloud
new file mode 100644
index 0000000..aec9a44
--- /dev/null
+++ b/package-lists/ubuntu-cloud
@@ -0,0 +1,11 @@
+locales
+ubuntu-minimal
+eject 
+file 
+sudo
+gnupg
+landscape-client
+cloud-utils
+standard^ 
+server^
+cloud-image^
diff --git a/package-lists/ubuntu-cloud-desktop b/package-lists/ubuntu-cloud-desktop
new file mode 100644
index 0000000..967d914
--- /dev/null
+++ b/package-lists/ubuntu-cloud-desktop
@@ -0,0 +1,11 @@
+locales
+ubuntu-minimal
+eject 
+file 
+sudo
+gnupg
+landscape-client
+cloud-utils
+standard^ 
+ubuntu-destkop^
+cloud-image^
-- 
1.7.5.4

>From 553aa2355df161b91e380338659c3ad3824822c3 Mon Sep 17 00:00:00 2001
From: Ben Howard <ben.howard@canonical.com>
Date: Thu, 29 Sep 2011 15:50:19 +0000
Subject: [PATCH 2/5] Fixed rootfs chroot and added fs label support

---
 functions/defaults.sh          |    3 +++
 scripts/build/lb_binary_rootfs |   28 ++++++++++++++++++++++++++--
 scripts/build/lb_config        |   14 ++++++++++++--
 3 files changed, 41 insertions(+), 4 deletions(-)

diff --git a/functions/defaults.sh b/functions/defaults.sh
index 53c7af9..685451b 100755
--- a/functions/defaults.sh
+++ b/functions/defaults.sh
@@ -1246,4 +1246,7 @@ Check_defaults ()
 		fi
 	fi
 
+	# Label default for rootfs
+	LB_ROOTFS_FILESYSTEM_LABEL="${LB_ROOTFS_FILESYSTEM_LABEL:-rootfs}"
+
 }
diff --git a/scripts/build/lb_binary_rootfs b/scripts/build/lb_binary_rootfs
index 692a28d..c94d84c 100755
--- a/scripts/build/lb_binary_rootfs
+++ b/scripts/build/lb_binary_rootfs
@@ -62,6 +62,19 @@ case "${LB_INITRAMFS}" in
 		;;
 esac
 
+write_fstab()
+{
+#Write a rudimentary fstab
+	Echo_message "Writing fstab to ${1}/etc/fstab"
+cat << EOF > "${1}/etc/fstab"
+# Generated by live-build
+# <file system>                                 <mount point>   <type>  <options>       <dump>  <pass>
+proc                                            /proc           proc    nodev,noexec,nosuid 0       0
+LABEL=${LB_ROOTFS_FILESYSTEM_LABEL}              /               ${LB_CHROOT_FILESYSTEM}    defaults        0       0
+EOF
+}
+
+
 # Creating directory
 mkdir -p binary/${INITFS}
 
@@ -122,10 +135,19 @@ case "${LB_CHROOT_FILESYSTEM}" in
 		case "${LB_BUILD_WITH_CHROOT}" in
 			true)
 				dd if=/dev/zero of=chroot/filesystem.${LB_CHROOT_FILESYSTEM} bs=1024k count=0 seek=${REAL_DIM}
-				Chroot chroot "mkfs.${LB_CHROOT_FILESYSTEM} -F -b 1024 -N ${REAL_INODES} -m 0 filesystem.${LB_CHROOT_FILESYSTEM}"
+
+				if ! Chroot chroot "test -s /etc/mtab"
+				then
+					Chroot chroot "rm -f /etc/mtab"
+					Chroot chroot "ln -s /proc/mounts /etc/mtab"
+				fi
+
+				Chroot chroot "mkfs.${LB_CHROOT_FILESYSTEM} -FF -b 1024 -N ${REAL_INODES} -m 0 filesystem.${LB_CHROOT_FILESYSTEM} -L ${LB_ROOTFS_FILESYSTEM_LABEL}"
+				rm chroot/etc/mtab
 
 				mkdir -p filesystem.tmp
 				${LB_ROOT_COMMAND} mount -o loop chroot/filesystem.${LB_CHROOT_FILESYSTEM} filesystem.tmp
+				write_fstab chroot/chroot
 				cp -a chroot/chroot/* filesystem.tmp
 
 				${LB_ROOT_COMMAND} umount filesystem.tmp
@@ -176,6 +198,7 @@ case "${LB_CHROOT_FILESYSTEM}" in
 					lb chroot_apt install ${*}
 					lb chroot_archives binary remove ${*}
 
+					write_fstab chroot
 					touch .lock
 				else
 					rm -rf chroot/chroot
@@ -187,11 +210,12 @@ case "${LB_CHROOT_FILESYSTEM}" in
 
 			false)
 				dd if=/dev/zero of=binary/${INITFS}/filesystem.${LB_CHROOT_FILESYSTEM} bs=1024k count=0 seek=${REAL_DIM}
-				mkfs.${LB_CHROOT_FILESYSTEM} -F -b 1024 -N ${REAL_INODES} -m 0 binary/${INITFS}/filesystem.${LB_CHROOT_FILESYSTEM}
+				mkfs.${LB_CHROOT_FILESYSTEM} -F -b 1024 -N ${REAL_INODES} -m 0 binary/${INITFS}/filesystem.${LB_CHROOT_FILESYSTEM} -L ${LB_ROOTFS_FILESYSTEM_LABEL}
 
 				mkdir -p filesystem.tmp
 				${LB_ROOT_COMMAND} mount -o loop binary/${INITFS}/filesystem.${LB_CHROOT_FILESYSTEM} filesystem.tmp
 				cp -a chroot/* filesystem.tmp
+				write_fstab chroot
 
 				${LB_ROOT_COMMAND} umount filesystem.tmp
 				rmdir filesystem.tmp
diff --git a/scripts/build/lb_config b/scripts/build/lb_config
index f015fe8..aad474e 100755
--- a/scripts/build/lb_config
+++ b/scripts/build/lb_config
@@ -146,7 +146,8 @@ USAGE="${PROGRAM}   [--apt apt|aptitude]\n\
 \t    [--exposed-root true|false]\n\
 \t    [--username NAME]\n\
 \t    [--verbose]\n\
-\t    [--win32-loader true|false]"
+\t    [--win32-loader true|false]\n
+\t    [--rootfs-label LABEL]"
 
 Local_arguments ()
 {
@@ -169,7 +170,7 @@ Local_arguments ()
 		net-root-path:,net-root-server:,net-cow-filesystem:,net-cow-mountoptions:,net-cow-path:,
 		net-cow-server:,net-tarball:,swap-file-path:,swap-file-size:,syslinux-theme:,
 		username:,win32-loader:,source:,source-images:,breakpoints,conffile:,debug,force,
-		help,ignore-system-defaults,quiet,usage,verbose,version"
+		help,ignore-system-defaults,quiet,usage,verbose,version,rootfs-label:"
 	# Remove spaces added by indentation
 	LONG_OPTIONS="$(echo ${LONG_OPTIONS} | tr -d ' ')"
 	ARGUMENTS="$(getopt --longoptions ${LONG_OPTIONS} --name="${PROGRAM}" --options a:f:d:m:l:k:p:b:e:s:c:huv --shell sh -- "${@}")"
@@ -775,6 +776,11 @@ Local_arguments ()
 				shift 2
 				;;
 
+			--rootfs-label)
+				LB_ROOTFS_FILESYSTEM_LABEL="${2}"
+				shift 2
+				;;
+
 			# config/source
 			--source)
 				LB_SOURCE="${2}"
@@ -1393,6 +1399,10 @@ LB_SYSLINUX_THEME="${LB_SYSLINUX_THEME}"
 # \$LB_USERNAME: set username
 # (Default: ${LB_USERNAME})
 LB_USERNAME="${LB_USERNAME}"
+
+# \$LB_ROOTFS_FILESYSTEM_LABEL: set file system label
+# (Default: ${LB_ROOTFS_FILESYTEM_LABEL})
+LB_ROOTFS_FILESYSTEM_LABEL="${LB_ROOTFS_FILESYSTEM_LABEL}"
 EOF
 
 # Creating lb_source_* configuration
-- 
1.7.5.4

>From 015b418f4b2adc766d2f41ba2375a5e34b806dc7 Mon Sep 17 00:00:00 2001
From: Ben Howard <ben.howard@canonical.com>
Date: Thu, 29 Sep 2011 16:45:48 +0000
Subject: [PATCH 3/5] Added lb_binary_image to emit standalone rootfs images

---
 scripts/build/lb_binary       |    1 +
 scripts/build/lb_binary_image |   72 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 73 insertions(+), 0 deletions(-)
 create mode 100755 scripts/build/lb_binary_image

diff --git a/scripts/build/lb_binary b/scripts/build/lb_binary
index 27a0223..d6c9cfa 100755
--- a/scripts/build/lb_binary
+++ b/scripts/build/lb_binary
@@ -88,6 +88,7 @@ lb binary_net ${*}
 lb binary_tar ${*}
 lb binary_hdd ${*}
 lb binary_virtual-hdd ${*}
+lb binary_image ${*}
 
 if [ "${LB_BUILD_WITH_CHROOT}" = "true" ]
 then
diff --git a/scripts/build/lb_binary_image b/scripts/build/lb_binary_image
new file mode 100755
index 0000000..aa8a1c7
--- /dev/null
+++ b/scripts/build/lb_binary_image
@@ -0,0 +1,72 @@
+#!/bin/sh
+
+## live-build(7) - System Build Scripts
+## Copyright (C) 2006-2011 Daniel Baumann <daniel@debian.org>
+##
+## live-build comes with ABSOLUTELY NO WARRANTY; for details see COPYING.
+## This is free software, and you are welcome to redistribute it
+## under certain conditions; see COPYING for details.
+
+
+set -e
+
+# Including common functions
+. "${LB_BASE:-/usr/share/live/build}"/scripts/build.sh
+
+# Setting static variables
+DESCRIPTION="$(Echo 'build rootfs binary image')"
+HELP=""
+USAGE="${PROGRAM} [--force]"
+
+Arguments "${@}"
+
+# Reading configuration files
+Read_conffiles config/all config/common config/bootstrap config/chroot config/binary config/source
+Set_defaults
+
+if ! In_list image "${LB_BINARY_IMAGES}"
+then
+	exit 0
+fi
+
+if [  "${LB_CHROOT_FILESYSTEM}" = "plain" ]
+then
+	exit 0
+fi
+
+Echo_message "Copying out binary rootfs image"
+
+# Requiring stage file
+Require_stagefile .stage/config .stage/bootstrap
+
+# Checking stage file
+Check_stagefile .stage/binary_image
+
+# Checking lock file
+Check_lockfile .lock
+
+# Creating lock file
+Create_lockfile .lock
+
+case "${LB_INITRAMFS}" in
+        casper)
+                INITFS="casper"
+                ;;
+
+        live-boot)
+                INITFS="live"
+                ;;
+
+        *)
+                INITFS="boot"
+                ;;
+esac
+
+cp -a "binary/${INITFS}/filesystem.${LB_CHROOT_FILESYSTEM}" "${LB_ROOTFS_FILESYSTEM_LABEL}.${LB_CHROOT_FILESYSTEM}"
+cp -a "binary.packages" "${LB_ROOTFS_FILESYSTEM_LABEL}.packages"
+rm -rf binary*
+
+Echo_message "rootfs image named ${LB_ROOTFS_FILESYSTEM_LABEL}.${LB_CHROOT_FILESYSTEM}"
+
+# Creating stage file
+Create_stagefile .stage/binary_image
-- 
1.7.5.4

>From 6d95297840fb51457d9aa4b2d3eda360c79536e9 Mon Sep 17 00:00:00 2001
From: Ben Howard <ben.howard@canonical.com>
Date: Thu, 29 Sep 2011 16:46:23 +0000
Subject: [PATCH 4/5] Enablement for foreign bootstrap via qemu-static

---
 functions/architectures.sh             |   36 ++++++++++++++++++++++++++
 functions/defaults.sh                  |   10 +++++++
 scripts/build/lb_bootstrap_debootstrap |   39 +++++++++++++++++++---------
 scripts/build/lb_config                |   44 +++++++++++++++++++++++++++++--
 4 files changed, 113 insertions(+), 16 deletions(-)

diff --git a/functions/architectures.sh b/functions/architectures.sh
index 53d925b..7c0b769 100755
--- a/functions/architectures.sh
+++ b/functions/architectures.sh
@@ -22,6 +22,24 @@ Check_architectures ()
 		fi
 	done
 
+	if [ "${ARCHITECTURES}" = "${LB_PORTS_ARCHITECTURES}" ]
+	then
+		VALID="true"
+
+		if [ ! -e "${LB_PORTS_QEMU_STATIC}" ]
+		then
+			Echo_warning "skipping %s, qemu-static binary ${LB_PORTS_ARCHITECTURES} was not found"
+			VALID="false"
+		fi
+
+		if [ ! -x "${LB_PORTS_QEMU_STATIC}" ]
+		then
+			Echo_warning "skipping %s, qemu-static binary ${LB_PORTS_QEMU_STATIC} is not executable"
+			VALID="false"
+		fi
+
+	fi
+
 	if [ "${VALID}" = "false" ]
 	then
 		Echo_warning "skipping %s, foreign architecture(s)." "${0}"
@@ -52,6 +70,24 @@ Check_crossarchitectures ()
 			;;
 	esac
 
+	if [ "${LB_ARCHITECTURES}" = "${LB_PORTS_ARCHITECTURES}" ]
+	then
+
+		if [ ! -e "${LB_PORTS_QEMU_STATIC}" ]
+		then
+			Echo_warning "skipping %s, qemu-static binary ${LB_PORTS_ARCHITECTURES} was not found"
+			exit 0
+		fi
+
+		if [ ! -x "${LB_PORTS_QEMU_STATIC}" ]
+		then
+			Echo_warning "skipping %s, qemu-static binary ${LB_PORTS_QEMU_STATIC} is not executable"
+			exit 0
+		fi
+		return 
+	fi
+
+
 	Check_architectures "${CROSS}"
 }
 
diff --git a/functions/defaults.sh b/functions/defaults.sh
index 685451b..2311d38 100755
--- a/functions/defaults.sh
+++ b/functions/defaults.sh
@@ -1249,4 +1249,14 @@ Check_defaults ()
 	# Label default for rootfs
 	LB_ROOTFS_FILESYSTEM_LABEL="${LB_ROOTFS_FILESYSTEM_LABEL:-rootfs}"
 
+	# Architectures to use foriegn bootstrap for
+	LB_PORTS_ARCHITECTURES="${LB_PORTS_ARCHITECTURES:-}"
+
+	# Packages to exclude for the foriegn/ports bootstrapping
+	LB_PORTS_BOOTSTRAP_EXCLUDE="${LB_PORTS_BOOTSTRAP_EXCLUDE:-}"
+
+	# Ports using foriegn bootstrap need a working qemu-*-system. This is the location it
+	LB_PORTS_QEMU_STATIC="${LB_PORTS_QEMU_STATIC:-}"
+
+
 }
diff --git a/scripts/build/lb_bootstrap_debootstrap b/scripts/build/lb_bootstrap_debootstrap
index 1b5f5fe..e6d7a97 100755
--- a/scripts/build/lb_bootstrap_debootstrap
+++ b/scripts/build/lb_bootstrap_debootstrap
@@ -21,7 +21,7 @@ USAGE="${PROGRAM} [--force]"
 Arguments "${@}"
 
 # Reading configuration files
-Read_conffiles config/all config/common config/bootstrap config/chroot config/binary config/source
+Read_conffiles config/all config/common config/bootstrap config/chroot config/image config/source config/ports
 Set_defaults
 
 if [ "${LB_BOOTSTRAP}" != "debootstrap" ]
@@ -120,24 +120,37 @@ then
 			cp cache/packages_bootstrap/*.deb chroot/var/cache/apt/archives
 		fi
 
-		Echo_breakage "Running debootstrap (download-only)... "
-		${LB_ROOT_COMMAND} debootstrap ${DEBOOTSTRAP_OPTIONS} --download-only "${LB_PARENT_DISTRIBUTION}" chroot "${LB_PARENT_MIRROR_BOOTSTRAP}"
+        if [ "${LB_PORTS_ARCHITECTURES}" != "${LB_ARCHITECTURES}" ]; then
+    		Echo_breakage "Running debootstrap (download-only)... "
+           ${LB_ROOT_COMMAND} debootstrap ${DEBOOTSTRAP_OPTIONS} --download-only "${LB_PARENT_DISTRIBUTION}" chroot "${LB_PARENT_MIRROR_BOOTSTRAP}"
 
-		if [ -n "${LB_ROOT_COMMAND}" ]
-		then
-			${LB_ROOT_COMMAND} chown -R $(whoami):$(whoami) chroot
-		fi
+    		if [ -n "${LB_ROOT_COMMAND}" ]
+	    	then
+		    	${LB_ROOT_COMMAND} chown -R $(whoami):$(whoami) chroot
+    		fi
 
-		# Removing old cache
-		rm -f cache/packages_bootstrap/*.deb
+    		# Removing old cache
+	    	rm -f cache/packages_bootstrap/*.deb
 
-		# Saving new cache
-		mkdir -p cache/packages_bootstrap
-		cp chroot/var/cache/apt/archives/*.deb cache/packages_bootstrap
+		    # Saving new cache
+    		mkdir -p cache/packages_bootstrap
+	    	cp chroot/var/cache/apt/archives/*.deb cache/packages_bootstrap
+        fi
 	fi
 
 	Echo_breakage "Running debootstrap... "
-	${LB_ROOT_COMMAND} debootstrap ${DEBOOTSTRAP_OPTIONS} "${LB_PARENT_DISTRIBUTION}" chroot "${LB_PARENT_MIRROR_BOOTSTRAP}"
+
+    # Run appropriate bootstrap, i.e. foriegn or regular bootstrap
+    if [ "${LB_PORTS_ARCHITECTURES}" = "${LB_ARCHITECTURES}" ]; then
+        Echo_message "Bootstrap will be foreign"
+        ${LB_ROOT_COMMAND} debootstrap ${DEBOOTSTRAP_OPTIONS} --foreign "${LB_PARENT_DISTRIBUTION}" chroot "${LB_PARENT_MIRROR_BOOTSTRAP}"
+
+        Echo_message "Running debootstrap second stage under QEMU"
+        cp ${LB_PORTS_QEMU_STATIC} chroot/usr/bin
+        Chroot chroot /debootstrap/debootstrap --second-stage
+    else
+        ${LB_ROOT_COMMAND} debootstrap ${DEBOOTSTRAP_OPTIONS} "${LB_PARENT_DISTRIBUTION}" chroot "${LB_PARENT_MIRROR_BOOTSTRAP}"
+    fi
 
 	if [ -n "${LB_ROOT_COMMAND}" ]
 	then
diff --git a/scripts/build/lb_config b/scripts/build/lb_config
index aad474e..2e8a589 100755
--- a/scripts/build/lb_config
+++ b/scripts/build/lb_config
@@ -147,7 +147,11 @@ USAGE="${PROGRAM}   [--apt apt|aptitude]\n\
 \t    [--username NAME]\n\
 \t    [--verbose]\n\
 \t    [--win32-loader true|false]\n
-\t    [--rootfs-label LABEL]"
+\t    [--rootfs-label LABEL]\n
+\t    [--ports-exclude PACKAGES]\n
+\t    [--ports-qemu-static PATH]\n
+\t    [--ports-arch ARCH]"
+
 
 Local_arguments ()
 {
@@ -170,7 +174,7 @@ Local_arguments ()
 		net-root-path:,net-root-server:,net-cow-filesystem:,net-cow-mountoptions:,net-cow-path:,
 		net-cow-server:,net-tarball:,swap-file-path:,swap-file-size:,syslinux-theme:,
 		username:,win32-loader:,source:,source-images:,breakpoints,conffile:,debug,force,
-		help,ignore-system-defaults,quiet,usage,verbose,version,rootfs-label:"
+		help,ignore-system-defaults,quiet,usage,verbose,version,rootfs-label:,ports-qemu-static:,ports-arch:,ports-exclude:"
 	# Remove spaces added by indentation
 	LONG_OPTIONS="$(echo ${LONG_OPTIONS} | tr -d ' ')"
 	ARGUMENTS="$(getopt --longoptions ${LONG_OPTIONS} --name="${PROGRAM}" --options a:f:d:m:l:k:p:b:e:s:c:huv --shell sh -- "${@}")"
@@ -781,6 +785,21 @@ Local_arguments ()
 				shift 2
 				;;
 
+			--ports-arch)
+				LB_PORTS_ARCHITECTURES="${2}"
+				shift 2
+				;;
+
+			--ports-exclude)
+				LB_PORTS_BOOTSTRAP_EXCLUDE="${2}"
+				shift 2
+				;;
+
+			--ports-qemu-static)
+				LB_PORTS_QEMU_STATIC="${2}"
+				shift 2
+				;;
+
 			# config/source
 			--source)
 				LB_SOURCE="${2}"
@@ -869,7 +888,7 @@ then
 fi
 
 # Reading existing configuration
-Read_conffiles config/all config/common config/bootstrap config/chroot config/binary config/source
+Read_conffiles config/all config/common config/bootstrap config/chroot config/binary config/source config/ports
 
 Local_arguments "${@}"
 
@@ -1418,6 +1437,25 @@ LB_SOURCE="${LB_SOURCE}"
 LB_SOURCE_IMAGES="${LB_SOURCE_IMAGES}"
 EOF
 
+
+# Create qemu foriegn bootstrap configuration
+cat > config/ports << EOF
+# \$LB_PORTS_ARCHITECTURES: architectures to build through foriegn bootstraping
+#       most users will also want to set LB_PORTS_QEMU_STATIC as well
+# (Default: ${LB_PORTS_ARCHITECTURES})
+LB_PORTS_ARCHITECTURES="${LB_PORTS_ARCHITECTURES}"
+
+# \$LB_PORTS_BOOTSTRAP_EXCLUDE: which packages to exclude from bootstrapping
+# (Default: ${LB_PORTS_BOOTSTRAP_EXCLUDE})
+LB_PORTS_BOOTSTRAP_EXCLUDE="${LB_PORTS_BOOTSTRAP_EXCLUDE}"
+
+# \$LB_PORTS_QEMU_STATIC: location of qemu-*-static for foriegn bootstrapping
+#       if left blank, automatic detection will be attempted
+# (Default: ${LB_PORTS_QEMU_STATIC})
+LB_PORTS_QEMU_STATIC="${LB_PORTS_QEMU_STATIC}" 
+EOF
+
+
 mkdir -p auto/functions
 mkdir -p auto/scripts
 
-- 
1.7.5.4

>From 49f703d53a96d720d9fb51be69a7d11649d43643 Mon Sep 17 00:00:00 2001
From: Ben Howard <ben.howard@canonical.com>
Date: Thu, 29 Sep 2011 13:04:17 -0600
Subject: [PATCH 5/5] Set default armel linux flavour for Ubuntu

---
 functions/defaults.sh |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/functions/defaults.sh b/functions/defaults.sh
index 2311d38..0c1cb8c 100755
--- a/functions/defaults.sh
+++ b/functions/defaults.sh
@@ -639,9 +639,16 @@ Set_defaults ()
 	# Setting linux flavour string
 	case "${LB_ARCHITECTURES}" in
 		armel)
-			# armel will have special images: one rootfs image and many additional kernel images.
-			# therefore we default to all available armel flavours
-			LB_LINUX_FLAVOURS="${LB_LINUX_FLAVOURS:-iop32x ixp4xx kirkwood orion5x versatile}"
+			case "${LB_MODE}" in
+                                ubuntu|kubuntu)
+					LB_LINUX_FLAVOURS="${LB_LINUX_FLAVOURS:-omap}"
+					;;
+				*)
+					# armel will have special images: one rootfs image and many additional kernel images.
+					# therefore we default to all available armel flavours
+					LB_LINUX_FLAVOURS="${LB_LINUX_FLAVOURS:-iop32x ixp4xx kirkwood orion5x versatile}"
+					;;
+			esac
 			;;
 
 		amd64)
-- 
1.7.5.4


Reply to: