#!/bin/bash
# simplified kernel pet stuff
# sourced by 3builddistro-Z
#
# .. inside sandbox3

test -f ../_00build.conf && source ../_00build.conf
test -f ../DISTRO_SPECS && source ../DISTRO_SPECS
test -z $MKSQUASHFS && setvar MKSQUASHFS = 'mksquashfs'
test -z $ZDRVSFS && setvar ZDRVSFS = ""zdrv_${DISTRO_FILE_PREFIX}_${DISTRO_VERSION}.sfs""

shell {
	cd ..
	case (KERNEL_TARBALL_URL) { *.pet|*.deb|*.txz|*.tgz {
		mkdir -p ../local-repositories/kernel_pkgs
		ln -sf ../local-repositories/kernel_pkgs kernel_pkgs 2>/dev/null
		if test ! -f kernel_pkgs/${KERNEL_TARBALL_URL##*/}  {
			echo -e "\nDownloading kernel pkg..."
			wget -P kernel_pkgs -c ${WGET_SHOW_PROGRESS} $KERNEL_TARBALL_URL
		} }
	}
}

setvar KERNELPKG = ${KERNEL_TARBALL_URL##*/} #basename

if test ! -f ../kernel_pkgs/${KERNELPKG}  {
	echo "file not found: ../kernel_pkgs/${KERNELPKG}"
	exit 1
}

case (KERNELPKG) {
	*.pet|*.txz|*.tgz { setvar cmd = ''tar --list -f'' }
	*.deb { setvar cmd = ''dpkg-deb --contents'' }
}
setvar KERNELVER = "$($cmd ../kernel_pkgs/${KERNELPKG} 2>/dev/null | grep -o '/lib/modules/[23456789]\..*' | head -n 1 | cut -f 4 -d '/)" #120502 hide error msg.

setvar dotnum = "$(echo -n $KERNELVER | sed -e 's%[^\.]%%g' | wc -c)"
setvar SUB_KERNELVER = $(echo -n $KERNELVER | cut -f 1 -d '-' | cut -f 3 -d '.)
setvar MAJ_KERNELVER = $(echo -n $KERNELVER | cut -f 1 -d '-' | cut -f 1 -d '.) #111014 2 or 3.
#allow only 2.6.29 kernel+, mksquashfs v4.0...
if test $MAJ_KERNELVER = "2" -a $SUB_KERNELVER != "" -a $SUB_KERNELVER -lt 29  {
	echo "ERROR: only kernel 2.6.29+ allowed "
	exit 1
}

echo "You have chosen $KERNELPKG, which is version $KERNELVER."

#now do the kernel...
rm -rf zdrv
mkdir -p zdrv
echo
case (KERNELPKG) {
	*.pet {
		rm -f $KERNELPKG
		setvar KERNPKGNAMEONLY = "$(basename $KERNELPKG .pet)"
		rm -rf $KERNPKGNAMEONLY
		cp ../kernel_pkgs/${KERNELPKG} ./
		pet2tgz $KERNELPKG
		tar -xf $KERNPKGNAMEONLY.tar.?z
		rm -rf zdrv/
		mv -f $KERNPKGNAMEONLY zdrv/
		}
	#*.txz|*.tgz) #TODO
	*.deb {
		dpkg-deb -x ../kernel_pkgs/${KERNELPKG} zdrv 1>/dev/null
		}
}

mv -f zdrv/etc/modules/firmware.dep zdrv/etc/modules/firmware.dep.${KERNELVER}

#130613 kmod depmod wants these two... they are moved in later, but do it here also...
mkdir -p zdrv/lib/modules/$KERNELVER
test -f zdrv/etc/modules/modules.builtin && cp -a -f zdrv/etc/modules/modules.builtin zdrv/lib/modules/$KERNELVER/
test -f zdrv/etc/modules/modules.order && cp -a -f zdrv/etc/modules/modules.order zdrv/lib/modules/$KERNELVER/

cp -a zdrv/boot/System.map* ./System.map 2>/dev/null

setvar USINGKMOD = ''no''
test $(grep '^kmod' ../woof-installed-packages) != "" && setvar USINGKMOD = ''yes''
if test $USINGKMOD = "no"{
 if test ! -f zdrv/lib/modules/$KERNELVER/modules.dep{
  busybox depmod -b zdrv -F System.map $KERNELVER
 }
} else {
 cp -f ../boot/kmod ./
 ln -snf kmod depmod
 if test ! -f zdrv/lib/modules/$KERNELVER/modules.dep{
  ./depmod -b zdrv -F System.map $KERNELVER
 }
}

#echo "deleting big modem modules..."
for BIGMODS in agr hcf hsf intel5 Intel5 esscom pctel
{
  for ONEBIGMOD in `find zdrv/lib/modules/${KERNELVER}/ -type f -name ${BIGMODS}*.ko -o -name ${BIGMODS}*HIDE` #101222
  {
   setvar BIGMODNAME = "$(basename $ONEBIGMOD)"
   echo -n "deleting $BIGMODNAME "
   test -f $ONEBIGMOD && rm -f $ONEBIGMOD
  }
}
rm -rf zdrv/lib/modules/all-firmware/hsfmodem* 2>/dev/null
rm -rf zdrv/lib/modules/all-firmware/hcfpcimodem* 2>/dev/null
rm -rf zdrv/lib/modules/all-firmware/intel536ep* 2>/dev/null
rm -rf zdrv/lib/modules/all-firmware/intel537* 2>/dev/null

if test $USINGKMOD = "no"{ #130418
 #cp -f ../boot/depmod ./
 busybox depmod -b zdrv -F System.map $KERNELVER
} else {
 cp -f ../boot/kmod ./kmod
 ln -snf kmod depmod
 ./depmod -b zdrv -F System.map $KERNELVER
}
sync

# move aufs-utils to zdrv
for r in auibusy auplink mount.aufs umount.aufs aufs libau.so* aufs aufs.5 aubrsync aubusy auchk
{
	find rootfs-complete/ -type f -name $r | sed 's|^rootfs-complete/||' | \
	while read f {
		setvar dir = "zdrv/$(dirname $f)"
		mkdir -p $dir
		mv -f rootfs-complete/${f} $dir
	}
}

mv zdrv/boot/vmlinuz* build/vmlinuz

sync
#==========================================
${MKSQUASHFS} zdrv ${ZDRVSFS} ${COMPCHOICE}
#==========================================

sync
chmod 644 ${ZDRVSFS}

mv -f ${ZDRVSFS} build/

rm -rf rootfs-complete/boot 2>/dev/null
rm -rf rootfs-complete/lib/modules 2>/dev/null

### END ###