Install most chroot packages in one ${LH_APT} call (Closes: #475739)

This patch installs (almost) all chroot packages by queueing the package
names into a single file and then installing that. It depends on my
previous patch to install local packages by using an APT mirror.

This speeds up image build causes even greater speedups once more packages
adopt triggers.

(Packages installed by debconf preseeding are not touched, nor are packages
installed by tasks.)

Signed-off-by: Chris Lamb <chris@chris-lamb.co.uk>
This commit is contained in:
Chris Lamb 2008-04-17 04:13:49 +01:00 committed by Daniel Baumann
parent 1086ec4784
commit 478331c4e1
7 changed files with 101 additions and 79 deletions

View File

@ -48,9 +48,10 @@ lh_chroot_preseed ${*}
lh_chroot_local-preseed ${*}
lh_chroot_tasks ${*}
lh_chroot_packageslists ${*}
lh_chroot_packages ${*}
lh_chroot_local-packageslists ${*}
lh_chroot_local-packages ${*}
lh_chroot_packages ${*}
lh_chroot_install-packages ${*}
lh_chroot_localization ${*}
lh_chroot_local-includes ${*}
lh_chroot_sysvinit ${*}

View File

@ -0,0 +1,68 @@
#!/bin/sh
# lh_chroot_install-packages(1) - install queued packages into chroot
# Copyright (C) 2006-2008 Daniel Baumann <daniel@debian.org>
#
# live-helper 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
LH_BASE="${LH_BASE:-/usr/share/live-helper}"
for FUNCTION in "${LH_BASE}"/functions/*.sh
do
. "${FUNCTION}"
done
# Setting static variables
DESCRIPTION="install queued packages into chroot"
HELP=""
USAGE="${PROGRAM} [--force]"
Arguments "${@}"
# Reading configuration files
Read_conffile config/all config/common config/bootstrap config/chroot config/binary config/source
Set_defaults
Echo_message "Begin installing packages..."
# Requiring stage file
Require_stagefile .stage/bootstrap
# Checking stage file
Check_stagefile .stage/chroot_install-packages
# Checking lock file
Check_lockfile .lock
# Creating lock file
Create_lockfile .lock
if [ -e chroot/root/chroot_packages ] && [ -s chroot/root/chroot_packages ]
then
# Restoring cache
Restore_cache cache/packages_packages
# Installing packages
case "${LH_APT}" in
apt|apt-get)
Chroot "xargs --arg-file=/root/chroot_packages apt-get ${APT_OPTIONS} install"
;;
aptitude)
Chroot "xargs --arg-file=/root/chroot_packages aptitude ${APTITUDE_OPTIONS} install"
;;
esac
rm -f chroot/root/chroot_packages
# Saving cache
Save_cache cache/packages_packages
# Creating stage file
Create_stagefile .stage/chroot_install-packages
fi

View File

@ -33,9 +33,6 @@ Require_stagefile .stage/bootstrap
case "${1}" in
install)
# Restoring cache
Restore_cache cache/packages_linux-image
Echo_message "Configuring file /etc/kernel-img.conf"
# Checking stage file
@ -72,16 +69,13 @@ EOF
do
for PACKAGE in ${LH_LINUX_PACKAGES}
do
PACKAGES="${PACKAGES} ${PACKAGE}-${FLAVOUR}"
echo ${PACKAGE}-${FLAVOUR} >> chroot/root/chroot_packages
done
done
fi
# Installing linux-image, modules and ${LH_INITRAMFS}
Apt install ${PACKAGES} ${LH_INITRAMFS}
# Saving cache
Save_cache cache/packages_linux-image
# Queue installation of linux-image and ${LH_INITRAMFS}
echo ${LH_INITRAMFS} >> chroot/root/chroot_packages
# Creating stage file
Create_stagefile .stage/chroot_linux-image

View File

@ -1,6 +1,6 @@
#!/bin/sh
# lh_chroot_local-packages(1) - install local packages into chroot
# lh_chroot_local-packages(1) - queue install of local packages into chroot
# Copyright (C) 2006-2008 Daniel Baumann <daniel@debian.org>
#
# live-helper comes with ABSOLUTELY NO WARRANTY; for details see COPYING.
@ -18,7 +18,7 @@ do
done
# Setting static variables
DESCRIPTION="install local packages into chroot"
DESCRIPTION="queue install of local packages into chroot"
HELP=""
USAGE="${PROGRAM} [--force]"
@ -28,7 +28,7 @@ Arguments "${@}"
Read_conffile config/all config/common config/bootstrap config/chroot config/binary config/source
Set_defaults
Echo_message "Begin installing local packages..."
Echo_message "Begin queueing installation of local packages..."
# Requiring stage file
Require_stagefile .stage/bootstrap
@ -44,13 +44,8 @@ Create_lockfile .lock
if ls chroot/root/local-packages/*.deb > /dev/null 2>&1
then
# Restoring cache
Restore_cache cache/packages_local-packages
Apt install $(gunzip < chroot/root/local-packages/Packages.gz | awk '/^Package: / { print $2 }')
# Saving cache
Save_cache cache/packages_local-packages
gunzip < chroot/root/local-packages/Packages.gz | awk '/^Package: / { print $2 }' \
>> chroot/root/chroot_packages
# Creating stage file
Create_stagefile .stage/chroot_local-packages

View File

@ -1,6 +1,6 @@
#!/bin/sh
# lh_chroot_local-packageslists(1) - install local packages lists into chroot
# lh_chroot_local-packageslists(1) - queue install of local packages lists into chroot
# Copyright (C) 2006-2008 Daniel Baumann <daniel@debian.org>
#
# live-helper comes with ABSOLUTELY NO WARRANTY; for details see COPYING.
@ -18,7 +18,7 @@ do
done
# Setting static variables
DESCRIPTION="install local packages into chroot"
DESCRIPTION="queue install of local packages lists into chroot"
HELP=""
USAGE="${PROGRAM} [--force]"
@ -28,7 +28,7 @@ Arguments "${@}"
Read_conffile config/all config/common config/bootstrap config/chroot config/binary config/source
Set_defaults
Echo_message "Begin installing local packages lists..."
Echo_message "Begin queueing installation of local packages lists..."
# Requiring stage file
Require_stagefile .stage/bootstrap
@ -44,32 +44,16 @@ Create_lockfile .lock
if ls config/chroot_local-packageslists/* > /dev/null 2>&1
then
# Restoring cache
Restore_cache cache/packages_local-packageslists
for PACKAGESLIST in config/chroot_local-packageslists/*
for PACKAGES_LIST in config/chroot_local-packageslists/*
do
# Generate package list
Expand_packagelist "$(basename ${PACKAGESLIST})" "config/chroot_local-packageslists" "${LH_BASE:-/usr/share/live-helper/lists}/lists" > chroot/root/"$(basename ${PACKAGESLIST})"
# Installing package list
case "${LH_APT}" in
apt|apt-get)
Chroot "xargs --arg-file=/root/$(basename ${PACKAGESLIST}) apt-get ${APT_OPTIONS} install"
;;
aptitude)
Chroot "xargs --arg-file=/root/$(basename ${PACKAGESLIST}) aptitude ${APTITUDE_OPTIONS} install"
;;
esac
# Removing package list
rm -f chroot/root/"$(basename ${PACKAGESLIST})"
Expand_packagelist \
"$(basename ${PACKAGES_LIST})" \
"config/chroot_local-packageslists" \
"${LH_BASE:-/usr/share/live-helper/lists}/lists" \
>> chroot/root/chroot_packages
done
# Saving cache
Save_cache cache/packages_local-packageslists
# Creating stage file
Create_stagefile .stage/chroot_local-packageslists
fi

View File

@ -1,6 +1,6 @@
#!/bin/sh
# lh_chroot_packages(1) - install packages into chroot
# lh_chroot_packages(1) - queue install of packages into chroot
# Copyright (C) 2006-2008 Daniel Baumann <daniel@debian.org>
#
# live-helper comes with ABSOLUTELY NO WARRANTY; for details see COPYING.
@ -18,7 +18,7 @@ do
done
# Setting static variables
DESCRIPTION="install packages into chroot"
DESCRIPTION="queue install of packages into chroot"
HELP=""
USAGE="${PROGRAM} [--force]"
@ -28,7 +28,7 @@ Arguments "${@}"
Read_conffile config/all config/common config/bootstrap config/chroot config/binary config/source
Set_defaults
Echo_message "Begin installing packages..."
Echo_message "Begin queueing installation of packages..."
# Requiring stage file
Require_stagefile .stage/bootstrap
@ -44,14 +44,7 @@ Create_lockfile .lock
if [ -n "${LH_PACKAGES}" ] && [ "${LH_PACKAGES}" != "none" ]
then
# Restoring cache
Restore_cache cache/packages_packages
# Installing packages
Apt install ${LH_PACKAGES}
# Saving cache
Save_cache cache/packages_packages
echo ${LH_PACKAGES} >> chroot/root/chroot_packages
# Creating stage file
Create_stagefile .stage/chroot_packages

View File

@ -1,6 +1,6 @@
#!/bin/sh
# lh_chroot_packageslists(1) - install packages lists into chroot
# lh_chroot_packageslists(1) - queue install of packages lists into chroot
# Copyright (C) 2006-2008 Daniel Baumann <daniel@debian.org>
#
# live-helper comes with ABSOLUTELY NO WARRANTY; for details see COPYING.
@ -18,7 +18,7 @@ do
done
# Setting static variables
DESCRIPTION="install packages lists into chroot"
DESCRIPTION="queue install of packages lists into chroot"
HELP=""
USAGE="${PROGRAM} [--force]"
@ -28,7 +28,7 @@ Arguments "${@}"
Read_conffile config/all config/common config/bootstrap config/chroot config/binary config/source
Set_defaults
Echo_message "Begin installing packages lists..."
Echo_message "Begin queueing installation of packages lists..."
# Requiring stage file
Require_stagefile .stage/bootstrap
@ -44,35 +44,22 @@ Create_lockfile .lock
if [ -n "${LH_PACKAGES_LISTS}" ] && [ "${LH_PACKAGES_LISTS}" != "none" ]
then
# Restoring cache
Restore_cache cache/packages_packageslists
for LIST in ${LH_PACKAGES_LISTS}
do
if [ -f ${LH_BASE:-/usr/share/live-helper}/lists/"${LIST}" ]
then
# Generating package list
Expand_packagelist "${LIST}" "config/chroot_local-packageslists" "${LH_BASE:-/usr/share/live-helper}/lists" > chroot/root/${LIST}
# Installing package list
case "${LH_APT}" in
apt|apt-get)
Chroot "xargs --arg-file=/root/${LIST} apt-get ${APT_OPTIONS} install"
;;
aptitude)
Chroot "xargs --arg-file=/root/${LIST} aptitude ${APTITUDE_OPTIONS} install"
;;
esac
# Removing package list
rm -f chroot/root/"${LIST}"
Expand_packagelist \
"${LIST}" \
"config/chroot_local-packageslists" \
"${LH_BASE:-/usr/share/live-helper}/lists" \
>> chroot/root/chroot_packages
else
Echo_warning "skipping installation of unknown packages list '${LIST}'."
fi
done
# Saving cache
Save_cache cache/packages_packageslists
# Creating stage file
Create_stagefile .stage/chroot_packageslists
fi