#!/bin/sh # installation script VERBOSE=no MATH=soft prog= rootdir=/ checkfpu () { echo "Do you have a 387? [y/n] " read MATH if [ x${MATH}x = "xyx" ] then MATH=hard else MATH=soft fi } checkreturn () { if [ $? != 0 ] then echo Failed to $1. exit 1 fi } fixfiles () { BINS=$1 if [ $VERBOSE = yes ]; then set -x; fi if [ x${BINS}x != xx ]; then cd /usr/bin chown bin:bin $BINS chmod 755 $BINS fi chown -R bin:bin /usr/include /usr/g++-include /lib /usr/lib/gcc-lib chmod -R 755 /lib /usr/lib/gcc-lib # this is for the header files chmod 755 /usr/include /usr/g++-include # Yes, 'find' would be cleaner and faster, but it is not on rootdisk cd /usr/include chmod 775 * chmod 664 *.h chmod 664 */* cd /usr/g++-include chmod 775 * chmod 664 *.h chmod 664 */* chmod 664 /usr/lib/gcc-lib/i386-linux/*/*.? chmod 664 /usr/lib/gcc-lib/i386-linux/*/shared/*.? for f in in /usr/lib/gcc-lib/i386-linux/*/jump/*.? do if [ -f $f ]; then chmod 664 $f else break fi done } # check if it is a directory. checkdir () { if [ x${1}x = xx ] then echo No directory to check. return 1 fi for f in $* do if [ ! -d $f ]; then echo There is no such a directory, $f. echo Please make sure there is one and it has right stuffs in it. exit 1 fi done return 0 } checkbinfile () { for f in $* do if [ ! -f /bin/$f -a ! -f /usr/bin/$f ]; then echo There is no such a file, $f. return 1 fi done return 0 } checkfile () { if [ x${1}x = xx ] then echo No file to check. return 1 fi for f in $* do if [ ! -f $f ]; then echo There is no such a file, $f. echo Please make sure there is one and it has right stuffs in it. exit 1 fi done return 0 } checkroot () { uid=`id | sed -e 's/uid=\([0-9]*\)/\1/' -e 's/[^a-z0-9=].*//'` if [ $? != 0 ] then echo Fail to get \"root\" id. You may need a working \"id\" and echo \"sed\". exit 1 fi if [ x${uid}x != x0x ] then echo You have to be root to run this script. exit 1 fi } usage () { echo Usage: sh $prog [-v] [$filename] echo Note: \"sh\" must be zsh or bash. exit 1 } checkroot prog=$0 if [ $# != 2 -a $# != 3 ] then usage fi case $1 in -v) shift set -x VERBOSE=yes ;; esac case $# in 1) filename=`basename $0 .sh`.T.Z ;; 2) filename=$1 ;; *) usage ;; easc checkfile $filename echo Installing \"$filename\" ..... working=`pwd` cd $rootdir if [ $VERBOSE = yes ]; then zcat $working/$file | tar xvvof - else zcat $working/$file | tar xof - fi checkreturn "unpack $filename" fixfiles