Hello,

 Please accept this patch which updates the binary_local-packageslists
helper to not download and install packages into the on-disk archive if
they're already installed in the chroot (aka livefs). This is accomplished
by using a copy of chroot/var/lib/dpkg/status instead of temporarily using a
new, blank chroot/var/lib/dpkg/status.

 The rationale for this change is that specifying a single package to be
installed into the on-disk archive can result in hundreds of megabytes of
packages being downloaded and put in the image. This is because
binary_local-packageslists uses apt to fetch the packages and since
currently a blank chroot/var/lib/dpkg/status is used, apt will download all
sorts of packages to meet package dependencies. With the common use case for
including packages in the on-disk archive being able to install packages
after installation or during a live session without having to access a
remote debian archive, including tons of packages that won't even get
touched is a huge waste of time and dramatically inflates the size of the
image.

 Thus, the main benefits of this change is that images taking advantage of
this feature will be substantially smaller and won't take as long to build.

Cheers,

-- 
Cody A.W. Somerville
Release Engineer
Foundations Team
Custom Engineering Solutions Group
Canonical OEM Services
Phone: +1 781 850 2087
Cell: +1 613 401 5141
Fax: +1 613 687 7368
Email: cody.somervi...@canonical.com
=== modified file 'helpers/binary_local-packageslists'
--- helpers/binary_local-packageslists	2010-03-04 12:43:09 +0000
+++ helpers/binary_local-packageslists	2010-05-20 02:56:51 +0000
@@ -49,8 +49,7 @@
 	Install_package
 
 	mkdir -p chroot/binary.deb/archives/partial
-	mv chroot/var/lib/dpkg/status chroot/var/lib/dpkg/status.tmp
-	touch chroot/var/lib/dpkg/status
+	cp chroot/var/lib/dpkg/status chroot/var/lib/dpkg/status.real
 
 	for PACKAGESLIST in config/binary_local-packageslists/*
 	do
@@ -97,7 +96,7 @@
 	cd "${OLDPWD}"
 
 	rm -rf chroot/binary.deb
-	mv chroot/var/lib/dpkg/status.tmp chroot/var/lib/dpkg/status
+	mv chroot/var/lib/dpkg/status.real chroot/var/lib/dpkg/status
 
 	# Removing depends
 	Remove_package

Reply via email to