Release version 2.19 with preinstalled-package-pools support; see debian/changelog for more info

ubuntu/precise 2.19
Adam Conrad 14 years ago
parent 6cc16c830e
commit 18b87630d3

17
debian/changelog vendored

@ -1,3 +1,20 @@
livecd-rootfs (2.19) oneiric; urgency=low
* Add support for building a pool of packages into the live config:
- define SEEDMIRROR, PREINSTALL_POOL, PREINSTALL_POOL_SEEDS in config
- set PREINSTALL_POOL_SEEDS to "server-ship" for ubuntu-server
- crib seed inheritance logic from cdimage implementation of same
- run germinate against seeds from SEEDMIRROR if to populate
PREINSTALL_POOL with a list of packages from PREINSTALL_POOL_SEEDS
- create a local-hook to download PREINSTALL_POOL packages to rootfs
* And add support to deal with the above pool of packages during build:
- generate a GPG key in the background if we're going to need one
- create a sources.list.d entry pointing at the rootfs pool
- create a Packages file and create and sign a Release file
- add our previously-generated key to the apt keyring and toss it
-- Adam Conrad <adconrad@ubuntu.com> Tue, 26 Jul 2011 15:26:01 -0600
livecd-rootfs (2.18) oneiric; urgency=low livecd-rootfs (2.18) oneiric; urgency=low
* export LB_LINUX_FLAVOURS="none" in auto/clean, so the clean * export LB_LINUX_FLAVOURS="none" in auto/clean, so the clean

2
debian/control vendored

@ -8,7 +8,7 @@ Vcs-Bzr: http://bazaar.launchpad.net/~ubuntu-core-dev/livecd-rootfs/trunk
Package: livecd-rootfs Package: livecd-rootfs
Architecture: all Architecture: all
Depends: ${misc:Depends}, debootstrap, rsync, python-minimal | python, procps, squashfs-tools (>= 1:3.3-1), grep-dctrl, fdupes, lsb-release, lzma, e2fsprogs, live-build (>= 3.0~a22-1ubuntu1) Depends: ${misc:Depends}, debootstrap, rsync, python-minimal | python, procps, squashfs-tools (>= 1:3.3-1), grep-dctrl, fdupes, lsb-release, lzma, e2fsprogs, germinate (>= 1.25.1), apt-utils, gnupg, live-build (>= 3.0~a22-1ubuntu1)
Suggests: partimage Suggests: partimage
Description: construction script for the livecd rootfs Description: construction script for the livecd rootfs
livecd-rootfs provides the script used to create the root filesystem livecd-rootfs provides the script used to create the root filesystem

@ -12,9 +12,66 @@ Read_conffiles config/all config/common config/bootstrap config/chroot config/bi
Set_defaults Set_defaults
( (
if [ -d gnupg ]; then
cat << @@EOF > gnupg/NEWKEY
Key-Type: DSA
Key-Length: 1024
Name-Real: Ubuntu Local Archive One-Time Signing Key
Name-Email: cdimage@ubuntu.com
Expire-Date: 0
@@EOF
gpg --home gnupg --gen-key --batch < gnupg/NEWKEY \
> gnupg/generate.log 2>&1 &
GPG_PROCESS=$!
fi
lb bootstrap "$@" lb bootstrap "$@"
lb chroot "$@" lb chroot "$@"
if [ -d chroot/var/lib/preinstalled-pool ]; then
(cd chroot/var/lib/preinstalled-pool/ && apt-ftparchive packages . > Packages)
bzip2 -9 -c chroot/var/lib/preinstalled-pool/Packages \
> chroot/var/lib/preinstalled-pool/Packages.bz2
cat << @@EOF > chroot/etc/apt/sources.list.preinstall
# This is a sources.list entry for a small pool of packages
# provided on your preinstalled filesystem for your convenience.
#
# It is perfectly safe to delete both this entry and the directory
# it references, should you want to save disk space and fetch the
# packages remotely instead.
#
deb file:/var/lib/preinstalled-pool/ ./
#
@@EOF
cat chroot/etc/apt/sources.list.preinstall chroot/etc/apt/sources.list \
> chroot/etc/apt/sources.list.new
mv chroot/etc/apt/sources.list.new chroot/etc/apt/sources.list
rm chroot/etc/apt/sources.list.preinstall
echo "Waiting on gnupg ("$GPG_PROCESS") to finish generating a key."
wait $GPG_PROCESS
R_ORIGIN=$(lsb_release -i -s)
R_CODENAME=$(lsb_release -c -s)
R_VERSION=$(lsb_release -r -s)
R_PRETTYNAME=$(echo $R_CODENAME | sed -e 's/^\(.\)/\U\1/')
apt-ftparchive -o APT::FTPArchive::Release::Origin=$R_ORIGIN \
-o APT::FTPArchive::Release::Label=$R_ORIGIN \
-o APT::FTPArchive::Release::Suite=$R_CODENAME-local \
-o APT::FTPArchive::Release::Version=$R_VERSION \
-o APT::FTPArchive::Release::Codename=$R_CODENAME \
-o APT::FTPArchive::Release::Description="$R_ORIGIN $R_PRETTYNAME Local" \
release chroot/var/lib/preinstalled-pool/ > gnupg/Release
gpg --home gnupg --detach-sign --armor gnupg/Release
mv gnupg/Release chroot/var/lib/preinstalled-pool/Release
mv gnupg/Release.asc chroot/var/lib/preinstalled-pool/Release.gpg
apt-key --keyring chroot/etc/apt/trusted.gpg add gnupg/pubring.gpg
rm chroot/var/lib/preinstalled-pool/Packages
fi
echo "===== Checking size of /usr/share/doc =====" echo "===== Checking size of /usr/share/doc ====="
echo BEGIN docdirs echo BEGIN docdirs
(cd chroot && find usr/share/doc -maxdepth 1 -type d | xargs du -s | sort -nr) (cd chroot && find usr/share/doc -maxdepth 1 -type d | xargs du -s | sort -nr)

@ -3,6 +3,7 @@ set -e
rm -rf config rm -rf config
SEEDMIRROR=http://people.canonical.com/~ubuntu-archive/seeds/
if [ -z "$MIRROR" ]; then if [ -z "$MIRROR" ]; then
case $(hostname --fqdn) in case $(hostname --fqdn) in
bld-*.mmjgroup.com) ;; bld-*.mmjgroup.com) ;;
@ -18,9 +19,15 @@ if [ -z "$MIRROR" ]; then
*) MIRROR=http://mirrors.0c3.net/ubuntu-ports/ ;; *) MIRROR=http://mirrors.0c3.net/ubuntu-ports/ ;;
esac esac
;; ;;
*.ubuntu.com) MIRROR=http://ftpmaster.internal/ubuntu/ ;; *.ubuntu.com) MIRROR=http://ftpmaster.internal/ubuntu/
*.warthogs.hbd.com) MIRROR=http://ftpmaster.internal/ubuntu/ ;; SEEDMIRROR=http://archive-team.internal/seeds/
*.buildd) MIRROR=http://ftpmaster.internal/ubuntu/ ;; ;;
*.warthogs.hbd.com) MIRROR=http://ftpmaster.internal/ubuntu/
SEEDMIRROR=http://archive-team.internal/seeds/
;;
*.buildd) MIRROR=http://ftpmaster.internal/ubuntu/
SEEDMIRROR=http://archive-team.internal/seeds/
;;
esac esac
fi fi
@ -56,10 +63,14 @@ MEMTEST=none
SOURCE='--source false' SOURCE='--source false'
BOOTLOADER=none BOOTLOADER=none
LIVE_TASK= LIVE_TASK=
PREINSTALLED=false
PREINSTALL_POOL=
PREINSTALL_POOL_SEEDS=
case $IMAGEFORMAT in case $IMAGEFORMAT in
ext2|ext3|ext4) ext2|ext3|ext4)
OPTS="${OPTS:+$OPTS }--initramfs none --chroot-filesystem $IMAGEFORMAT" OPTS="${OPTS:+$OPTS }--initramfs none --chroot-filesystem $IMAGEFORMAT"
PREINSTALLED=true
case $SUBPROJECT in case $SUBPROJECT in
wubi) wubi)
add_package install lupin-support add_package install lupin-support
@ -72,6 +83,7 @@ case $IMAGEFORMAT in
plain) plain)
OPTS="${OPTS:+$OPTS }--initramfs none --chroot-filesystem $IMAGEFORMAT" OPTS="${OPTS:+$OPTS }--initramfs none --chroot-filesystem $IMAGEFORMAT"
PREINSTALLED=true
;; ;;
*) *)
@ -140,6 +152,7 @@ case $PROJECT in
ubuntu-server) ubuntu-server)
add_task install minimal standard add_task install minimal standard
PREINSTALL_POOL_SEEDS='server-ship'
;; ;;
ubuntu-core) ubuntu-core)
@ -237,3 +250,82 @@ deb $LB_PARENT_MIRROR_BINARY_VOLATILE $SUITE-updates universe multiverse
EOF EOF
;; ;;
esac esac
# cribbed from cdimage, perhaps this should be a small helper script in germinate?
add_inheritance () {
case " $inherit " in
*" $1 "*)
;;
*)
inherit="${inherit:+$inherit }$1"
;;
esac
}
expand_inheritance () {
for seed in $(grep "^$1:" germinate-output/structure | cut -d: -f2); do
expand_inheritance "$seed"
done
add_inheritance "$1"
}
inheritance () {
inherit=
expand_inheritance "$1"
echo "$inherit"
}
if [ "$PREINSTALLED" = "true" ]; then
if [ -n "$PREINSTALL_POOL_SEEDS" ]; then
rm -rf germinate-output && mkdir germinate-output
case $PROJECT in
kubuntu-mobile*)
SEED=kubuntu-mobile.$SUITE
;;
kubuntu*)
SEED=kubuntu.$SUITE
;;
xubuntu*)
SEED=xubuntu.$SUITE
;;
*)
SEED=ubuntu.$SUITE
;;
esac
(cd germinate-output && germinate --no-rdepends --no-installer \
-S $SEEDMIRROR -m $MIRROR -d $SUITE -s $SEED \
${COMPONENTS:+-c "$COMPONENTS"} -a $ARCH)
UNWANTED_SEEDS="${LIVE_TASK:+$LIVE_TASK }boot installer required"
for i in $UNWANTED_SEEDS; do
UNWANTED_SEEDS="${UNWANTED_SEEDS:+$UNWANTED_SEEDS }$(inheritance $i)"
done
for i in $PREINSTALL_POOL_SEEDS; do
PREINSTALL_POOL_SEEDS="${PREINSTALL_POOL_SEEDS:+$PREINSTALL_POOL_SEEDS }$(inheritance $i)"
done
for i in $PREINSTALL_POOL_SEEDS; do
case " $UNWANTED_SEEDS " in
*" $i "*)
;;
*)
PPS_EXP="${PPS_EXP:+$PPS_EXP }$i"
;;
esac
done
for i in $PPS_EXP; do
PREINSTALL_POOL="$PREINSTALL_POOL $(awk '{print $1}' \
germinate-output/$i | egrep -v '^-|^Package|^\|' | tr '\n' ' ')"
done
fi
if [ -n "$PREINSTALL_POOL" ]; then
rm -rf gnupg && mkdir gnupg
PREINSTALL_POOL_HOOK=config/chroot_local-hooks/preinstall-pool.sh
echo "#! /bin/sh" > $PREINSTALL_POOL_HOOK
echo "mkdir -p /var/lib/preinstalled-pool/" >> $PREINSTALL_POOL_HOOK
echo "cd /var/lib/preinstalled-pool/" >> $PREINSTALL_POOL_HOOK
echo "apt-get -y download $PREINSTALL_POOL" >> $PREINSTALL_POOL_HOOK
fi
fi

Loading…
Cancel
Save