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

Bug#626940: live-build: support installing tasks using apt-get



Package: live-build
Version: 3.0~a16-1
Severity: wishlist
Tags: patch
User: ubuntu-devel@lists.ubuntu.com
Usertags: origin-ubuntu ubuntu-patch oneiric

apt-get has had the ability to install tasks itself for a few years now.
We use this in Ubuntu since it means we only need aptitude or tasksel if
we need more interactivity; for simply installing packages that contain
a given entry in their Task field, apt-get is more lightweight.  The
attached patch adds support for this to live-build, and makes it the
default for Ubuntu.

Thanks,

-- 
Colin Watson                                       [cjwatson@ubuntu.com]
>From 04a63bfd70861dc6399a93a6b2f5c9c72729561c Mon Sep 17 00:00:00 2001
From: Colin Watson <cjwatson@canonical.com>
Date: Mon, 16 May 2011 15:03:56 +0100
Subject: [PATCH] Allow installing tasks using apt-get, and do so by default for Ubuntu.

---
 functions/defaults.sh         |   10 +++++++++-
 manpages/en/lb_config.1       |    4 ++--
 scripts/build/lb_chroot_tasks |   13 +++++++++++++
 scripts/build/lb_config       |    2 +-
 4 files changed, 25 insertions(+), 4 deletions(-)

diff --git a/functions/defaults.sh b/functions/defaults.sh
index 4c0518a..cbdf1af 100755
--- a/functions/defaults.sh
+++ b/functions/defaults.sh
@@ -214,7 +214,15 @@ Set_defaults ()
 	fi
 
 	# Setting tasksel
-	LB_TASKSEL="${LB_TASKSEL:-tasksel}"
+	case "${LB_MODE}" in
+		ubuntu)
+			LB_TASKSEL="${LB_TASKSEL:-apt}"
+			;;
+
+		*)
+			LB_TASKSEL="${LB_TASKSEL:-tasksel}"
+			;;
+	esac
 
 	# Setting root directory
 	case "${LB_MODE}" in
diff --git a/manpages/en/lb_config.1 b/manpages/en/lb_config.1
index 8e82782..07d7ab6 100644
--- a/manpages/en/lb_config.1
+++ b/manpages/en/lb_config.1
@@ -223,7 +223,7 @@
 .br
 	[\fB\-\-syslinux\-menu\fR true|false]
 .br
-	[\fB\-\-tasksel\fR aptitude|tasksel]
+	[\fB\-\-tasksel\fR apt|aptitude|tasksel]
 .br
 	[\fB\-\-tasks\fR \fITASK\fR|"\fITASKS\fR"]
 .br
@@ -476,7 +476,7 @@ defines the file of the syslinux splash graphic that should be used instead of t
 defines the timeout the syslinux bootloader should wait for input from the user at the bootprompt prior booting the default kernel. This defaults to 0 which means it will wait forever.
 .IP "\fB\-\-syslinux\-menu\fR true|false" 4
 defines if syslinux should be make use of the vgamenu capabilities or not.
-.IP "\fB\-\-tasksel\fR aptitude|tasksel" 4
+.IP "\fB\-\-tasksel\fR apt|aptitude|tasksel" 4
 selects which program is used to install tasks. By default, this is set to tasksel.
 .IP "\fB\-\-tasks\fR \fITASK\fR|""\fITASKS\fR""" 4
 defines one or more package tasks to be installed in the live system. This is a quick and convenient way to get a reasonable default selection of packages suitable for most users when building an image, but it results in quite big images. If you want to have finer grained package selections,  local package lists should be used instead.
diff --git a/scripts/build/lb_chroot_tasks b/scripts/build/lb_chroot_tasks
index 72db9f6..477d755 100755
--- a/scripts/build/lb_chroot_tasks
+++ b/scripts/build/lb_chroot_tasks
@@ -45,6 +45,10 @@ then
 
 	# Checking depends
 	case "${LB_TASKSEL}" in
+		apt)
+			Check_package chroot/usr/bin/apt-get apt
+			;;
+
 		aptitude)
 			Check_package chroot/usr/bin/aptitude aptitude
 			;;
@@ -59,6 +63,15 @@ then
 
 	# Installing tasks
 	case "${LB_TASKSEL}" in
+		apt)
+			APT_TASKS=
+			for TASK in ${LB_TASKS}
+			do
+				APT_TASKS="${APT_TASKS:+$APT_TASKS }$TASK^"
+			done
+			Chroot chroot "apt-get ${APT_OPTIONS} install ${APT_TASKS}"
+			;;
+
 		aptitude)
 			Chroot chroot "aptitude ${APTITUDE_OPTIONS} install ${LB_TASKS}"
 			;;
diff --git a/scripts/build/lb_config b/scripts/build/lb_config
index c3ae0eb..0e36240 100755
--- a/scripts/build/lb_config
+++ b/scripts/build/lb_config
@@ -135,7 +135,7 @@ USAGE="${PROGRAM}   [--apt apt|aptitude]\n\
 \t    [--source true|false]\n\
 \t    [-s|--source-images iso|net|tar|usb-hdd]\n\
 \t    [--syslinux-theme THEME_SUFFIX]\n\
-\t    [--tasksel aptitude|tasksel]\n\
+\t    [--tasksel apt|aptitude|tasksel]\n\
 \t    [--tasks TASK|\"TASKS\"]\n\
 \t    [--templates PATH]\n\
 \t    [--virtual-root-size MB]\n\
-- 
1.7.4.1


Reply to: