#!/bin/sh

# our config file
. ../../mkinitrd-cd/mkinitrd-cd.conf

echo -n "    Extracting busybox source ... "
tar -xjf ../../upstream/busybox-*.tar.bz2
busybox_builddir=`ls -d busybox-*`
echo "done"
# this is the list of needed binaries from busybox
echo -n "    Adapting busybox binary to the initrd system needs ... "
edit_file="$busybox_builddir/.config"
# build the list of defines for the functions to use
for f in $busybox_bin $busybox_sbin; do
  echo "CONFIG_`echo $f | tr \[a-z\] \[A-Z\]`=y" >> $edit_file
done
# additional features for busybox
#echo "#define BB_CHMOD_CHOWN_CHGRP" >> $edit_file
echo "HAVE_DOT_CONFIG=y" >> $edit_file
echo "CONFIG_FEATURE_BUFFERS_GO_ON_STACK=y" >> $edit_file
echo "CONFIG_FEATURE_DEVFS=y" >> $edit_file
echo "CONFIG_FEATURE_DEVPTS=y" >> $edit_file
echo "EXTRA_CFLAGS_OPTIONS=\"\"" >> $edit_file
echo "CONFIG_FEATURE_FANCY_ECHO=y" >> $edit_file
# this is needed for the shell
echo "CONFIG_FEATURE_SH_IS_ASH=y" >> $edit_file
echo "CONFIG_FEATURE_SH_IS_HUSH=n" >> $edit_file
echo "CONFIG_FEATURE_SH_IS_LASH=n" >> $edit_file
echo "CONFIG_FEATURE_SH_IS_MSH=n" >> $edit_file
echo "CONFIG_FEATURE_SH_IS_NONE=n" >> $edit_file
echo "CONFIG_ASH_OPTIMIZE_FOR_SIZE=y" >> $edit_file
# these are good for debugging the initrd (giving the shell a bit more
# usefulness for interactive commands)
echo "CONFIG_FEATURE_COMMAND_EDITING=y" >> $edit_file
echo "CONFIG_FEATURE_COMMAND_SAVEHISTORY=y" >> $edit_file
echo "CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y" >> $edit_file
echo "CONFIG_FEATURE_COMMAND_HISTORY=15" >> $edit_file

echo "CONFIG_FEATURE_NEW_MODULE_INTERFACE=y" >> $edit_file
echo "CONFIG_FEATURE_2_4_MODULES=y" >> $edit_file
echo "CONFIG_FEATURE_2_6_MODULES=y" >> $edit_file
echo "CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS=y" >> $edit_file
echo "CONFIG_FEATURE_INSMOD_VERSION_CHECKING=y" >> $edit_file
echo "CONFIG_FEATURE_CHECK_TAINTED_MODULE=y" >> $edit_file
echo "CONFIG_FEATURE_LS_FOLLOWLINKS=y" >> $edit_file
echo "CONFIG_FEATURE_AUTOWIDTH=y" >> $edit_file
echo "CONFIG_FEATURE_HUMAN_READABLE=y" >> $edit_file

echo "CONFIG_FEATURE_IPC_SYSLOG=y" >> $edit_file
echo "CONFIG_LOGREAD=y" >> $edit_file

echo "CONFIG_FEATURE_MOUNT_LOOP=y" >> $edit_file

echo "CONFIG_FEATURE_BUFFERS_USE_MALLOC=n" >> $edit_file
echo "CONFIG_FEATURE_BUFFERS_GO_ON_STACK=y" >> $edit_file
echo "CONFIG_FEATURE_BUFFERS_GO_IN_BSS=n" >> $edit_file

echo "CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16" >> $edit_file

echo "done"
echo -n "    Building busybox binary ... "
( cd $busybox_builddir
if ! /usr/bin/yes n | make oldconfig || \
   ! make CC=i386-uclibc-linux-gcc ; then \
  echo "Error: unable to build busybox !"; \
  exit 1; \
fi; \
echo "done" )

install -m 0755 $busybox_builddir/busybox $INSTALL_PATH
rm -rf $busybox_builddir

