#! /usr/bin/sh

# Settings from /etc/sysconfig/filename are available as environment vars
# with the name 'SYS__FILENAME__KEY' (filename converted to upper case).
#
# Not all files are parsed, current list is:
#   bootloader, language
#

# usage: add-kernel KERNEL-VERSION [KERNEL-FILE [INITRD-FILE]]
#
# Add kernel/initrd to boot config.

err=0
if [ -x /usr/bin/kernel-install ] ; then
  version="$1"
  kernel="$2"
  initrd="$3"

  if [ -z "$kernel" ] ; then
    for i in vmlinuz Image image vmlinux ; do
      if [ -f "/boot/$i-$version" -a -f "/boot/initrd-$version" ] ; then
        kernel="/boot/$i-$version"
        initrd="/boot/initrd-$version"
        break
      elif [ -f "/usr/lib/modules/$version/$i" ] ; then
        kernel="/usr/lib/modules/$version/$i"
        break
      fi
    done
  elif [ "$kernel" = "${kernel#/}" -a -f "/boot/$kernel" ] ; then
    kernel="/boot/$kernel"
  fi

  if [ -z "$kernel" ] ; then
    echo "kernel version \"$version\" not found"
    exit 2
  fi

  if [ -z "$initrd" ] ; then
    if [ "$kernel" != "${kernel#/}" ] ; then
      dir=$(dirname "$kernel")
      k=$(basename "$kernel")
      i=initrd-${k#*-}
      if [ -f "$dir/$i" ] ; then
        initrd="$dir/$i"
      fi
    fi
  elif [ "$initrd" = "${initrd#/}" -a -f "/boot/$initrd" ] ; then
    initrd="/boot/$initrd"
  fi

  ( set -x ; kernel-install add $version $kernel $initrd ) || err=1
else
  echo "kernel-install: command not found"
  err=1
fi

exit $err
