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_local-preseed ${*}
lh_chroot_tasks ${*} lh_chroot_tasks ${*}
lh_chroot_packageslists ${*} lh_chroot_packageslists ${*}
lh_chroot_packages ${*}
lh_chroot_local-packageslists ${*} lh_chroot_local-packageslists ${*}
lh_chroot_local-packages ${*} lh_chroot_local-packages ${*}
lh_chroot_packages ${*}
lh_chroot_install-packages ${*}
lh_chroot_localization ${*} lh_chroot_localization ${*}
lh_chroot_local-includes ${*} lh_chroot_local-includes ${*}
lh_chroot_sysvinit ${*} 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 case "${1}" in
install) install)
# Restoring cache
Restore_cache cache/packages_linux-image
Echo_message "Configuring file /etc/kernel-img.conf" Echo_message "Configuring file /etc/kernel-img.conf"
# Checking stage file # Checking stage file
@ -72,16 +69,13 @@ EOF
do do
for PACKAGE in ${LH_LINUX_PACKAGES} for PACKAGE in ${LH_LINUX_PACKAGES}
do do
PACKAGES="${PACKAGES} ${PACKAGE}-${FLAVOUR}" echo ${PACKAGE}-${FLAVOUR} >> chroot/root/chroot_packages
done done
done done
fi fi
# Installing linux-image, modules and ${LH_INITRAMFS} # Queue installation of linux-image and ${LH_INITRAMFS}
Apt install ${PACKAGES} ${LH_INITRAMFS} echo ${LH_INITRAMFS} >> chroot/root/chroot_packages
# Saving cache
Save_cache cache/packages_linux-image
# Creating stage file # Creating stage file
Create_stagefile .stage/chroot_linux-image Create_stagefile .stage/chroot_linux-image

View File

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

View File

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

View File

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

View File

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