#!/bin/sh

# Changes for coda.
# Christopher Mason <cmason@cmu.edu>

# change these:
HANDHELDS_DIR=/usr/local/src/handhelds
SRC_VER=2-42
KERNEL_VER=2.4.0-test8-rmk2-np2

cd ${HANDHELDS_DIR}

tar -xzpf init-src-${SRC_VER}.tar.gz
tar -xzpf root-src-${SRC_VER}.tar.gz
tar -xzpf usr-src-${SRC_VER}.tar.gz


echo -n "Copying kernel modules into init/lib/modules..."
cd linux/kernel; env INSTALL_MOD_PATH=${HANDHELDS_DIR}/init make modules_install ; cd ../..
# (or manually install the coda.o module in init/lib/modules/.../kernel/fs/coda
#mkdir -p lib/modules/${KERNEL_VER}/kernel/fs/coda
#cp coda.o lib/modules/${KERNEL_VER}/kernel/fs/coda
echo "done."

echo -n "Installing the coda executables..."

cd usr/local
tar xzf ../../coda.arm.tar.gz 
cd ../../

echo "done."

echo -n "Creating coda directories..."
mkdir -p init/coda/etc/coda
mkdir -p usr/local
ln -fs /mnt/ramfs/coda usr/coda
mkdir -p root/coda
if [ ! -f root/coda/NOT_REALLY_CODA ]; then
 echo 'If you can see this file, venus is not running.' > \
        root/coda/NOT_REALLY_CODA
fi
echo "done."


echo -n "Creating the coda device..."
cd init/dev; ./MAKEDEV cfs0; cd ../..
echo "done."

echo -n "Editing the modules.conf file..."
grep -q coda init/etc/modules.conf || cat >>init/etc/modules.conf <<EOF
alias char-major-67 coda
EOF
echo "done."

echo -n "Creating modules.dep"
ln -fs /var/modules/modules.dep init/lib/modules/${KERNEL_VER}/modules.dep
echo "done."

echo -n "Editing the ld hints file..."
grep -q '/usr/local/lib' init/etc/ld.so.conf || cat >>init/etc/ld.so.conf <<EOF
/usr/local/lib
EOF
echo "done."

echo -n "Editing the fstab to not include /usr/local..."
perl -p -i.bak -e 's/\/dev\/flash6.*//' init/etc/fstab
echo "done."

echo -n "Adding coda commands to linuxrc..."
grep -q coda root/linuxrc || perl -p -i -e 's{^(.*re-create the /etc/mtab entries.*)$}{/bin/cp -a /mnt/init/coda /mnt/ramfs\n$1}' root/linuxrc
echo "done."

echo -n "Creating venus.conf..."
cp usr/local/etc/coda/venus.conf.ex init/coda/etc/coda/venus.conf
perl -p -i -e "s/100000/5120/" init/coda/etc/coda/venus.conf
echo "done."

echo -n "Adding testserver to /etc/hosts"
grep -q testserver init/etc/hosts || cat >>init/etc/hosts <<EOF
128.2.209.213 testserver.coda.cs.cmu.edu testserver
EOF

echo -n >> init/.version "added coda stuff -- cmason@cmu.edu "
date +"%d %b %Y" >> init/.version
echo >> init/.version
echo -n >> root/.version "added coda stuff -- cmason@cmu.edu "
date +"%d %b %Y" >> root/.version
echo >> root/.version
echo -n >> root/.version "added coda stuff -- cmason@cmu.edu "
date +"%d %b %Y" >> root/.version
echo >> root/.version

# make room for coda by deleting gdb?
# rm usr/bin/gdb

echo -n "Copying in joe..."
cp ../joe-2.8/joe usr/local/bin
cp ../joe-2.8/joerc usr/local/lib
echo "done."

echo -n "Copying in madplay..."
cp mad-0.11.3b/madplay usr/local/bin
mkdir -p usr/local/man/man1
cp mad-0.11.3b/madplay.1 usr/local/man/man1
echo "done."

echo "Creating the cramfs images..."
echo -n "usr: "
mkcramfs usr usr-${SRC_VER}.coda.cramfs 2>/dev/null | tail -n 1 
echo -n "root: "
mkcramfs root root-${SRC_VER}.coda.cramfs 2>/dev/null | tail -n 1
echo -n "init: "
mkcramfs init init-${SRC_VER}.coda.cramfs 2>/dev/null| tail -n 1
echo "done."
