#!/bin/sh

# copyright 2004 vagrant@freegeek.org, distributed under the terms of the
# GNU General Public License version 2 or any later version.

if [ -r /etc/lessdisks/mkinitrd/initrd-netboot.conf ]; then
  . /etc/lessdisks/mkinitrd/initrd-netboot.conf
fi

CONFDIR="/etc/lessdisks/mkinitrd"

script_dir="$CONFDIR/install_scripts/"

if [ -z "$INITRDDIR" ]; then
  echo "INITRDDIR not defined, exiting..."
  exit 1
fi

if [ ! -d "$script_dir" ]; then
  echo "no script directory found! $script_dir"
  exit 1
fi

mkdir -p $INITRDDIR/scripts/
for script in $script_dir/* ; do
  cp -a $script $INITRDDIR/scripts/
done

# set defaults for exe and files
if [ -z "$initrd_exe" ]; then
  initrd_exe="/usr/bin/cut /sbin/ifconfig /bin/grep /usr/bin/head /usr/bin/tr /sbin/route /sbin/udhcpc" 
fi
if [ -z "$initrd_files" ]; then
  initrd_files="/dev/ttyS0 /dev/console /etc/lessdisks/mkinitrd/network_script /etc/lessdisks/mkinitrd/initrd-netboot.conf"
fi

# TODO copy and install module dependencies 

for a in $initrd_exe $initrd_files ; do
  # need -a in case device nodes are used.
  mkdir -p "$(dirname $INITRDDIR/$a)"
  cp -a $a $INITRDDIR/$a
done

# ldd resolution code taken from /usr/share/initrd-tools/e2fsprogs
for i in `ldd $initrd_exe | sort -u | awk '{print $3}'` 
do
	mkdir -p `dirname $INITRDDIR/$i`
	cp $i $INITRDDIR/$i
done

if [ -z "$MODULEDIR" ]; then
  echo "MODULEDIR not defined, exiting..."
  exit 1
fi

if [ -r "$MODULEDIR/modules.dep" ]; then
  modules_dep_file="$MODULEDIR/modules.dep"
fi

if [ -z "$modules_dep_file" ]; then
  modules_dep_file="/lib/modules/$(uname -r)/modules.dep"
fi

# TODO use "modprobe -nv $module" instead of module dependencies in variables

for m in $nic_modules $nic_dep_modules $net_modules ; do
  module=$(egrep "/$m.o:|/$m.ko:" $modules_dep_file | cut -d : -f 1)
  if [ -n "$module" ]; then
    install_modules="$install_modules $module"
  fi
done
# copy found modules into initrd dir
for m in $install_modules ; do
  if [ -r "$m" ]; then
    mdir="$(dirname $m)"   
    mkdir -p "$INITRDDIR/$mdir"
    cp -a $m $INITRDDIR/$m
  fi
done
