# this hook is called before mkinitramfs is called

. /etc/tcos/tcos.conf
. /usr/share/initramfs-tools/hook-functions
. $TCOS_DIR/tcos-generation-functions.sh

_verbose "(clean_initramfs) Cleaning initramfs..."


if [ "${DESTDIR}" = "" ] || [ "$DESTDIR" = "/" ] || [ ! -d "$DESTDIR/scripts" ]; then
  _echo "  * ERROR: DESTDIR var not set. not cleaning initramfs..."
  exit 1
fi

find $DESTDIR/etc/ -name "*dpkg-old" | xargs rm -f

# clean ORDER files, TCOS use numbers
rm -f $DESTDIR/scripts/*/ORDER
cat << EOF >> $DESTDIR/scripts/functions
cache_run_scripts()
{
return
}

EOF

# replace /bin/sh => /bin/busybox
rm -f $DESTDIR/bin/sh
(cd $DESTDIR/bin && ln -s busybox sh)

create_links() {
  if [ "$2" = "force" ]; then
    ( cd $DESTDIR/bin && rm -f "$1" ; ln -s busybox "$1")
    return
  fi
  [ ! -e "$DESTDIR/bin/$1" ] && return
  if cmp "$DESTDIR/bin/$1" "$DESTDIR/bin/busybox" >/dev/null 2>&1 ; then
    ( cd $DESTDIR/bin && rm -f "$1" ; ln -s busybox "$1")
  else
    echo " * bin/$1 no busybox"
  fi
}

# Some scripts without correct permissions
chmod -R a+x ${DESTDIR}/scripts/panic/ 2>/dev/null
chmod -R a+x ${DESTDIR}/scripts/init-*/
chmod -R a+x ${DESTDIR}/scripts/tcos-*/

# use busybox mount/umount instead of klibc utils
create_links "mount" "force"
create_links "umount" "force"
create_links "dmesg" "force"


create_links "date"
create_links "bash"
create_links "tftp"
create_links "awk"
create_links "dirname"
create_links "chown"
create_links "wc"
create_links "head"
create_links "whoami"
create_links "swapon"
create_links "swapoff"
create_links "route"
create_links "run-parts"
create_links "killall"
create_links "which"
create_links "pidof"
create_links "syslogd"
create_links "logger"
create_links "ulimit"
create_links "ifconfig"
create_links "grep" # needed by a udev rule
create_links "udhcpc"


create_links "["
create_links "[["
create_links "ar"
create_links "ash"
create_links "basename"
create_links "bunzip2"
create_links "bzcat"
create_links "bzip2"
create_links "cal"
create_links "chgrp"
create_links "chmod"
create_links "chvt"
create_links "clear"
create_links "cmp"
create_links "cp"
create_links "cttyhack"
create_links "cut"
create_links "dc"
create_links "deallocvt"
create_links "df"
create_links "diff"
create_links "dnsdomainname"
create_links "dos2unix"
create_links "du"
create_links "dumpkmap"
create_links "dumpleases"
create_links "echo"
create_links "egrep"
create_links "env"
create_links "expand"
create_links "expr"
create_links "fgrep"
create_links "find"
create_links "fold"
create_links "free"
create_links "ftpget"
create_links "ftpput"
create_links "getopt"
create_links "groups"
create_links "hexdump"
create_links "hostid"
create_links "hostname"
create_links "id"
create_links "ionice"
create_links "ipcalc"
create_links "last"
create_links "less"
create_links "logname"
create_links "lzcat"
create_links "lzma"
create_links "lzop"
create_links "lzopcat"
create_links "md5sum"
create_links "microcom"
create_links "mktemp"
create_links "more"
create_links "mt"
create_links "nc"
create_links "netstat"
create_links "nslookup"
create_links "usleep"
create_links "uudecode"
create_links "uuencode"
create_links "vi"
create_links "watch"
create_links "wget"
create_links "who"
create_links "xargs"
create_links "xz"
create_links "xzcat"
create_links "yes"
create_links "zcat"


create_links "od"
create_links "openvt"
create_links "patch"
create_links "ping"
create_links "ping6"
create_links "printf"
create_links "ps"
create_links "pwd"
create_links "realpath"
create_links "renice"
create_links "reset"
create_links "rev"
create_links "rm"
create_links "rmdir"
create_links "rpm"
create_links "rpm2cpio"
create_links "sed"
create_links "seq"
create_links "setkeycodes"
create_links "setsid"
create_links "sha1sum"
create_links "sha256sum"
create_links "sha512sum"
create_links "sort"
create_links "stat"
create_links "strings"
create_links "stty"
create_links "tac"
create_links "tail"
create_links "tar"
create_links "taskset"
create_links "tee"
create_links "telnet"
create_links "test"
create_links "time"
create_links "timeout"
create_links "top"
create_links "touch"
create_links "tr"
create_links "traceroute"
create_links "traceroute6"
create_links "tty"
create_links "uncompress"
create_links "unexpand"
create_links "uniq"
create_links "unix2dos"
create_links "unlzma"
create_links "unlzop"
create_links "unxz"
create_links "unzip"
create_links "uptime"

create_slinks() {
  if [ "$2" = "force" ]; then
    ( cd $DESTDIR/sbin && rm -f "$1" ; ln -s ../bin/busybox "$1")
    return
  fi
  [ ! -e "$DESTDIR/sbin/$1" ] && return
  if cmp "$DESTDIR/sbin/$1" "$DESTDIR/bin/busybox" >/dev/null 2>&1 ; then
   ( cd $DESTDIR/sbin && rm -f "$1" ; ln -s ../bin/busybox "$1")
  else
    echo " * sbin/$1 no busybox"
  fi
}


create_slinks "acpid" "force"
create_slinks "adjtimex"
create_slinks "arp"
create_slinks "arping"
create_slinks "blockdev"
create_slinks "brctl"
create_slinks "chroot"
create_slinks "depmod" "force"
create_slinks "devmem"
create_slinks "freeramdisk"
create_slinks "fstrim"
create_slinks "getty"
create_slinks "halt"
create_slinks "httpd"
create_slinks "ifconfig"
create_slinks "init"
create_slinks "insmod"
create_slinks "ip"
create_slinks "klogd"
create_slinks "loadfont"
create_slinks "loadkmap"
create_slinks "logread"
create_slinks "losetup"
create_slinks "lsmod"
create_slinks "mdev"
create_slinks "mkswap"
create_slinks "modinfo"
create_slinks "nameif"
create_slinks "pivot_root"
create_slinks "rdate"
create_slinks "route"
create_slinks "swapoff"
create_slinks "swapon"
create_slinks "switch_root"
create_slinks "sysctl"
create_slinks "syslogd"
create_slinks "udhcpc"
create_slinks "udhcpd"
create_slinks "vconfig"
create_slinks "watchdog"




# link creator
mkdir -p $DESTDIR/scripts/tcos-bottom
cat << EOF > $DESTDIR/scripts/tcos-bottom/00linkcreator
#!/bin/sh
if [ "\$1" = "prereqs" ]; then
  exit 0
fi

[ ! -e /conf/links ] && exit
cat /conf/links | while read line ; do
  ln -s \$line >> /tmp/initramfs.debug 2>&1
  echo "[linkcreator] ln -s \$line" >> /tmp/initramfs.debug
done

EOF
chmod +x $DESTDIR/scripts/tcos-bottom/00linkcreator

create_link() {
  if [ -e $DESTDIR/$1 ] && [ -e $DESTDIR/$2 ]; then
    if cmp $DESTDIR/$1 $DESTDIR/$2; then
      rm -f $DESTDIR/$1
      echo "$2 $1" >> $DESTDIR/conf/links
    fi
  fi
}

# mtools
create_link /usr/bin/mcopy /usr/bin/mattrib
create_link /usr/bin/mcopy /usr/bin/mcat
create_link /usr/bin/mcopy /usr/bin/mcopy
create_link /usr/bin/mcopy /usr/bin/mdel
create_link /usr/bin/mcopy /usr/bin/mformat
create_link /usr/bin/mcopy /usr/bin/minfo
create_link /usr/bin/mcopy /usr/bin/mlabel
create_link /usr/bin/mcopy /usr/bin/mmove
create_link /usr/bin/mcopy /usr/bin/mmount
create_link /usr/bin/mcopy /usr/bin/mtype


create_link "$LIB_MULTIARCH/libpci.so.3" /lib/libpci.so.3
create_link /usr/lib/libz.so.1 /lib/libz.so.1

create_link /etc/console/boottime.kmap.gz /etc/boottime.kmap.gz
create_link /usr/share/X11/xkb/symbols/sun_vndr/cz /usr/share/X11/xkb/symbols/sun_vndr/cs

create_link /usr/lib/xorg/modules/drivers/i810_drv.so /usr/lib/xorg/modules/drivers/intel_drv.so
create_link /usr/share/X11/xkb/rules/evdev.lst /usr/share/X11/xkb/rules/base.lst


create_link /sbin/mke2fs /sbin/mkfs.ext3
create_link /sbin/mke2fs /sbin/mkfs.ext4

#( cd $DESTDIR/bin && rm -f zcat ; ln -s gunzip zcat )
if [ -d $DESTDIR/lib/cmds ]; then
   ( cd $DESTDIR/lib/cmds && rm -f poweroff && ln -s reboot poweroff )
fi
( cd $DESTDIR/sbin && rm -f udevsettle ; ln -s udevadm udevsettle )




# zattoo provides libasound.so.2 link in /usr/lib/zattoo that breaks sound support
# move to their site
if [ -e $DESTDIR/usr/lib/zattoo/libasound.so.2 ]; then
  mv $DESTDIR/usr/lib/zattoo/libasound.so.2 $DESTDIR/usr/lib/libasound.so.2
  rmdir $DESTDIR/usr/lib/zattoo/
fi

if [ $TCOS_DISABLE_ACPI ] ; then

  #rm -rf $DESTDIR/bin/sh*
  #( cd ${DESTDIR}/bin/ && ln -s busybox sh )

  rm -rf $DESTDIR/scripts/usb*
  rm -rf $DESTDIR/scripts/live*
  rm -rf $DESTDIR/scripts/local*
  rm -rf $DESTDIR/scripts/casper*
  rm -rf $DESTDIR/scripts/nfs*
  rm -rf $DESTDIR/scripts/init-premount/thermal
  rm -rf $DESTDIR/sbin/mdadm
  rm -rf $DESTDIR/scripts/init-premount/mdadm
  rm -rf $DESTDIR/sbin/mdrun
  rm -rf $DESTDIR/sbin/vgchange
  rm -rf $DESTDIR/sbin/cryptsetup
  rm -rf $DESTDIR/sbin/dmsetup
  rm -rf $DESTDIR/lib/lvm*
  rm -rf ${DESTDIR}/lib/modules/${TCOS_KERNEL}/kernel/drivers/md/
  rm -rf ${DESTDIR}/lib/modules/${TCOS_KERNEL}/drivers/md/
  rm -rf ${DESTDIR}/lib/modules/${TCOS_KERNEL}/drivers/acpi/

#  rm -rf $(find ${DESTDIR}/lib/modules/${TCOS_KERNEL}/kernel/drivers/scsi/ \
#	-not -name "sd_mod.ko" -not -name "sr_mod.ko" \
#	-not -name "scsi_mod.ko" -not -name "sg.ko" )

  # new /init try to load always local and NFS
  touch $DESTDIR/scripts/local
  touch $DESTDIR/scripts/nfs

fi


if [ "$TCOS_DISABLE_USPLASH" = "1" ]; then
  #_echo "  * Remove usplash"
  rm -f ${DESTDIR}/lib/usplash 2>/dev/null
  rm -f ${DESTDIR}/sbin/usplash 2>/dev/null
  rm -f ${DESTDIR}/sbin/usplash_write 2>/dev/null
  rm -f ${DESTDIR}/scripts/init-top/*usplash* 2>/dev/null
fi

if [ "$TCOS_DISABLE_PLYMOUTH" = "1" ]; then
  rm -f ${DESTDIR}/scripts/*/plymouth 2>/dev/null
  rm -rf ${DESTDIR}/lib/plymouth 2>/dev/null
  rm -f ${DESTDIR}/sbin/plymouthd 2>/dev/null
  rm -f ${DESTDIR}/bin/plymouth 2>/dev/null
fi

# experimental delete, not needed LIBS
rm -f ${DESTDIR}/sbin/resume
#rm -f ${DESTDIR}/usr/lib/libgcrypt.so.11
#rm -f ${DESTDIR}/usr/lib/libpcre.so.3
#rm -f ${DESTDIR}/usr/lib/libgpg-error.so.0
rm -f ${DESTDIR}/usr/lib/libGL.so.1.2
rm -f ${DESTDIR}/usr/lib/libGLU.so.1
#rm -f ${DESTDIR}/usr/lib/libkrb5support.so.0
#rm -f ${DESTDIR}/usr/lib/libfusion-1.0.so.0
#rm -f ${DESTDIR}/usr/lib/libdrm.so.2
#rm -f ${DESTDIR}/usr/lib/libdirectfb-1.0.so.0
rm -f ${DESTDIR}/usr/lib/libnvidia-tls.so.1
#rm -f ${DESTDIR}/usr/lib/libdirect-1.0.so.0
#rm -f ${DESTDIR}/usr/lib/libk5crypto.so.3
#rm -f ${DESTDIR}/usr/lib/libkrb5.so.3
#rm -f ${DESTDIR}/usr/lib/libXxf86vm.so.1
#rm -f ${DESTDIR}/usr/lib/libglib-2.0.so.0
# no remove, needed for new lockscreen (imlib2)
#rm -f ${DESTDIR}/usr/lib/imlib2/loaders/png.so
#rm -f ${DESTDIR}/usr/lib/libgssapi_krb5.so.2
#rm -f ${DESTDIR}/lib/libsplashycnf.so.1
#rm -f ${DESTDIR}/lib/libkeyutils.so.1
#rm -f ${DESTDIR}/lib/libsplashy.so.1
rm -rf ${DESTDIR}/etc/dhcp3/gadmin-dhcpd


