summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Gavin <pete@gentoo.org>2001-08-07 22:59:56 +0000
committerPeter Gavin <pete@gentoo.org>2001-08-07 22:59:56 +0000
commiteddeb2dc337ec6a58902c4cf62d41013c25c547b (patch)
treee1261ba5b71b95cc0db74f883ecdf72f974a316f /scripts/autodist.sh
parentfixed header (diff)
downloadgentoo-2-eddeb2dc337ec6a58902c4cf62d41013c25c547b.tar.gz
gentoo-2-eddeb2dc337ec6a58902c4cf62d41013c25c547b.tar.bz2
gentoo-2-eddeb2dc337ec6a58902c4cf62d41013c25c547b.zip
*** empty log message ***
Diffstat (limited to 'scripts/autodist.sh')
-rw-r--r--scripts/autodist.sh88
1 files changed, 84 insertions, 4 deletions
diff --git a/scripts/autodist.sh b/scripts/autodist.sh
index 985b7ecb9997..006c20526527 100644
--- a/scripts/autodist.sh
+++ b/scripts/autodist.sh
@@ -1,6 +1,13 @@
#!/bin/bash
+runlog () {
+ echo "Running ${1+${@}}..." 1>&3
+ ${1+"${@}"} 1>&3 2>&1
+ echo 1>&3
+}
+
TODAY=`date '+%Y%m%d'`
+FIRSTDIR=`pwd`
# ok, this script builds:
#
@@ -15,12 +22,21 @@ TODAY=`date '+%Y%m%d'`
BUILDROOT="${AUTODISTDIR}/buildroot"
ISOROOT="${AUTODISTDIR}/isoroot"
INITRDROOT="${AUTODISTDIR}/initrdroot"
+INITRDIMG="${AUTODISTDIR}/initrdimg"
+USRIMG="${AUTODISTDIR}/usrimg"
[ -z "${BUILDTARBALL}" ] && BUILDTARBALL="build-${TODAY}.tbz2"
[ -z "${SYSTARBALL}" ] && SYSTARBALL="sys-${TODAY}.tbz2"
# shouldn't allow CFLAGS to be overridden
export CFLAGS="-O2 -mcpu=i486 -march=i486"
+export CXXFLAGS="${CFLAGS}"
+export CHOST="i486-pc-linux-gnu"
[ -d "${DISTRODIR}" ] || mkdir -p "${DISTRODIR}"
+[ -z "${CONTINUE}" ] && CONTINUE=no
+if [ "${CONTINUE}" = "yes" ]
+then
+ CHECK=yes
+fi
[ -z "${ISOINITRD_PACKAGES}" ] && ISOINITRD_PACKAGES=`ls -1 ${PORTDIR}/files/isoinitrd-*.packages | sort | tail -1`
[ -z "${BUILD_PACKAGES}" ] && BUILD_PACKAGES=`ls -1 ${PORTDIR}/files/build-*.packages | sort | tail -1`
@@ -29,6 +45,19 @@ export CFLAGS="-O2 -mcpu=i486 -march=i486"
[ -z "${KERNEL_VERSION}" ] && KERNEL_VERSION="`echo ${KERNEL_SRC} | sed 's,.*-\([0-9]\.[0-9]\.[0-9]\+\(-ac[0-9]\+\)\?\)$,\1,'`"
[ -z "${INITRD_USE}" ] && INITRD_USE="bootcd lvm ext3"
+# size of the initrd in kbytes
+[ -z "${INITRD_SIZE}" ] && INITRD_SIZE=24576
+[ -z "${INITRD_BSIZE}" ] && INITRD_BSIZE=4096
+[ -z "${LOOPDEV}" ] && LOOPDEV=/dev/loop/0
+# check to see if this loop device is in use
+if losetup ${LOOPDEV} &> /dev/null
+then
+ echo "${LOOPDEV} is in use. Please specify another loop device by"
+ echo "setting the environment variable LOOPDEV."
+ exit 1
+fi
+
+exec 3> ${AUTODISTDIR}/autodist.log
export PORTDIR
export DISTRODIR
@@ -60,15 +89,18 @@ echo ">>> Using SYS_PACKAGES=${SYS_PACKAGES}"
echo ">>> Using KERNEL_SRC=${KERNEL_SRC}"
echo ">>> Using KERNEL_VERSION=${KERNEL_VERSION}"
-echo ">>> Cleaning up ${AUTODISTDIR}..."
-rm -rf ${AUTODISTDIR}
+if [ "${CONTINUE}" != "yes" ]
+then
+ echo ">>> Cleaning up ${AUTODISTDIR}..."
+ rm -rf ${AUTODISTDIR}
+fi
echo ">>> Creating ISO directory tree..."
mkdir -pv ${ISOROOT}/{doc,gentoo{,/distfiles,/packages{,/All}},isolinux{,/kernels},stuff}
echo ">>> Building initrd packages..."
mkdir -p ${INITRDROOT}
-ERRQUIT=yes CHECK=no USE="${INITRD_USE}" ROOT="${INITRDROOT}" STEPS="clean unpack compile install qmerge clean" ${PORTDIR}/scripts/autocompile.sh ${ISOINITRD_PACKAGES}
+ERRQUIT=yes CHECK="${CHECK}" USE="${INITRD_USE}" ROOT="${INITRDROOT}" STEPS="clean unpack compile install qmerge clean" ${PORTDIR}/scripts/autocompile.sh ${ISOINITRD_PACKAGES}
if [ ${?} != 0 ]
then
echo "Error building initrd packages, quitting"
@@ -81,7 +113,55 @@ chown root.root ${INITRDROOT}/tmp
chmod 1777 ${INITRDROOT}/tmp
echo ">>> Setting up initrd..."
-find ${INITRDROOT}/etc -name "*._cfg_*" exec rm -vf {} \;
+find ${INITRDROOT}/etc -name "*._cfg_*" -exec rm -vf {} \;
ROOT=${INITRDROOT} rc-update autogen boot force
ROOT=${INITRDROOT} rc-update autogen normal force
ROOT=${INITRDROOT} rc-update autogen halt force
+
+echo ">>> Creating initrd.img..."
+# /usr goes in its own image
+if [ "${CONTINUE}" != "yes" ] || [ ! -d ${AUTODISTDIR}/initrdusr ]
+then
+ mv ${INITRDROOT}/usr ${AUTODISTDIR}/initrdusr
+ mkdir ${INITRDROOT}/usr
+fi
+
+runlog dd if=/dev/zero of=${AUTODISTDIR}/initrd.img bs=${INITRD_SIZE} count=1024
+runlog losetup ${LOOPDEV} ${AUTODISTDIR}/initrd.img
+runlog mke2fs ${LOOPDEV}
+mkdir -p ${INITRDIMG}
+runlog mount ${LOOPDEV} ${INITRDIMG}
+cd ${INITRDROOT}
+# cpio is best for this kinda thing
+echo -n ">>> Copying files"
+find . -print0 | cpio -p -0dm --quiet --dot ${INITRDIMG}
+echo
+umount ${INITRDIMG}
+runlog losetup -d ${LOOPDEV}
+echo ">>> Compressing initrd..."
+gzip -9 ${AUTODISTDIR}/initrd.img
+mv -f ${AUTODISTDIR}/initrd.img.gz ${AUTODISTDIR}/initrd.img
+
+echo ">>> Creating usr.img..."
+usrsize=`du -sk ${AUTODISTDIR}/initrdusr | sed 's,\([0-9]\+\).*,\1,'`
+# it doesn't hurt to pad it a bit :)
+usrsize=`expr ${usrsize} + 256`
+# lets make it an even multiple of INITRD_BSIZE bytes
+bsizek=`expr ${INITRD_BSIZE} / 1024`
+usrsize=`expr ${usrsize} / ${bsizek}`
+usrsize=`expr ${usrsize} + 1`
+runlog dd if=/dev/zero of=${AUTODISTDIR}/usr.img bs=${INITRD_BSIZE} count=${usrsize}
+mkdir -p ${AUTODISTDIR}/initrdusrimg
+runlog losetup ${LOOPDEV} ${AUTODISTDIR}/usr.img
+runlog mke2fs ${LOOPDEV}
+runlog mount ${LOOPDEV} ${AUTODISTDIR}/initrdusrimg
+cd ${AUTODISTDIR}/initrdusr
+# cpio is best for this kinda thing
+echo -n ">>> Copying files"
+find . -print0 | cpio -p -0dm --quiet --dot ${AUTODISTDIR}/initrdusrimg
+echo
+runlog umount ${AUTODISTDIR}/initrdusrimg
+runlog losetup -d ${LOOPDEV}
+echo ">>> Compressing usr.img..."
+create_compressed_fs ${AUTODISTDIR}/usr.img 65536 > ${AUTODISTDIR}/usr.img.compressed 2>&3
+mv ${AUTODISTDIR}/usr.img.compressed ${AUTODISTDIR}/usr.img