diff --git a/BuildLiveCD b/BuildLiveCD index aa7f237d..3162751e 100755 --- a/BuildLiveCD +++ b/BuildLiveCD @@ -27,7 +27,7 @@ fi ARCH=$(dpkg --print-installation-architecture) SUBARCH="" SUBARCHARG="" -DEFAULTSUITE="gutsy" +DEFAULTSUITE="intrepid" NEWSUITE="" SUITES="" PROPOSED="" @@ -54,6 +54,23 @@ done if [ -z "$SUITES" ]; then echo "No valid suites to build for" >&2 && exit 1 fi +for s in $SUITES; do + case $s in + dapper|edgy|feisty|gutsy|hardy) + ARCHARG="" + old_suite="yes" + ;; + *) + ARCHARG="-a$ARCH" + new_suite="yes" + ;; + esac +done +if [ "$new_suite" = "yes" ] && [ "$old_suite" = "yes" ]; then + echo "Can't build images for suites older than intrepid and suites" >&2 + echo "greater than hardy at the same time, please use two invocations" >&2 + exit 1 +fi if (( $# == 0 )) || [ "X$1" = "Xall" ]; then set -- ubuntu kubuntu kubuntu-kde4 edubuntu xubuntu mythbuntu base if [ "$ARCH" = "i386" ]; then @@ -111,7 +128,7 @@ for STE in $SUITES; do rm -f ${PUBDIR}latest ln -sf ${PUBDIR}${NOW} ${PUBDIR}latest mkdir -p ${PUBDIR}${NOW} - if $LINUX32 sudo chroot ${DIR%/./*} sh -c "cd /${DIR#*/./} && /usr/sbin/livecd.sh ${SUBARCHARG} ${PROPOSED} -d${STE} $arg" > ${LOG} 2>&1; then + if $LINUX32 sudo chroot ${DIR%/./*} sh -c "cd /${DIR#*/./} && /usr/sbin/livecd.sh ${SUBARCHARG} ${PROPOSED} -d${STE} ${ARCHARG} $arg" > ${LOG} 2>&1; then rm -f ${PUBDIR}current ln -sf ${NOW} ${PUBDIR}current diff --git a/debian/changelog b/debian/changelog index 48a58d7c..64ee7d9b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,9 +1,82 @@ -livecd-rootfs (0.56) UNRELEASED; urgency=low +livecd-rootfs (0.63) UNRELEASED; urgency=low * Add Mythbuntu support. -- Mario Limonciello Wed, 31 Oct 2007 10:26:25 -0400 +livecd-rootfs (0.62) intrepid; urgency=low + + * Use 'set -eu' rather than putting -eu on the #! line, so that running + 'sh -x /usr/sbin/livecd.sh' for testing doesn't invoke different + error-handling behaviour. + * Remove the kernel from the livefs; ubiquity >= 1.9.4 will copy it from + the CD root if it needs to (LP: #80385). + + -- Colin Watson Fri, 18 Jul 2008 20:01:15 +0100 + +livecd-rootfs (0.61) intrepid; urgency=low + + * Use apt pinning to force use of the version of ssl-cert from the hardy + release pocket, not the one from -updates, so we avoid pulling in the + very large openssl-blacklist package that we don't need on live CDs + + -- Steve Langasek Fri, 20 Jun 2008 13:53:17 -0700 + +livecd-rootfs (0.60) intrepid; urgency=low + + * Employ hideous hack to ensure that when we're building against + updates/proposed, we only get one version of kernel headers. + * Move the cleanup() call to the end of the script, so we still + have proc mounted for coreutils when update-initramfs is run. + * Mount dev/pts immediately after debootstrap, as dpkg has begun + whining pretty loudly (and occasionally exiting) if it's gone. + + -- Adam Conrad Tue, 10 Jun 2008 17:20:10 -0600 + +livecd-rootfs (0.59) intrepid; urgency=low + + [ Colin Watson ] + * Remove /boot/initrd.img-*.bak (LP: #64887). + + [ Adam Conrad ] + * Resurrect the proposed option for livecd.sh/BuildLiveCD, so + we can build test images that include packages from proposed. + * Build with updates and security by default, which is a no-op + on development releases (where these suites are empty), but + a necessity for point-release image building. + * Copy bin/true from the chroot, not from the real root, so + image builds for i386/lpia work on amd64, as intended. + + -- Adam Conrad Tue, 10 Jun 2008 13:23:18 -0600 + +livecd-rootfs (0.58) intrepid; urgency=low + + * Fix up BuildLiveCD to only pass -a$ARCH when building for intrepid, + and to disallow multi-suite builds (does anyone use it for this) of + suites >= intrepid and <= hardy in the same invocation. + + -- Adam Conrad Fri, 02 May 2008 15:44:17 -0600 + +livecd-rootfs (0.57) intrepid; urgency=low + + * Allow the user to specify the ARCH on the livecd.sh command line, + overriding the use of the dpkg architecture for the livecd run. + * Differentiate between ARCH (the local architecture) and TARGETARCH, + so that builds of ubuntu-lpia continue to work on the i386 buildd. + * Pass ARCH by default from BuildLiveCD to livecd.sh; this should be + manually overridden on cross-arch buildds, instead of using dpkg. + * Update default suite in BuildLiveCD to intrepid, gutsy's a bit old. + + -- Adam Conrad Fri, 02 May 2008 15:10:32 -0600 + +livecd-rootfs (0.56) hardy; urgency=low + + * Explicitly install language-support-en first for kubuntu-kde4 + live, should stop apt wanting to install firefox for no good + reason. + + -- Jonathan Riddell Thu, 13 Mar 2008 14:32:14 +0000 + livecd-rootfs (0.55) hardy; urgency=low * All powerpc builds (including ps3) use the powerpc/powerpc64-smp kernels @@ -89,7 +162,6 @@ livecd-rootfs (0.44) hardy; urgency=low -- Sarah Hobbs Fri, 30 Nov 2007 14:52:29 +1100 ->>>>>>> MERGE-SOURCE livecd-rootfs (0.43) hardy; urgency=low * Add Gobuntu support. diff --git a/livecd.sh b/livecd.sh index 68132a4e..23268b8c 100644 --- a/livecd.sh +++ b/livecd.sh @@ -1,4 +1,5 @@ -#!/bin/bash -eu +#!/bin/bash +set -eu ########################################################################## #### (c) Copyright 2004-2007 Canonical Ltd. ##### @@ -70,29 +71,27 @@ OPTMIRROR= select_mirror () { case $ARCH in - i386|amd64|sparc) + i386|amd64) case $FS in ubuntu-lpia) USERMIRROR=http://ports.ubuntu.com/ubuntu-ports SECMIRROR=${USERMIRROR} SECSRCMIRROR=${SRCMIRROR} + TARGETARCH=lpia ;; *) USERMIRROR=http://archive.ubuntu.com/ubuntu SECMIRROR=http://security.ubuntu.com/ubuntu SECSRCMIRROR=${SECMIRROR} + TARGETARCH=${ARCH} ;; esac ;; - hppa) - USERMIRROR=http://ports.ubuntu.com/ubuntu-ports - SECMIRROR=${USERMIRROR} - SECSRCMIRROR=${SRCMIRROR} - ;; *) USERMIRROR=http://ports.ubuntu.com/ubuntu-ports SECMIRROR=${USERMIRROR} SECSRCMIRROR=${SRCMIRROR} + TARGETARCH=${ARCH} ;; esac case $(hostname --fqdn) in @@ -114,15 +113,18 @@ STE=gutsy EXCLUDE="" LIST="" SUBARCH="" +PROPOSED="" -while getopts :d:e:i:I:mS::s: name; do case $name in +while getopts :d:e:i:I:m:S:s:a:p name; do case $name in d) STE=$OPTARG;; e) EXCLUDE="$EXCLUDE $OPTARG";; i) LIST="$LIST $OPTARG";; - I) UINUM=$(sanitize int "$OPTARG");; - m) OPTMIRROR=$(sanitize url "$OPTARG");; - S) USZ=$(sanitize int "$OPTARG");; + I) UINUM="$OPTARG";; + m) OPTMIRROR="$OPTARG";; + S) USZ="$OPTARG";; s) SUBARCH="$OPTARG";; + a) ARCH="$OPTARG";; + p) PROPOSED="yes";; \?) echo bad usage >&2; exit 2;; \:) echo missing argument >&2; exit 2;; esac; done; @@ -131,7 +133,7 @@ shift $((OPTIND-1)) if (( $# == 0 )) || [ "X$1" = "Xall" ]; then set -- ubuntu kubuntu kubuntu-kde4 edubuntu xubuntu mythbuntu gobuntu base if [ "$ARCH" = "i386" ]; then - set -- ubuntu ubuntu-dvd ubuntu-lpia kubuntu kubuntu-dvd kubuntu-kde4 edubuntu edubuntu-dvd mythbuntu xubuntu gobuntu base + set -- ubuntu ubuntu-dvd kubuntu kubuntu-dvd kubuntu-kde4 edubuntu edubuntu-dvd mythbuntu xubuntu gobuntu base fi fi @@ -179,7 +181,7 @@ Flags: seen ;; kubuntu-kde4) LIST="$LIST minimal^ standard^ kubuntu-kde4-desktop^" - LIVELIST="kubuntu-kde4-live^ xresprobe laptop-detect casper lupin-casper" + LIVELIST="language-support-en kubuntu-kde4-live^ xresprobe laptop-detect casper lupin-casper" COMP="main restricted universe multiverse" ;; edubuntu|edubuntu-dvd) @@ -187,8 +189,9 @@ Flags: seen LIVELIST="edubuntu-live^ xresprobe laptop-detect casper lupin-casper" ;; xubuntu) - LIST="$LIST minimal^ standard^ xterm libgoffice-gtk-0-4 xubuntu-desktop^" + LIST="$LIST minimal^ standard^ xterm libgoffice-gtk-0-6 xubuntu-desktop^" LIVELIST="xubuntu-live^ xresprobe laptop-detect casper lupin-casper" + COMP="main restricted universe multiverse" ;; gobuntu) LIST="$LIST minimal^ standard^ gobuntu-desktop^" @@ -235,18 +238,18 @@ Flags: seen esac dpkg -l livecd-rootfs || true # get our version # in the log. - if [ "$FS" != "ubuntu-lpia" ]; then - debootstrap --components=$(echo $COMP | sed 's/ /,/g') $STE $ROOT $MIRROR - else - debootstrap --components=$(echo $COMP | sed 's/ /,/g') --arch lpia $STE $ROOT $MIRROR - fi + debootstrap --components=$(echo $COMP | sed 's/ /,/g') --arch $TARGETARCH $STE $ROOT $MIRROR + + # Recent dpkg has started complaining pretty loudly if dev/pts isn't + # mounted, so let's get it mounted immediately after debootstrap: + mount -t devpts devpts-${STE}-${FSS}-livefs ${ROOT}dev/pts # Just make a few things go away, which lets us skip a few other things. DIVERTS="usr/sbin/mkinitrd usr/sbin/invoke-rc.d" for file in $DIVERTS; do mkdir -p ${ROOT}${file%/*} chroot $ROOT dpkg-divert --add --local --divert /${file}.livecd --rename /${file} - cp /bin/true ${ROOT}$file + cp ${ROOT}/bin/true ${ROOT}$file done # /bin/true won't cut it for mkinitrd, need to have -o support. @@ -261,8 +264,8 @@ for i in range(len(sys.argv)): trap "cleanup" 0 1 2 3 15 - case $ARCH in - alpha|amd64|i386|ia64|m68k|mips|mipsel) + case $TARGETARCH in + alpha|amd64|i386|ia64|lpia|m68k|mips|mipsel) link_in_boot=no ;; *) @@ -283,7 +286,7 @@ link_in_boot = $link_in_boot mkdir -p ${ROOT}proc mount -tproc none ${ROOT}proc - case $ARCH+$SUBARCH in + case $TARGETARCH+$SUBARCH in powerpc+ps3) mkdir -p ${ROOT}spu;; esac @@ -293,15 +296,12 @@ link_in_boot = $link_in_boot cp ${ROOT}etc/apt/trusted.gpg ${ROOT}etc/apt/trusted.gpg.$$ cat /etc/apt/trusted.gpg >> ${ROOT}etc/apt/trusted.gpg - case $ARCH in + case $TARGETARCH in amd64) LIST="$LIST linux-generic";; - i386) - case $FS in - ubuntu-lpia) LIST="$LIST linux-lpia";; - *) LIST="$LIST linux-generic";; - esac;; + i386) LIST="$LIST linux-generic";; # and the bastard stepchildren + lpia) LIST="$LIST linux-lpia";; ia64) LIST="$LIST linux-itanium linux-mckinley";; hppa) LIST="$LIST linux-hppa32 linux-hppa64";; powerpc) LIST="$LIST linux-powerpc linux-powerpc64-smp";; @@ -313,10 +313,46 @@ link_in_boot = $link_in_boot LIST="$(without_package "$x" "$LIST")" done + if [ "$STE" = "hardy" ]; then + # use the version of ssl-cert from the release + # pocket, because the version in -updates pulls in the large + # openssl-blacklist package which we should never need on the + # live CD + cat << @@EOF > ${ROOT}etc/apt/preferences +Package: ssl-cert +Pin: version 1.0.14-0ubuntu2 +Pin-Priority: 900 +@@EOF + fi + # Create a good sources.list, and finish the install echo deb $MIRROR $STE ${COMP} > ${ROOT}etc/apt/sources.list + echo deb $MIRROR ${STE}-security ${COMP} >> ${ROOT}etc/apt/sources.list + echo deb $MIRROR ${STE}-updates ${COMP} >> ${ROOT}etc/apt/sources.list + if [ "$PROPOSED" = "yes" ]; then + echo deb $MIRROR ${STE}-proposed ${COMP} >> ${ROOT}etc/apt/sources.list + fi chroot $ROOT apt-get update + chroot $ROOT apt-get -y --purge dist-upgrade livecd.${FSS}.manifest-headers + chroot ${ROOT} dpkg -l linux-headers-\* | grep ^i | awk '{print $2}' \ + > livecd.${FSS}.manifest-headers-full + HEADERPACKAGES=`cat livecd.${FSS}.manifest-headers-full` + HEADERMETA="" + for i in `comm -3 livecd.${FSS}.manifest-headers livecd.${FSS}.manifest-headers-full`; do + HEADERMETA="$HEADERMETA $i" + done + rm -f livecd.${FSS}.manifest-headers livecd.${FSS}.manifest-headers-full + chroot ${ROOT} apt-get -y --purge remove $HEADERPACKAGES livecd.${FSS}.manifest-desktop chroot $ROOT apt-get -y install $LIVELIST ${ROOT}etc/apt/sources.list deb ${USERMIRROR} $STE ${COMP} deb-src ${SRCMIRROR} $STE ${COMP} +deb ${SECMIRROR} ${STE}-security ${COMP} +deb-src ${SECSRCMIRROR} ${STE}-security ${COMP} + +## Major bug fix updates produced after the final release of the +## distribution. +deb ${USERMIRROR} ${STE}-updates ${COMP} +deb-src ${USERMIRROR} ${STE}-updates ${COMP} + ## Uncomment the following two lines to add software from the 'universe' ## repository. ## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu @@ -360,9 +406,10 @@ deb-src ${SRCMIRROR} $STE ${COMP} ## team. # deb ${USERMIRROR} $STE universe # deb-src ${SRCMIRROR} $STE universe - -deb ${SECMIRROR} ${STE}-security ${COMP} -deb-src ${SECSRCMIRROR} ${STE}-security ${COMP} +# deb ${USERMIRROR} ${STE}-updates universe +# deb-src ${USERMIRROR} ${STE}-updates universe +# deb ${USERMIRROR} ${STE}-security universe +# deb-src ${USERMIRROR} ${STE}-security universe @@EOF mv ${ROOT}etc/apt/trusted.gpg.$$ ${ROOT}etc/apt/trusted.gpg @@ -388,7 +435,10 @@ deb-src ${SECSRCMIRROR} ${STE}-security ${COMP} chroot ${ROOT} update-initramfs -k "${KVER}" -u # we mv the initramfs, so it's not wasting space on the livefs mv ${ROOT}/boot/initrd.img-"${KVER}" livecd.${FSS}.initrd-"${SUBARCH}" - cp ${ROOT}/boot/vmlinu?-"${KVER}" livecd.${FSS}.kernel-"${SUBARCH}" + rm -f ${ROOT}/boot/initrd.img-"${KVER}".bak + # ubiquity >= 1.9.4 copies the kernel from the CD root if it doesn't + # find one on the livefs, allowing us to save space + mv ${ROOT}/boot/vmlinu?-"${KVER}" livecd.${FSS}.kernel-"${SUBARCH}" done NUMKVERS="$(set -- $KVERS; echo $#)" if [ "$NUMKVERS" = 1 ]; then @@ -397,7 +447,7 @@ deb-src ${SECSRCMIRROR} ${STE}-security ${COMP} ln -s livecd.${FSS}.initrd-"${SUBARCH}" livecd.${FSS}.initrd ln -s livecd.${FSS}.kernel-"${SUBARCH}" livecd.${FSS}.kernel fi - case $ARCH+$SUBARCH in + case $TARGETARCH+$SUBARCH in powerpc+ps3) chroot ${ROOT} addgroup --system spu;; esac @@ -430,9 +480,13 @@ deb-src ${SECSRCMIRROR} ${STE}-security ${COMP} perl -i -nle 'print unless /^Package: language-(pack|support)/ .. /^$/;' \ ${ROOT}/var/lib/apt/extended_states + # And run the cleanup function dead last, to umount /proc after nothing + # else needs to be run in the chroot (umounting it earlier breaks rm): + cleanup + livefs_squash() { - squashsort="http://people.ubuntu.com/~tfheen/livesort/${FSS}.list.${ARCH}" + squashsort="http://people.ubuntu.com/~tfheen/livesort/${FSS}.list.${TARGETARCH}" if wget -O livecd.${FSS}.sort ${squashsort} > /dev/null 2>&1; then echo "Using the squashfs sort list from ${squashsort}." else