diff --git a/sys-kernel/calckernel/ChangeLog b/sys-kernel/calckernel/ChangeLog index dd22aee86..b49c4544f 100644 --- a/sys-kernel/calckernel/ChangeLog +++ b/sys-kernel/calckernel/ChangeLog @@ -2,6 +2,12 @@ # Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2 # $Header: $ +*calckernel-3.4.10.903-r23 (16 Sep 2010) + + 16 Sep 2010; Mike Hiretsky (mhiretskiy) + +calckernel-3.4.10.903-r23.ebuild, +files/calckernel-3.4.10.903-r23.patch: + Added hide busybox compilation. + 01 Jun 2010; Mike Hiretsky (mhiretskiy) calckernel-3.4.10.903-r22.ebuild: Changed home page. diff --git a/sys-kernel/calckernel/Manifest b/sys-kernel/calckernel/Manifest index 88c371b31..ff7cf4418 100644 --- a/sys-kernel/calckernel/Manifest +++ b/sys-kernel/calckernel/Manifest @@ -1,4 +1,5 @@ AUX calckernel-3.4.10.903-r22.patch 11656 RMD160 4691d6fcb0199145cab9821e7efebb25fc3bfd47 SHA1 72ab1f2515978a2b27421787fcabafb7efa14815 SHA256 429d787952e1aa80d9c031453aac04a5e422b1ec71c1ca444a42578b47fb5dd5 +AUX calckernel-3.4.10.903-r23.patch 12153 RMD160 1155106945fb46db93e2f3d3bd68090cf20accf4 SHA1 1d7c53e67dc11935e2a339e90de5beb8d85a13f5 SHA256 04ccb6ba8c08c09bbf1e74fb8ef7f17a4d9faf4d815cdff9f207721ad1ca6d80 AUX genkernel.bash 2438 RMD160 b3d8e4436d8768c07d18c5aaff9c14fc16641729 SHA1 e15a9c6ef506aa6872a6a97d26751246dedded04 SHA256 e7de9771ba79ef878e2c9a21a1c1720f092c6047d3cc7d4a49ff6b90e7e2c248 DIST LVM2.2.02.28.tgz 531905 RMD160 bf6f25db6e34bf362353ae9557691a7f01962502 SHA1 6eb2f6e1228b017ad23d0b7f2bb12fd113f96616 SHA256 2d8d7b123e427d0bfb7471d7c17dfd88890eb98257ca22ea3be5d7307e83aceb DIST busybox-1.7.4.tar.bz2 1727940 RMD160 a4b71a246449f88a59acda6ecf019f66b9b7c19b SHA1 e5dcaa25525ca63663c3d4e7027897fed54a4f95 SHA256 8480a7c1b9ac0fddff55e8daae807ccf0a47aa292137fa8c9f97cf0733b459c7 @@ -9,5 +10,6 @@ DIST fuse-2.7.4.tar.gz 506658 RMD160 fe1808cfd58ad6651259245b424301e99881faa2 SH DIST genkernel-3.4.10.903.tar.bz2 210258 RMD160 1042cb154be145a95c5d8f95f5b646e948f18bd8 SHA1 67ebe450d40718f701da0bddf5ca48d497ab2241 SHA256 9348d915137b9e266163d706045aee4ec6af76cba5f0f07f5fe05e2e7eb0954f DIST unionfs-fuse-0.22.tar.bz2 27355 RMD160 f29cbf41af0ba8f2181ac565a6663871676f6488 SHA1 e95799923ee3938e1fb44c6fd9aa7154d720063e SHA256 fa0c494a8ce63f235601fcc35e3a96527831169d6d5921ee49faccf3b25feb78 EBUILD calckernel-3.4.10.903-r22.ebuild 4826 RMD160 10c135db68ecd902be5bb296cb7909f69876b174 SHA1 98489b9221d1c5c59f17f2e7d8139402994f1cd3 SHA256 0413b1c5f9c3caebe6bb19d225bd4fd2b9d4e17ebaf927affc54e8f3bae4b6e6 -MISC ChangeLog 552 RMD160 539d67b6c6d7843d4829cd3bbeac05de5f18f723 SHA1 698dd18ebabe0f7a121a1368ed0f7ba330b39520 SHA256 2ba4905d943214c019b866df1c1788dbfda09dd2f0ea72c731a759ea81e488e3 +EBUILD calckernel-3.4.10.903-r23.ebuild 4826 RMD160 10c135db68ecd902be5bb296cb7909f69876b174 SHA1 98489b9221d1c5c59f17f2e7d8139402994f1cd3 SHA256 0413b1c5f9c3caebe6bb19d225bd4fd2b9d4e17ebaf927affc54e8f3bae4b6e6 +MISC ChangeLog 766 RMD160 85b562c1090402a7f97d753ada3653e0a93d713f SHA1 bbe2a3f4b9023af607e2138b5d5cf89ef94f0c76 SHA256 03b5269b23d420c90462ca7fc6f50523c6bf105f4320156b1e03efd0dcf354a4 MISC metadata.xml 332 RMD160 7baff74f671fb7762513694b3d1694923b851b79 SHA1 72a7b3811a232e0506a65bdeb622f11abae0a04c SHA256 629337dd254d66431dd8752f97f1981de237cf1ca44a0eefc3a7cb8e667d7458 diff --git a/sys-kernel/calckernel/calckernel-3.4.10.903-r23.ebuild b/sys-kernel/calckernel/calckernel-3.4.10.903-r23.ebuild new file mode 100644 index 000000000..c143115b1 --- /dev/null +++ b/sys-kernel/calckernel/calckernel-3.4.10.903-r23.ebuild @@ -0,0 +1,140 @@ +# Copyright 1999-2010 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-kernel/genkernel/genkernel-3.4.10.903.ebuild,v 1.1 2009/01/05 22:31:16 agaffney Exp $ + +# genkernel-9999 -> latest SVN +# genkernel-9999.REV -> use SVN REV +# genkernel-VERSION -> normal genkernel release + +VERSION_BUSYBOX='1.7.4' +VERSION_DMAP='1.02.22' +VERSION_DMRAID='1.0.0.rc14' +VERSION_E2FSPROGS='1.40.9' +VERSION_LVM='2.02.28' +VERSION_FUSE='2.7.4' +VERSION_UNIONFS_FUSE='0.22' + +MY_P=gen${P/#calc} +S=${WORKDIR}/${MY_P} + +MY_HOME="http://wolf31o2.org" +RH_HOME="ftp://sources.redhat.com/pub" +DM_HOME="http://people.redhat.com/~heinzm/sw/dmraid/src" +BB_HOME="http://www.busybox.net/downloads" + +COMMON_URI="${DM_HOME}/dmraid-${VERSION_DMRAID}.tar.bz2 + ${DM_HOME}/old/dmraid-${VERSION_DMRAID}.tar.bz2 + ${RH_HOME}/lvm2/LVM2.${VERSION_LVM}.tgz + ${RH_HOME}/lvm2/old/LVM2.${VERSION_LVM}.tgz + ${RH_HOME}/dm/device-mapper.${VERSION_DMAP}.tgz + ${RH_HOME}/dm/old/device-mapper.${VERSION_DMAP}.tgz + ${BB_HOME}/busybox-${VERSION_BUSYBOX}.tar.bz2 + mirror://sourceforge/e2fsprogs/e2fsprogs-${VERSION_E2FSPROGS}.tar.gz + mirror://sourceforge/fuse/fuse-${VERSION_FUSE}.tar.gz + http://podgorny.cz/unionfs-fuse/releases/unionfs-fuse-${VERSION_UNIONFS_FUSE}.tar.bz2" + +if [[ ${PV} == 9999* ]] +then + [[ ${PV} == 9999.* ]] && ESVN_UPDATE_CMD="svn up -r ${PV/9999./}" + EGIT_REPO_URI="git://git.wolf31o2.org/projs/genkernel.git" + inherit git bash-completion eutils + S="${WORKDIR}" + SRC_URI="${COMMON_URI}" +else + inherit bash-completion eutils + SRC_URI="mirror://gentoo/${MY_P}.tar.bz2 + ${MY_HOME}/sources/genkernel/${MY_P}.tar.bz2 + ftp://ftp.calculate.ru/pub/calculate/calckernel/${MY_P}.tar.bz2 + ${COMMON_URI}" +fi + +DESCRIPTION="Gentoo automatic kernel building scripts" +HOMEPAGE="http://www.calculate-linux.org/main/ru/calckernel"$ + +LICENSE="GPL-2" +SLOT="0" +RESTRICT="" +# Please don't touch individual KEYWORDS. Since this is maintained/tested by +# Release Engineering, it's easier for us to deal with all arches at once. +#KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86" +KEYWORDS="alpha amd64 arm hppa ia64 ~mips ppc ppc64 s390 sparc x86" +#KEYWORDS="" +IUSE="ibm selinux" + +DEPEND="sys-fs/e2fsprogs + selinux? ( sys-libs/libselinux ) + !sys-kernel/genkernel" +RDEPEND="${DEPEND} app-arch/cpio" + +src_unpack() { + if [[ ${PV} == 9999* ]] ; then + git_src_unpack + else + unpack ${MY_P}.tar.bz2 + fi + use selinux && sed -i 's/###//g' "${S}"/gen_compile.sh + cd ${S} + epatch "${FILESDIR}"/${PF}.patch +} + +src_install() { + # This block updates genkernel.conf + sed -e "s:VERSION_DMAP:$VERSION_DMAP:" \ + -e "s:VERSION_DMRAID:$VERSION_DMRAID:" \ + -e "s:VERSION_E2FSPROGS:$VERSION_E2FSPROGS:" \ + -e "s:VERSION_LVM:$VERSION_LVM:" \ + -e "s:VERSION_BUSYBOX:$VERSION_BUSYBOX:" \ + -e "s:VERSION_FUSE:$VERSION_FUSE:" \ + -e "s:VERSION_UNIONFS_FUSE:$VERSION_UNIONFS_FUSE:" \ + "${S}"/genkernel.conf > "${T}"/genkernel.conf \ + || die "Could not adjust versions" + insinto /etc + doins "${T}"/genkernel.conf || die "doins genkernel.conf" + + doman genkernel.8 || die "doman" + dodoc AUTHORS ChangeLog README TODO || die "dodoc" + + dobin genkernel || die "dobin genkernel" + + rm -f genkernel genkernel.8 AUTHORS ChangeLog README TODO genkernel.conf + + insinto /usr/share/genkernel + doins -r "${S}"/* || die "doins" + use ibm && cp "${S}"/ppc64/kernel-2.6-pSeries "${S}"/ppc64/kernel-2.6 || \ + cp "${S}"/arch/ppc64/kernel-2.6.g5 "${S}"/arch/ppc64/kernel-2.6 + + # Copy files to /var/cache/genkernel/src + elog "Copying files to /var/cache/genkernel/src..." + mkdir -p "${D}"/var/cache/genkernel/src + cp -f \ + "${DISTDIR}"/dmraid-${VERSION_DMRAID}.tar.bz2 \ + "${DISTDIR}"/LVM2.${VERSION_LVM}.tgz \ + "${DISTDIR}"/device-mapper.${VERSION_DMAP}.tgz \ + "${DISTDIR}"/e2fsprogs-${VERSION_E2FSPROGS}.tar.gz \ + "${DISTDIR}"/busybox-${VERSION_BUSYBOX}.tar.bz2 \ + "${DISTDIR}"/fuse-${VERSION_FUSE}.tar.gz \ + "${DISTDIR}"/unionfs-fuse-${VERSION_UNIONFS_FUSE}.tar.bz2 \ + "${D}"/var/cache/genkernel/src || die "Copying distfiles..." + + dobashcompletion "${FILESDIR}"/genkernel.bash +} + +pkg_postinst() { + echo + elog 'Documentation is available in the genkernel manual page' + elog 'as well as the following URL:' + echo + elog 'http://www.gentoo.org/doc/en/genkernel.xml' + echo + ewarn "This package is known to not work with reiser4. If you are running" + ewarn "reiser4 and have a problem, do not file a bug. We know it does not" + ewarn "work and we don't plan on fixing it since reiser4 is the one that is" + ewarn "broken in this regard. Try using a sane filesystem like ext3 or" + ewarn "even reiser3." + echo + ewarn "The LUKS support has changed from versions prior to 3.4.4. Now," + ewarn "you use crypt_root=/dev/blah instead of real_root=luks:/dev/blah." + echo + + bash-completion_pkg_postinst +} diff --git a/sys-kernel/calckernel/files/calckernel-3.4.10.903-r23.patch b/sys-kernel/calckernel/files/calckernel-3.4.10.903-r23.patch new file mode 100644 index 000000000..8905278dd --- /dev/null +++ b/sys-kernel/calckernel/files/calckernel-3.4.10.903-r23.patch @@ -0,0 +1,381 @@ +diff --git a/arch/x86/modules_load b/arch/x86/modules_load +index 2e93dce..a6db29d 100644 +--- a/arch/x86/modules_load ++++ b/arch/x86/modules_load +@@ -22,5 +22,5 @@ MODULES_PCMCIA="pcmcia pcmcia_core yenta_socket pd6729 i82092 i82365 tcic ds ide + MODULES_USB="ehci-hcd uhci usb-ohci hid usb-storage uhci-hcd ohci-hcd usbhid sl811-hcd" + + # Filesystems +-MODULES_FS="ext2 ext3 reiserfs jfs nfs xfs fuse" ++MODULES_FS="ext2 ext3 ext4 reiserfs jfs nfs xfs fuse" + +diff --git a/arch/x86_64/modules_load b/arch/x86_64/modules_load +index 67b9a48..857f1a3 100644 +--- a/arch/x86_64/modules_load ++++ b/arch/x86_64/modules_load +@@ -22,4 +22,4 @@ MODULES_PCMCIA="pcmcia pcmcia_core yenta_socket pd6729 i82092 i82365 tcic ds ide + MODULES_USB="ehci-hcd uhci usb-ohci hid usb-storage uhci-hcd ohci-hcd usbhid sl811-hcd" + + # Filesystems +-MODULES_FS="ext2 ext3 reiserfs jfs nfs xfs fuse" ++MODULES_FS="ext2 ext3 ext4 reiserfs jfs nfs xfs fuse" +diff --git a/defaults/initrd.defaults b/defaults/initrd.defaults +index a417144..92e9d2d 100755 +--- a/defaults/initrd.defaults ++++ b/defaults/initrd.defaults +@@ -68,6 +68,7 @@ fi + + REAL_ROOT='' + CDROOT='0' ++SCRATCH='0' + CDROOT_DEV='' + CDROOT_TYPE='auto' + NEW_ROOT='/newroot' +diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts +index beec6de..8900804 100755 +--- a/defaults/initrd.scripts ++++ b/defaults/initrd.scripts +@@ -169,21 +169,45 @@ cache_cd_contents() { + # TODO: Check the size of the image versus the size of our tmpfs + # along with the amount of available RAM and increase tmpfs size + # if necessary. (Not having awk sucks...) +- # z=0 +- # for i in $(cat /proc/meminfo | grep -e ^MemFree -e ^Cached | \ +- # cut -d: -f2 | cut -dk -f1 | sed -e "s/^\s*//") ; do +- # z=$(($z + $i)) ; done +- # echo $z +- good_msg "Copying loop file for caching..." +- cp -a ${NEW_ROOT}/mnt/cdrom/${LOOP} ${NEW_ROOT}/mnt/${LOOP} +- if [ $? -ne 0 ] ++ ++ # getting memory ++ allmemory=0 ++ for i in $(cat /proc/meminfo | grep -e ^MemFree -e ^Cached | \ ++ cut -d: -f2 | cut -dk -f1 | sed -e "s/^\s*//") ; ++ do ++ allmemory=$(($allmemory + $i)) ++ done ++ ++ # getting size tmpfs of default ++ let curtfs=$allmemory/2 ++ ++ # getting size of image ++ let imagesize=`ls -la ${NEW_ROOT}/mnt/cdrom/${LOOP} | sed -r -n 's/(\S*\s*){4}(\S*).*/\2/p'`/20000*21 ++ let addon=$imagesize/10 ++ if [[ $curtfs -gt $(( ${imagesize} + ${addon} )) ]]; ++ then ++ let addon=$(( $curtfs - ${imagesize} )) ++ fi ++ ++ if [[ $((${imagesize} + $addon)) -lt ${allmemory} ]]; + then +- bad_msg "Failed to cache the loop file! Lack of space?" +- rm -rf ${NEW_ROOT}/mnt/livecd.* 2>/dev/null +- rm -rf ${NEW_ROOT}/mnt/image.* 2>/dev/null +- rm -rf ${NEW_ROOT}/mnt/zisofs 2>/dev/null ++ mount -o remount,size=${addon}000 -t tmpfs tmpfs ${NEW_ROOT} ++ mkdir ${NEW_ROOT}/mnt/squash ++ mount -o size=${imagesize}000 -t tmpfs tmpfs ${NEW_ROOT}/mnt/squash ++ good_msg "Copying loop file for caching..." ++ cp -a ${NEW_ROOT}/mnt/cdrom/${LOOP} ${NEW_ROOT}/mnt/squash/${LOOP} ++ if [ $? -ne 0 ] ++ then ++ bad_msg "Failed to cache the loop file! Lack of space?" ++ umount ${NEW_ROOT}/mnt/squash ++ mount -o remount,size=${curtfs}000 -t tmpfs tmpfs ${NEW_ROOT} ++ else ++ LOOPEXT='../squash/' ++ good_msg "Unmounting media from ${NEW_ROOT}/mnt/cdrom" ++ umount ${NEW_ROOT}/mnt/cdrom ++ fi + else +- LOOPEXT='../' ++ bad_msg "Too low memory for cache the loop file." + fi + fi + fi +@@ -950,6 +974,38 @@ getdvhoff() { + echo $(( $(hexdump -n 4 -s $((316 + 12 * $2)) -e '"%i"' $1) * 512)) + } + ++load_union_module() { ++ UNIONTYPE="" ++ # find module for union file system ++ [ -n "$(find /lib/ -name unionfs.ko)" ] && UNIONTYPE="unionfs" ++ [ -n "$(find /lib/ -name aufs.ko)" ] && UNIONTYPE="aufs" ++ # probably aufs in kernel ++ if [ -n "$(gzip -dc /proc/config.gz | grep CONFIG_AUFS_FS=y )" ] ++ then ++ UNIONTYPE="aufs" ++ else ++ if [ -z "${UNIONTYPE}" ] ++ then ++ bad_msg "Module for union file system is not found!" ++ run_shell ++ else ++ modprobe ${UNIONTYPE} > /dev/null 2>&1 ++ # error on load union module ++ if [ -z "$(lsmod | grep $UNIONTYPE)" ] ++ then ++ bad_msg "Module for union file system is not correct!" ++ if [[ ${UNIONTYPE} = aufs ]] ++ then ++ bad_msg "Probably kernel compiled without standalone patch." ++ fi ++ run_shell ++ fi ++ ++ good_msg "Loading ${UNIONTYPE}" ++ fi ++ fi ++} ++ + setup_unionfs() { + local rw_dir=$1 + local ro_dir=$2 +@@ -969,6 +1025,7 @@ setup_unionfs() { + mkdir -p ${UNION} + good_msg "Loading fuse module" + modprobe fuse > /dev/null 2>&1 ++ load_union_module + # if [ -n "${UNIONFS}" ] + # then + # CHANGESDEV=${UNIONFS} +@@ -998,10 +1055,101 @@ setup_unionfs() { + mkdir /tmp + mkdir -p ${UNION} + # mkdir -p $CHANGES +-# mount -t unionfs -o dirs=$CHANGES=rw unionfs ${UNION} ++## mount -t unionfs -o dirs=$CHANGES=rw unionfs ${UNION} ++ ++ if [ "${SCRATCH}" -ne 0 ]; ++ then ++ good_msg "Loading in scratch mode" ++ BUILDERDIR=${UNION}/mnt/builder ++ SCRATCHDIR=${UNION}/mnt/scratch ++ DELTADIR=${rw_dir}/mnt/delta ++ WORKSPACEDIR=${rw_dir}/mnt/workspace ++ mount -o remount,rw ${rw_dir}/mnt/cdrom >/dev/null 2>&1 ++ touch ${rw_dir}/mnt/cdrom/livecd >/dev/null 2>&1 ++ if [ "$?" -ne 0 ]; ++ then ++ ISRW=0 ++ else ++ ISRW=1 ++ fi ++ ++ mkdir -p ${DELTADIR} ++ mkdir -p ${WORKSPACEDIR} ++ if [[ ${UNIONTYPE} = aufs ]] ++ then ++ if ! mount -t aufs -o udba=reval,br:${WORKSPACEDIR}=rw:${DELTADIR}=ro+wh:${rw_dir}/mnt/livecd=ro none ${UNION} ++ then ++ bad_msg "Can't setup union mount!" ++ run_shell ++ fi ++ else ++ mount -t unionfs -o dirs=${WORKSPACEDIR}=rw:${DELTADIR}=ro:${rw_dir}/mnt/livecd=ro unionfs ${UNION} ++ fi ++ tmpret=$?;[ "$tmpret" -ne 0 ] && ret=$tmpret ++ mkdir -p ${SCRATCHDIR}/calculate ++ mkdir -p ${SCRATCHDIR}/delta ++ mkdir -p ${SCRATCHDIR}/workspace ++ mount -o bind ${rw_dir}/mnt/delta ${SCRATCHDIR}/delta ++ tmpret=$?;[ "$tmpret" -ne 0 ] && ret=$tmpret ++ mount -o bind ${rw_dir}/mnt/workspace ${SCRATCHDIR}/workspace ++ tmpret=$?;[ "$tmpret" -ne 0 ] && ret=$tmpret ++ mkdir -p ${BUILDERDIR} ++ if [[ ${UNIONTYPE} = aufs ]] ++ then ++ if ! mount -t aufs -o udba=reval,br:${DELTADIR}=rw:${rw_dir}/mnt/livecd=ro none ${BUILDERDIR} ++ then ++ bad_msg "Can't setup union mount!" ++ run_shell ++ fi ++ else ++ mount -t unionfs -o dirs=${DELTADIR}=rw:${rw_dir}/mnt/livecd=ro unionfs ${BUILDERDIR} ++ fi ++ tmpret=$?;[ "$tmpret" -ne 0 ] && ret=$tmpret ++ mount -o bind ${rw_dir}/mnt/livecd ${SCRATCHDIR}/calculate ++ tmpret=$?;[ "$tmpret" -ne 0 ] && ret=$tmpret ++ if [ "$ISRW" -ne 0 ]; ++ then ++ FLASHDIR=${UNION}/mnt/flash ++ mkdir -p ${FLASHDIR} ++ mount -o bind ${rw_dir}/mnt/cdrom ${FLASHDIR} ++ tmpret=$?;[ "$tmpret" -ne 0 ] && ret=$tmpret ++ else ++ CDROMDIR=${UNION}/mnt/cdrom ++ mkdir -p ${CDROMDIR} ++ mount -o bind ${rw_dir}/mnt/cdrom ${CDROMDIR} ++ tmpret=$?;[ "$tmpret" -ne 0 ] && ret=$tmpret ++ fi ++ else ++ CDROMDIR=${UNION}/mnt/cdrom ++ LIVECDDIR=${UNION}/mnt/livecd ++ ++ if [[ ${UNIONTYPE} = aufs ]] ++ then ++ if ! mount -t aufs -o udba=reval,br:${rw_dir}:${ro_dir}=ro none ${UNION} ++ then ++ bad_msg "Can't setup union mount!" ++ run_shell ++ fi ++ else ++ mount -t unionfs -o dirs=${rw_dir}:${ro_dir}=ro unionfs ${UNION} ++ fi ++ ++ if [[ -n "$( echo ${LOOPEXT} | grep squash )" ]]; ++ then ++ mkdir -p ${UNION}/mnt/squash ++ mount -o bind ${NEW_ROOT}/mnt/squash ${UNION}/mnt/squash ++ fi ++ ++ chmod 0755 ${UNION} ++ mount -o bind ${rw_dir}/mnt/cdrom ${CDROMDIR} ++ mount -o bind ${rw_dir}/mnt/livecd ${LIVECDDIR} ++ ret=$? ++ fi ++ ++ chmod 1777 ${UNION}/tmp + good_msg "Creating union mount" +- unionfs -o allow_other,cow,noinitgroups,suid,dev ${rw_dir}=RW:${ro_dir}=RO ${UNION} 2>/dev/null +- ret=$? ++# unionfs -o allow_other,cow,noinitgroups,suid,dev,default_permissions,use_ino ${rw_dir}=RW:${ro_dir}=RO ${UNION} 2>/dev/null ++# ret=$? + if [ "${ret}" -ne 0 ] + then + bad_msg "Can't setup union mount!" +diff --git a/defaults/linuxrc b/defaults/linuxrc +index d506f83..538b29b 100755 +--- a/defaults/linuxrc ++++ b/defaults/linuxrc +@@ -62,6 +62,10 @@ do + init_opts\=*) + INIT_OPTS=`parse_opt "${x}"` + ;; ++ # Scratch usbload ++ scratch) ++ SCRATCH=1 ++ ;; + # Livecd options + cdroot) + CDROOT=1 +@@ -465,9 +469,50 @@ do + then + break + else +- bad_msg "The filesystem mounted at ${REAL_ROOT} does not appear to be a valid /, try again" +- got_good_root=0 +- REAL_ROOT='' ++ # check for scratch ++ if [ -e ${NEW_ROOT}/livecd.squashfs -a -d ${NEW_ROOT}/delta -a -d ${NEW_ROOT}/workspace ]; ++ then ++ good_msg 'Found scratch data...' ++ load_union_module ++ modprobe squashfs >/dev/null ++ if mount -o remount,rw ${NEW_ROOT}; ++ then ++ mkdir -p ${NEW_ROOT}/calculate && mkdir -p /union && mkdir -p ${NEW_ROOT}/workspace/mnt/builder && mkdir -p ${NEW_ROOT}/workspace/mnt/scratch ++ if mount -o loop,ro -t squashfs ${NEW_ROOT}/livecd.squashfs ${NEW_ROOT}/calculate; ++ then ++ if [[ ${UNIONTYPE} = aufs ]] ++ then ++ if mount -t aufs -o ro,udba=reval,br:${NEW_ROOT}/workspace=rw:${NEW_ROOT}/delta=ro+wh:${NEW_ROOT}/calculate=ro none /union; ++ then ++ mount -t aufs -o ro,udba=reval,br:${NEW_ROOT}/delta=rw:${NEW_ROOT}/calculate=ro none /union/mnt/builder ++ CHROOT=/union ++ break; ++ else ++ bad_msg 'Could not merge scratch layers!' ++ run_shell ++ fi ++ else ++ if mount -t unionfs -o ro,dirs=${NEW_ROOT}/workspace:${NEW_ROOT}/delta=ro:${NEW_ROOT}/calculate=ro unionfs /union; ++ then ++ mount -t unionfs -o ro,dirs=${NEW_ROOT}/delta:${NEW_ROOT}/calculate=ro unionfs /union/mnt/builder ++ CHROOT=/union ++ break; ++ else ++ bad_msg 'Could not merge scratch layers' ++ run_shell ++ fi ++ fi ++ else ++ bad_msg 'Could not mount scratch squashfs image' ++ fi ++ else ++ bad_msg 'Could not remount ${NEW_ROOT}' ++ fi ++ else ++ bad_msg "The filesystem mounted at ${REAL_ROOT} does not appear to be a valid /, try again" ++ got_good_root=0 ++ REAL_ROOT='' ++ fi + fi + else + bad_msg "Could not mount specified ROOT, try again" +diff --git a/gen_cmdline.sh b/gen_cmdline.sh +index a1ca537..66b2462 100755 +--- a/gen_cmdline.sh ++++ b/gen_cmdline.sh +@@ -19,6 +19,7 @@ longusage() { + echo " --logfile= Output file for debug info" + echo " --color Output debug in color" + echo " --no-color Do not output debug in color" ++ echo " --no-cleartmp Do not clear temp directory" + echo " Kernel Configuration settings" + echo " --menuconfig Run menuconfig after oldconfig" + echo " --no-menuconfig Do not run menuconfig after oldconfig" +@@ -426,6 +427,10 @@ parse_cmdline() { + print_info 2 "USECOLOR: ${USECOLOR}" + setColorVars + ;; ++ --no-cleartmp) ++ NOCLEARTMP=1 ++ print_info 2 "NOCLEARTMP: ${NOCLEARTMP}" ++ ;; + --logfile=*) + CMD_LOGFILE=`parse_opt "$*"` + LOGFILE=`parse_opt "$*"` +diff --git a/gen_compile.sh b/gen_compile.sh +index 40ba84e..879ce53 100755 +--- a/gen_compile.sh ++++ b/gen_compile.sh +@@ -381,7 +381,10 @@ compile_busybox() { + yes '' 2>/dev/null | compile_generic oldconfig utils + + print_info 1 'busybox: >> Compiling...' ++ OLDLOGLEVEL=$LOGLEVEL ++ LOGLEVEL=1 + compile_generic all utils ++ LOGLEVEL=$OLDLOGLEVEL + print_info 1 'busybox: >> Copying to cache...' + [ -f "${TEMP}/${BUSYBOX_DIR}/busybox" ] || + gen_die 'Busybox executable does not exist!' +diff --git a/genkernel b/genkernel +index f74846e..fc3a56e 100755 +--- a/genkernel ++++ b/genkernel +@@ -8,6 +8,7 @@ GK_V='3.4.10.902' + TMPDIR='/var/tmp/genkernel' + + TODEBUGCACHE=1 # Until an error occurs or LOGFILE is fully qualified. ++NOCLEARTMP=0 + + small_die() { + echo $1 +@@ -54,8 +55,12 @@ trap_cleanup(){ + } + + cleanup(){ ++ if [[ ${NOCLEARTMP} -ne 0 ]] ++ then ++ return ++ fi + if [ -n "$TEMP" -a -d "$TEMP" ]; then +- rm -rf "$TEMP" ++ rm -rf "$TEMP" &>/dev/null + fi + + if isTrue ${POSTCLEAR}