live-build/cron/live-build-cron-images

344 lines
12 KiB
Plaintext
Raw Normal View History

#!/bin/sh
2011-07-20 08:29:57 +00:00
## live-build(7) - System Build Scripts
## Copyright (C) 2006-2011 Daniel Baumann <daniel@debian.org>
##
2011-07-20 08:29:57 +00:00
## live-build 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
Init ()
{
if [ -e /etc/live/build-cron.conf ]
then
. /etc/live/build-cron.conf
fi
if ls /etc/live/build-cron.d/* > /dev/null 2>&1
then
for _FILE in /etc/live/build-cron.d/*
do
. ${_FILE}
done
fi
if [ "${LIVE_BUILD_CRON_IMAGES}" != "true" ]
then
exit 0
fi
mkdir -p "${LIVE_BUILD_CRON_IMAGES_DIRECTORY}"
if [ ! -d "${LIVE_BUILD_CRON_IMAGES_DIRECTORY}" ]
then
echo "E: live-build-cron-images directory not set."
exit 1
fi
# FIXME: don't hardcode
BUILDS="daily"
DATE="$(date +%Y%m%d)"
ARCHITECTURE="$(dpkg --print-architecture)"
eval DISTRIBUTIONS="$`echo LIVE_BUILD_CRON_IMAGES_$(echo ${BUILDS} | tr [a-z] [A-Z])_DISTRIBUTIONS`"
eval FLAVOURS="$`echo LIVE_BUILD_CRON_IMAGES_$(echo ${BUILDS} | tr [a-z] [A-Z])_FLAVOURS`"
}
Setup ()
{
2011-07-20 08:29:57 +00:00
_TMPDIR="$(mktemp -d -t live-build-cron-images.XXXXXXXX)"
case "${LIVE_BUILD_CRON_IMAGES_BUILD}" in
git)
2011-07-20 08:29:57 +00:00
cd "${_TMPDIR}"
git clone git://live.debian.net/git/live-build.git
git checkout debian-old-2.0
2011-07-20 08:29:57 +00:00
LB_BASE="${_TMPDIR}/live-build"
export LB_BASE
2011-07-20 08:29:57 +00:00
PATH="${PATH}:${_TMPDIR}/live-build/scripts/build"
export PATH
;;
release)
# live-build
if [ -n "${LIVE_BUILD}" ]
then
if [ -x "$(which dget 2>/dev/null)" ]
then
dget "http://live.debian.net/archive/packages/live-build/${LIVE_BUILD}/live-build_${LIVE_BUILD}.dsc"
dpkg-source -x live-build_${LIVE_BUILD}.dsc
2011-07-20 08:29:57 +00:00
LB_BASE="${_TMPDIR}/live-build-$(echo ${LIVE_BUILD} | awk -F- '{ print $1 }')"
export LB_BASE
2011-07-20 08:29:57 +00:00
PATH="${PATH}:${_TMPDIR}/live-build-$(echo ${LIVE_BUILD} | awk -F- '{ print $1 }')/scripts/build"
export PATH
else
echo "E: dget - command not found"
echo "I: dget can be optained from: "
echo "I: http://git.debian.org/?p=devscripts/devscripts.git"
echo "I: On Debian based systems, dget can be installed with:"
echo "I: apt-get install devscripts"
exit 1
fi
fi
;;
esac
2011-07-20 08:29:57 +00:00
mkdir -p "${_TMPDIR}/build"
cd "${_TMPDIR}/build"
# live-boot
if [ -n "${LIVE_BOOT}" ]
then
mkdir -p config/chroot_local-packages
cd config/chroot_local-packages
wget -c "http://live.debian.net/archive/packages/live-boot/${LIVE_BOOT}/live-boot_${LIVE_BOOT}.dsc"
wget -c "http://live.debian.net/archive/packages/live-boot/${LIVE_BOOT}/live-boot_${LIVE_BOOT}.diff.gz"
wget -c "http://live.debian.net/archive/packages/live-boot/${LIVE_BOOT}/live-boot_$(echo ${LIVE_BOOT} | awk -F- '{ print $1 }').orig.tar.gz"
wget -c "http://live.debian.net/archive/packages/live-boot/${LIVE_BOOT}/live-boot_${LIVE_BOOT}_all.deb"
wget -c "http://live.debian.net/archive/packages/live-boot/${LIVE_BOOT}/live-boot-initramfs-tools_${LIVE_BOOT}_all.deb"
wget -c "http://live.debian.net/archive/packages/live-boot/${LIVE_BOOT}/live-initramfs_${LIVE_BOOT}_all.deb"
cd "${OLDPWD}"
fi
# live-config
if [ -n "${LIVE_CONFIG}" ]
then
mkdir -p config/chroot_local-packages
cd config/chroot_local-packages
wget -c "http://live.debian.net/archive/packages/live-config/${LIVE_CONFIG}/live-config_${LIVE_CONFIG}.dsc"
wget -c "http://live.debian.net/archive/packages/live-config/${LIVE_CONFIG}/live-config_${LIVE_CONFIG}.diff.gz"
wget -c "http://live.debian.net/archive/packages/live-config/${LIVE_CONFIG}/live-config_$(echo ${LIVE_CONFIG} | awk -F- '{ print $1 }').orig.tar.gz"
wget -c "http://live.debian.net/archive/packages/live-config/${LIVE_CONFIG}/live-config_${LIVE_CONFIG}_all.deb"
wget -c "http://live.debian.net/archive/packages/live-config/${LIVE_CONFIG}/live-config-sysvinit_${LIVE_CONFIG}_all.deb"
cd "${OLDPWD}"
fi
# live-installer
if [ -n "${LIVE_INSTALLER}" ]
then
mkdir -p config/binary_local-udebs
cd config/binary_local-udebs
wget -c "http://ftp.debian.org/debian/pool/main/l/live-installer/live-installer_${LIVE_INSTALLER}.dsc"
wget -c "http://ftp.debian.org/debian/pool/main/l/live-installer/live-installer_${LIVE_INSTALLER}.tar.gz"
wget -c "http://ftp.debian.org/debian/pool/main/l/live-installer/live-installer_${LIVE_INSTALLER}_${ARCHITECTURE}.udeb"
cd "${OLDPWD}"
fi
# debian-installer-launcher
if [ -n "${DI_LAUNCHER}" ]
then
mkdir -p config/chroot_local-packages
cd config/chroot_local-packages
wget -c "http://ftp.debian.org/debian/pool/main/d/debian-installer-launcher/debian-installer-launcher_${DI_LAUNCHER}.dsc"
wget -c "http://ftp.debian.org/debian/pool/main/d/debian-installer-launcher/debian-installer-launcher_${DI_LAUNCHER}.tar.gz"
wget -c "http://ftp.debian.org/debian/pool/main/d/debian-installer-launcher/debian-installer-launcher_${DI_LAUNCHER}_all.deb"
cd "${OLDPWD}"
fi
}
Build ()
{
2011-07-20 08:29:57 +00:00
cd "${_TMPDIR}/build"
for DISTRIBUTION in ${DISTRIBUTIONS}
do
rm -rf cache/stages*
for FLAVOUR in ${FLAVOURS}
do
if [ -e .stage ]
then
lb clean
fi
rm -rf cache/stages_rootfs
rm -f config/* || true
LB_VERSION="$(lb --version | awk '/^live-build, version / { print $3 }')"
case "${LB_VERSION}" in
2.0*)
_PACKAGE_LISTS="--package-lists ${FLAVOUR}"
;;
3.0*)
_PACKAGE_LISTS="--package-lists ${FLAVOUR}"
;;
esac
# FIXME: cdebootstrap
lb config --clean \
--bootstrap cdebootstrap \
--cache-stages "bootstrap rootfs" \
--debian-installer ${DEBIAN_INSTALLER} \
--distribution ${DISTRIBUTION} \
--mirror-bootstrap ${MIRROR_BOOTSTRAP} \
--mirror-chroot ${MIRROR_CHROOT} \
--mirror-chroot-security ${MIRROR_CHROOT_SECURITY} \
${_PACKAGE_LISTS}
lb build 2>&1 | tee debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${FLAVOUR}.iso.log
mv binary*.iso debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${FLAVOUR}.iso
mv binary.list debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${FLAVOUR}.iso.list
mv binary.packages debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${FLAVOUR}.iso.packages
if [ "${ARCHITECTURE}" != "powerpc" ]
then
lb clean --binary
lb config --clean --binary-images usb-hdd
lb binary 2>&1 | tee debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${FLAVOUR}.img.log
mv binary.img debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${FLAVOUR}.img
mv binary.list debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${FLAVOUR}.img.list
mv binary.packages debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${FLAVOUR}.img.packages
fi
if [ "${ARCHITECTURE}" != "powerpc" ]
then
lb clean
rm -rf cache/stages_rootfs
lb config --clean --binary-images net
lb build 2>&1 | tee debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${FLAVOUR}.tar.gz.log
mv binary-net.tar.gz debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${FLAVOUR}.tar.gz
mv binary.list debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${FLAVOUR}.tar.gz.list
mv binary.packages debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${FLAVOUR}.tar.gz.packages
mv binary/*/filesystem.squashfs debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${FLAVOUR}.squashfs
for memtest in tftpboot/debian-live/${ARCHITECTURE}/memtest*; do cp -f ${memtest} debian-live-${DISTRIBUTION}-${ARCHITECTURE}.$(basename ${memtest}); done || true
for kernel in tftpboot/debian-live/${ARCHITECTURE}/vmlinuz*; do cp -f ${kernel} debian-live-${DISTRIBUTION}-${ARCHITECTURE}.$(basename ${kernel}); done
for initrd in tftpboot/debian-live/${ARCHITECTURE}/initrd*; do cp ${initrd} debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${FLAVOUR}.$(basename ${initrd}); done
cp debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${FLAVOUR}.tar.gz.packages debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${FLAVOUR}.packages
fi
if [ "${LIVE_BUILD_CRON_IMAGES_SOURCE}" = "true" ]
then
lb config --clean --source true
lb source 2>&1 | tee debian-live-${DISTRIBUTION}-source-${FLAVOUR}.log
mv source.debian.tar.gz debian-live-${DISTRIBUTION}-source-${FLAVOUR}.debian.tar.gz
mv source.debian.list debian-live-${DISTRIBUTION}-source-${FLAVOUR}.debian.tar.gz.list
mv source.debian-live.tar.gz debian-live-${DISTRIBUTION}-source-${FLAVOUR}.debian-live.tar.gz
mv source.debian-live.list debian-live-${DISTRIBUTION}-source-${FLAVOUR}.debian-live.tar.gz.list
fi
done
done
}
Install ()
{
BUILD="1"
while [ -e "${LIVE_BUILD_CRON_IMAGES_DIRECTORY}/${BUILDS}-builds/${DISTRIBUTION}/${DATE}-${BUILD}/${ARCHITECTURE}" ]
do
BUILD="$((${BUILD} + 1))"
done
2011-07-20 08:29:57 +00:00
cd "${_TMPDIR}/build"
# Move iso images
if ls debian-live-${DISTRIBUTION}-${ARCHITECTURE}-*.iso* > /dev/null 2>&1
then
mkdir -p "${LIVE_BUILD_CRON_IMAGES_DIRECTORY}/${BUILDS}-builds/${DISTRIBUTION}/${DATE}-${BUILD}/${ARCHITECTURE}/iso-hybrid"
mv debian-live-${DISTRIBUTION}-${ARCHITECTURE}-*.iso* "${LIVE_BUILD_CRON_IMAGES_DIRECTORY}/${BUILDS}-builds/${DISTRIBUTION}/${DATE}-${BUILD}/${ARCHITECTURE}/iso-hybrid"
fi
# Move hdd images
if ls debian-live-${DISTRIBUTION}-${ARCHITECTURE}-*.img > /dev/null 2>&1
then
mkdir -p "${LIVE_BUILD_CRON_IMAGES_DIRECTORY}/${BUILDS}-builds/${DISTRIBUTION}/${DATE}-${BUILD}/${ARCHITECTURE}/usb-hdd"
mv debian-live-${DISTRIBUTION}-${ARCHITECTURE}-*.img* "${LIVE_BUILD_CRON_IMAGES_DIRECTORY}/${BUILDS}-builds/${DISTRIBUTION}/${DATE}-${BUILD}/${ARCHITECTURE}/usb-hdd"
fi
# Move net images
if ls debian-live-${DISTRIBUTION}-${ARCHITECTURE}-*.tar.gz* > /dev/null 2>&1
then
mkdir -p "${LIVE_BUILD_CRON_IMAGES_DIRECTORY}/${BUILDS}-builds/${DISTRIBUTION}/${DATE}-${BUILD}/${ARCHITECTURE}/net"
mv debian-live-${DISTRIBUTION}-${ARCHITECTURE}-*.tar.gz* "${LIVE_BUILD_CRON_IMAGES_DIRECTORY}/${BUILDS}-builds/${DISTRIBUTION}/${DATE}-${BUILD}/${ARCHITECTURE}/net"
fi
# Move web images
if ls debian-live-${DISTRIBUTION}-${ARCHITECTURE}-*.squashfs > /dev/null 2>&1
then
mkdir -p "${LIVE_BUILD_CRON_IMAGES_DIRECTORY}/${BUILDS}-builds/${DISTRIBUTION}/${DATE}-${BUILD}/${ARCHITECTURE}/web"
mv debian-live-${DISTRIBUTION}-${ARCHITECTURE}-*.squashfs "${LIVE_BUILD_CRON_IMAGES_DIRECTORY}/${BUILDS}-builds/${DISTRIBUTION}/${DATE}-${BUILD}/${ARCHITECTURE}/web"
mv debian-live-${DISTRIBUTION}-${ARCHITECTURE}-*.packages* "${LIVE_BUILD_CRON_IMAGES_DIRECTORY}/${BUILDS}-builds/${DISTRIBUTION}/${DATE}-${BUILD}/${ARCHITECTURE}/web"
mv debian-live-${DISTRIBUTION}-${ARCHITECTURE}-*.vmlinuz* "${LIVE_BUILD_CRON_IMAGES_DIRECTORY}/${BUILDS}-builds/${DISTRIBUTION}/${DATE}-${BUILD}/${ARCHITECTURE}/web"
mv debian-live-${DISTRIBUTION}-${ARCHITECTURE}-*.initrd.img* "${LIVE_BUILD_CRON_IMAGES_DIRECTORY}/${BUILDS}-builds/${DISTRIBUTION}/${DATE}-${BUILD}/${ARCHITECTURE}/web"
fi
# Move source images
if ls debian-live-${DISTRIBUTION}-source-* > /dev/null 2>&1 && \
[ ! -d "${LIVE_BUILD_CRON_IMAGES_DIRECTORY}/${BUILDS}-builds/${DISTRIBUTION}/${DATE}-${BUILD}/source" ]
then
mkdir -p "${LIVE_BUILD_CRON_IMAGES_DIRECTORY}/${BUILDS}-builds/${DISTRIBUTION}/${DATE}-${BUILD}/source/tar"
mv debian-live-${DISTRIBUTION}-source-* "${LIVE_BUILD_CRON_IMAGES_DIRECTORY}/${BUILDS}-builds/${DISTRIBUTION}/${DATE}-${BUILD}/source/tar"
fi
for DIR in "${LIVE_BUILD_CRON_IMAGES_DIRECTORY}/${BUILDS}-builds/${DISTRIBUTION}/${DATE}-${BUILD}/${ARCHITECTURE}"/* "${LIVE_BUILD_CRON_IMAGES_DIRECTORY}/${BUILDS}-builds/${DISTRIBUTION}/${DATE}-${BUILD}/source"/*
do
cd "${DIR}"
md5sum debian* > MD5SUMS
sha1sum debian* > SHA1SUMS
sha256sum debian* > SHA256SUMS
done
rm -f "${LIVE_BUILD_CRON_IMAGES_DIRECTORY}/${BUILDS}-builds/${DISTRIBUTION}/current"
cd "${LIVE_BUILD_CRON_IMAGES_DIRECTORY}/${BUILDS}-builds/${DISTRIBUTION}"
ln -s ${DATE}-${BUILD} current
}
Clean ()
{
2011-07-20 08:29:57 +00:00
cd "${_TMPDIR}/build"
lb clean --purge
cd "${CURDIR}"
2011-07-20 08:29:57 +00:00
rm -rf "${_TMPDIR}"
}
Trace ()
{
cat > "${LIVE_BUILD_CRON_IMAGES_DIRECTORY}/${BUILDS}-builds/${BUILDS}-trace" << EOF
${DATE}-${BUILD}
$(LC_ALL=C date -R)
EOF
}
Main ()
{
Init
Setup
Build
Install
Clean
Trace
}
Main