#!/bin/sh ### Copyright (C) 1991, 1992, Cygnus Support ### All Rights Reserved. ### This really needs to nestle up snuggly to the Release notes. If you change ### this script, please be sure the release notes get coordinated too. set -e ### this is our version number. VERSION=cygnus-sol2-||RELNO|| ### this is the default installation repository. We use this to test whether or ### not GCC_EXEC_PREFIX should be set when doing "Install test comp-tools". #INSTALLDIR_DEFAULT=/giga/rich/tmp/installdir INSTALLDIR_REAL=/opt INSTALLDIR_DEFAULT=${INSTALLDIR_REAL} ### this is where we install into. (useful for testing). INSTALLDIR=${INSTALLDIR_DEFAULT} ### where to write the log files LOGDIR=${INSTALLDIR}/${VERSION} ### who to call in bad situations HOTLINE="the Cygnus Support Hotline at +1 415 322 7836" ### what the release doc is called and a few sections thereof NOTES="the Installation Notes" CHANGING_PATHS="\"Changing the Paths\"" NO_ACCESS="\"No Access to ${INSTALLDIR}\?\"" MIGHT_WRONG="\"Some Things that Might go Wrong\"" WHY_FIXINCLUDES="Why Convert System Header Files\?" ANOTHER_TAPE="\"Steps to install with another machine\'s tape drive\"" ### for debugging #PATH=/bin:/usr/bin ; export PATH ### default the tape device case "${TAPE}" in "") TAPE=||DEVdflt|| ;; *) ;; esac # ${TAPE} ### clear and/or initialize some variables ARCH= TOOLS= FTPRELEASE=no REMOVE=no EXTRACT=no FIXINCLUDES=no TESTINSTALLATION=no INSTALLHOST=default ERROR= ### where the binaries are in the release #EXECDIR=${VERSION}/H-${INSTALLHOST} EXECDIR=${VERSION} ### some tool defaults ### perhaps these should be hard coded to absolute paths instead? TAR=tar TARKEYS="xvvopf -" SED=sed MT=mt ### trigger words on the command line are: ### bin, src ### emacs, comp-tools ### -tape=/dev/device ### -installdir=/foo ### extract, fixincludes, test-installation, remove for arg in $* ; do case "${arg}" in ### options -tape=* | --tape=* | --tap=* | --ta=* | --t=*) TAPE=`echo ${arg} | ${SED} 's/-*t[a-z]*=//'` ;; -installdir=* | --installdir=* | --installdi=* | --installd=* | --install=* | --instal=* | --insta=* | --inst=* | --ins=* | --in=* | --i=*) INSTALLDIR=`echo ${arg} | ${SED} 's/-*i[a-z]*=//'` # we will make it an absolute path shortly. ;; ### actions *remove* | rm | -rm | --rm) ACTIONS="${ACTIONS} rm" ;; *extract*) ACTIONS="${ACTIONS} extract" ;; *fix*) ACTIONS="${ACTIONS} fix" ;; *test*) ACTIONS="${ACTIONS} test" ;; ### hosts *src* | *sour*) ARCH="${ARCH} src" ;; *bin*) ARCH="${ARCH} bin" ;; ### packages *emacs*) TOOLS="${TOOLS} emacs" ;; *comp*) TOOLS="${TOOLS} comp" ;; *help*) ERROR=true ;; *) echo '***' I do not understand the option \"${arg}\". ERROR=true ;; esac # ${arg} done # arg in $* ### ### ### check for a myriad of sins ### ### if [ ! -d "${INSTALLDIR}" ] ; then echo '*** ' Can not cd to \"${INSTALLDIR}\" because it does not exist. echo '*** ' Try creating it with \"mkdir ${INSTALLDIR}\" and then try running Install again. exit 1 else if (cd "${INSTALLDIR}") ; then true else echo '*** ' Can not cd to \"${INSTALLDIR}\" because I do not have execute permission. ls -lad ${INSTALLDIR} echo '*** ' Please fix this and then try running Install again. exit 1 fi # ! cd ${INSTALLDIR} fi # ! -d ${INSTALLDIR} # Make INSTALLDIR absolute (parts below might need it that way). # FIXME, do they really? # FIXME, handle pwd failure from upper dir permission INSTALLDIR=`cd ${INSTALLDIR} ; pwd` LOGDIR=${INSTALLDIR}/${VERSION} case "${ERROR}" in "") ### default tools case "${TOOLS}" in "") TOOLS="||BUNDLE||" ;; *) ;; esac # ${TOOLS} INSTALLHOST= ### decide where we are: try arch first. if (arch) > /dev/null 2>&1 ; then MAYBE=`arch` else true fi # (arch) case "${MAYBE}" in sun3) INSTALLHOST=${MAYBE} ;; *) ### next try uname if (uname > /dev/null) 2>&1 ; then UNAME=`echo \`uname -s\`\`uname -m\`\`uname -r\`` else UNAME="machine without a uname command (type of machine unknown)" fi # (uname) ### map into names we recognize case "${UNAME}" in AIX*) INSTALLHOST=rs6000 MT=tctl ;; ULTRIXRISC) INSTALLHOST=decstation ;; SunOSsun4*5*) INSTALLHOST=sparc-sun-solaris2 ;; SunOSsun4*) INSTALLHOST=sun4 ;; SunOSsun3*) INSTALLHOST=sun3 ;; IRIX*) INSTALLHOST=iris4 ;; *) INSTALLHOST=unknown ;; esac # ${UNAME} ;; esac # ${MAYBE} ### default arch case "${ARCH}" in "") ARCH="bin src" ;; *) ;; esac # ${ARCH} ### default actions case "${ACTIONS}" in "") case "${FTPRELEASE}" in "yes") ACTIONS="test" ;; "no" ) ACTIONS="extract test" ;; esac # ${FTPRELEASE} ### fixincludes only if comp-tools for tool in ${TOOLS} ; do case ${tool} in comp) if echo ${ARCH} | grep bin > /dev/null 2>&1 ; then ACTIONS="${ACTIONS} fix" fi ;; *) ;; esac # ${TOOLS} done # for tool in ${TOOLS} ;; *) ;; esac # ${ACTIONS} ;; *) ;; esac # ${ERROR} case "${ERROR}" in "") ### if binaries are not intended for this machine case "${INSTALLHOST}" in "||HOSTstr||") ### binaries are intended for this machine for action in ${ACTIONS} ; do case ${action} in test) for tool in ${TOOLS} ; do OURWD=`(cd ${INSTALLDIR}; pwd) 2>/dev/null` DEFAULTWD=`(cd ${INSTALLDIR_REAL}; pwd) 2>/dev/null` case ${tool} in comp) case "${OURWD}" in "${DEFAULTWD}") ;; *) echo '***' If you want to use the compilation tools in an alternate echo '*** ' directory, GCC_EXEC_PREFIX must be set. You probably echo '*** ' want to set it with: echo GCC_EXEC_PREFIX=${INSTALLDIR}/${EXECDIR}/lib/gcc-lib/||HOSTstr||/||GCCvn||/ ; export GCC_EXEC_PREFIX GCC_EXEC_PREFIX=${INSTALLDIR}/${EXECDIR}/lib/gcc-lib/||HOSTstr||/||GCCvn||/ ; export GCC_EXEC_PREFIX echo '*** ' This is what I will use for the installation tests. # skip C++ msg on Solaris case "${INSTALLHOST}" in sparc-sun-solaris2) ;; *) echo '*** ' And for g++ I will use the options: echo '*** ' -I${INSTALLDIR}/${EXECDIR}/lib/g++-include echo '*** ' -L${INSTALLDIR}/${EXECDIR}/lib ;; esac # ${INSTALLHOST} echo '*** ' For further help, please refer to ${CHANGING_PATHS} echo '*** ' in ${NOTES}. GPLUSOPTIONS="-I${INSTALLDIR}/${EXECDIR}/lib/g++-include -L${INSTALLDIR}/${EXECDIR}/lib" ;; esac # ${INSTALLDIR} ;; emacs) case "${OURWD}" in "${DEFAULTWD}") ;; *) echo '***' I cannot test Emacs. echo '*** ' The provided Emacs binary can only run from the default echo '*** ' installation directory. If you wish to run emacs, please echo '*** ' refer to ${CHANGING_PATHS} in ${NOTES}. exit 1 ;; esac # ${INSTALLDIR} ;; *) true ;; esac # ${tool} done # for tool in ${TOOLS} ;; *) true ;; esac # ${action} done # for action in ${ACTIONS} ;; *) for action in ${ACTIONS} ; do case ${action} in rm | extract) true ;; fix) if echo ${TOOLS} | grep comp > /dev/null ; then NOTFIXED="fixincludes" if echo ${ACTIONS} | grep test > /dev/null ; then JOINER=" or " else true fi # echo ${ACTIONS} else # echo '***' If you only install Emacs you do not need to run fixincludes. # ERROR=true true fi # echo ${TOOLS} ;; test) NOTTESTED="the installation tests" ;; esac # ${action} done # for action in ${ACTIONS} ;; esac # ${INSTALLHOST} ;; *) ;; esac # ${ERROR} if [ -n "${NOTFIXED}" -o -n "${NOTTESTED}" ] ; then case "${INSTALLHOST}" in "||HOSTstr||") ;; *) echo '*** ' This machine appears to be a \"${INSTALLHOST}\". echo '*** ' You may still run \"$0 -extract ...\" on this machine and then echo '*** ' run the other steps on the machine on which you wish to install. echo '*** ' You will need to do these steps separately. echo '*** ' For more information, please refer to echo '*** ' ${ANOTHER_TAPE} in ${NOTES}. ERROR=true ;; esac # ${INSTALLHOST} fi # [ -n ${NOTFIXED -o -n ${NOTTESTED} ] ### if we can't read the tape drive... popdir=`pwd` if [ ! -d "${LOGDIR}" ] ; then if mkdir ${LOGDIR}; then true else echo '*** ' Can not write logs to \"${LOGDIR}\" because it does not exist. echo '*** ' Try creating it with \"mkdir ${LOGDIR}\" and then try running Install again. exit 1 fi else if [ ! -w "${LOGDIR}" ] ; then echo '*** ' Can not write logs to \"${LOGDIR}\" because I do not have write permission. ls -lad ${LOGDIR} echo '*** ' Please fix this and then try running Install again. exit 1 fi # ! -r ${LOGDIR} fi # ! -d ${LOGDIR} cd ${INSTALLDIR} ### There is a window here that I don't know how to handle gracefully from ### shell. If the directory DID exist and WAS executable but dissappeared ### before we could cd into it, we're kinda hosed. If you get a call about ### this, make sure the directory exists, is readable, is executable, is the ### either the default installation directory or the -installdir=directory ### given on the command line. Then ask them to just try again. A few times. ### If you get the same error every time, we've got a very strange bug. I ### can't help you. if [ "$?" != "0" ] ; then echo '***' Cannot cd to \"${INSTALLDIR}\". This is a problem. echo '*** ' For further help, please refer to echo '*** ' ${NO_ACCESS} in ${NOTES} or call echo '*** ' ${HOTLINE} exit 1 fi if echo ${ACTIONS} | grep extract > /dev/null ; then if [ -z "${ERROR}" -a ! -r "${TAPE}" ] ; then ### try checking for a relative tape path if [ -r ${popdir}/${TAPE} ] ; then TAPE=${popdir}/${TAPE} echo '***' Using TAPE device \"${TAPE}\". else echo '***' Can not read from TAPE device, \"${TAPE}\". cd ${popdir} ; ls -lasd ${TAPE} echo '*** ' Try using \"./Install -tape=/dev/something ...\" to name your tape echo '*** ' drive or refer to ${MIGHT_WRONG} in echo '*** ' ${NOTES}. exit 1 fi # ! -r ${popdir}/${TAPE} fi # -z ${ERROR} fi # extract in ${ACTIONS} cd ${popdir} ### bail out case "${ERROR}" in "") ;; *) cat < /dev/null 2>&1 ; then if [ ! -d "${INSTALLDIR}" ] ; then echo '***' Cannot remove anything from \"${INSTALLDIR}\" because it does not exist. echo '*** ' You probably do not need to remove anything. else popdir=`pwd` if [ ! -d "${INSTALLDIR}" ] ; then echo '***' Can not cd to \"${INSTALLDIR}\" because it does not exist. echo '*** ' You probably do not need to remove anything. exit 1 else if [ ! -r "${INSTALLDIR}" ] ; then echo '***' Can not cd to \"${INSTALLDIR}\" because I do not have execute permission. ls -lad ${INSTALLDIR} echo '*** ' Please fix this and then try running Install again. For echo '*** ' more information, please refer to ${NO_ACCESS} echo '*** ' in ${NOTES}. exit 1 fi fi cd ${INSTALLDIR} ### see also the above note about the timing window. if [ "$?" != "0" ] ; then echo '***' Cannot cd to \"${INSTALLDIR}\". This is a problem. echo '*** ' For further help, please refer to echo '*** ' ${NO_ACCESS} in ${NOTES} or call echo '*** ' ${HOTLINE} exit 1 else true fi if [ ! -d "${VERSION}" ] ; then echo '***' Cannot remove anything from \"${INSTALLDIR}/${VERSION}\" because it does not exist. echo '*** ' You probably do not need to remove anything. exit 1 else true fi echo Removing from \"${INSTALLDIR}\"... if rm -rf ${FILE_LIST} ; then # if neither binaries nor source are installed, remove installdir if [ -d ${INSTALLDIR}/${EXECDIR} \ -o -d ${INSTALLDIR}/${VERSION}/src ] ; then true else if rm -rf "${INSTALLDIR}/${VERSION}" ; then true else if [ ! -w "${INSTALLDIR}" ] ; then echo '***' I can not remove ${INSTALLDIR}/${VERSION} echo '*** ' because I do not have write access to \"${INSTALLDIR}\" echo '*** ' Please fix this and try running Install again. For more information echo '*** ' please refer to ${NO_ACCESS} in ${NOTES}. exit 1 else echo '***' I do not know why I can not remove ${INSTALLDIR}/${VERSION}. This is echo '*** ' probably not a problem. fi exit 1 fi fi echo Removed. else echo '***' There appears to have been a removal error. echo '*** ' Chances are that this is not a problem, but you might try removing echo '*** ' again. exit 1 fi fi echo Cygnus Support software distribution removed! else true fi # if removing ### ### ### extraction ### ### if echo ${ACTIONS} | grep extract > /dev/null 2>&1 ; then if [ ! -d "${INSTALLDIR}" ] ; then echo Trying to create \"${INSTALLDIR}\"... if mkdir ${INSTALLDIR} ; then echo Created \"${INSTALLDIR}\". else echo '***' I can not make directory, \"${INSTALLDIR}\". ### attempt to diagnose... DIR=`echo ${INSTALLDIR} | ${SED} -e 's:/[^/]*$::'` if [ ! -d "${DIR}" ] ; then echo '*** ' It looks as though \"${DIR}\" does not even exist. exit 1 else if [ ! -w "${DIR}" ] ; then echo '*** ' It looks as though you do not have write access to \"${DIR}\". echo '*** ' Please fix this and try running Install again. For more information echo '*** ' please refer to ${NO_ACCESS} in ${NOTES}. exit 1 else echo '*** ' I do not know why I can not create \"${INSTALLDIR}\". This is a problem. echo '*** ' Please call ${HOTLINE} exit 1 fi # ! -w ${DIR} fi # ! -d ${DIR} fi # mkdir ${INSTALLDIR} else true fi # ! -d ${INSTALLDIR} cd ${INSTALLDIR} if [ "$?" = "0" ] ; then for trigger in ${TRIGGERS} ; do if [ -r "${trigger}" ] ; then echo '***' \"${INSTALLDIR}/${trigger}\" exists and I will not overwrite it. echo '*** ' If you really want to install it again, please remove it first. exit 1 else true fi # -r ${trigger} done # for trigger else echo '***' I can not cd to \"${INSTALLDIR}\". ### attempt to diagnose... if [ ! -r "${INSTALLDIR}" ] ; then echo '*** ' It looks as though you do not have execute permission to \"${INSTALLDIR}\". else true fi # ! -r ${INSTALLDIR} echo '*** ' For further help, please refer to echo '*** ' ${NO_ACCESS} in ${NOTES}. exit 1 fi # status is zero ### remove redundant names from the list echo ${FILE_LIST} ${COMMONS} ${EMACSHIBIN} | tr ' ' ' ' | sort | uniq > ${LOGDIR}/extract_list echo It will take some time for me to read the tape. echo Verbose output will be saved in ${LOGDIR}/tar.log echo Extracting into \"${INSTALLDIR}\"... ### make sure things come off the tape as they were written, but minus what could be a security hole. umask 0 ### using the no rewind device, so rewind and fsf to be sure. if ${MT} -f ${TAPE} rewind > /dev/null 2>&1 ; then if ${MT} -f ${TAPE} fsf 1 ; then true else echo '***' Could not forward space tape device \"${TAPE}\". exit 1 fi else if test -r ${TAPE} ; then true else echo '***' Could not rewind tape device \"${TAPE}\". exit 1 fi fi # mt ${TAPE} rewind if dd if=${TAPE} bs=124b | compress -d | ${TAR} ${TARKEYS} `cat ${LOGDIR}/extract_list` > ${LOGDIR}/tar.log 2>&1 && test -d ${VERSION} ; then if [ -d ${INSTALLDIR}/${EXECDIR}/bin ] ; then echo Extracted. else echo '***' The extraction has failed. The directory echo '***' ${INSTALLDIR}/${EXECDIR}/bin was not extracted. echo '*** ' The output from the tar command has been logged in ${LOGDIR}/tar.log echo '*** ' I do not know how to continue until this problem has been echo '*** ' corrected. If you do not know how to fix it either, please echo '*** ' call ${HOTLINE}. exit 1 fi if (${MT} -f ${TAPE} rewind > /dev/null 2>&1) ; then true else true fi # mt rewind else echo '***' There appears to have been an extraction error. echo '*** ' The output from the tar command has been logged in ${LOGDIR}/tar.log echo '*** ' I do not know how to continue until this problem has been echo '*** ' corrected. If you do not know how to fix it either, please echo '*** ' call ${HOTLINE}. exit 1 fi # dd | compress | tar .... rm -f ${LOGDIR}/extract_list echo Cygnus Support software distribution extracted! else true fi # extraction in actions ### ### ### fixincludes ### ### if echo ${ACTIONS} | grep fix > /dev/null 2>&1 ; then echo Running fixincludes for ${INSTALLHOST}. echo Verbose output will be stored in ${LOGDIR}/fixincludes.log echo This will take some time. LIB=${INSTALLDIR}/${EXECDIR}/lib/gcc-lib/||HOSTstr||/||GCCvn||/include ; export LIB if mkdir ${LIB}/tmpdir && mv ${LIB}/*.h ${LIB}/tmpdir ; then if ${INSTALLDIR}/${VERSION}/lib/fixincludes ${LIB} /usr/include ${INSTALLDIR}/${VERSION}/src/gcc > ${LOGDIR}/fixincludes.log ; then mv ${LIB}/tmpdir/* ${LIB} && rmdir ${LIB}/tmpdir echo Finished with fixincludes. else echo '***' There seems to have been a problem with fixincludes. echo '*** ' The verbose output from the fixincludes script has been logged in echo '*** ' ${INSTALLDIR}/${VERSION}/fixincludes.log. echo '*** ' I do not know how to continue until this problem has been echo '*** ' corrected. If you do not know how to fix it either, please echo '*** ' call ${HOTLINE}. mv ${LIB}/tmpdir/* ${LIB} && rmdir ${LIB}/tmpdir exit 1 fi # else echo '***' Not able to create the temporary include dir echo '*** ' Please ensure that write permissions for echo '*** ' ${LIB} are allowed. echo '*** ' Or call ${HOTLINE} for more information. exit 1 fi echo Fixed include files installed! else true fi # fix in actions ### ### ### testing the installation ### ### if echo ${ACTIONS} | grep test > /dev/null 2>&1 && echo ${ARCH} | grep bin > /dev/null 2>&1 ; then popdir=`pwd` cd ${LOGDIR} for tool in ${TOOLS} ; do case ${tool} in comp) if [ -f ${INSTALLDIR}/${EXECDIR}/bin/gcc ] ; then cat > ${LOGDIR}/hello.c <<'e!o!f' #include extern int printf(); int main(int argc, char **argv) { (void) printf("hello: The compilation tools appear to be installed correctly on your %s.\n", MACHINE); return(0); } /* main() */ e!o!f if ${INSTALLDIR}/${EXECDIR}/bin/gcc -Wall -O -g \ -DMACHINE=\"${INSTALLHOST}\" ${LOGDIR}/hello.c -o ${LOGDIR}/hello ; then if ${LOGDIR}/hello ; then echo This is good. else echo '***' Hello.c fails to run. This is a problem. echo '*** ' Please call ${HOTLINE} exit 1 fi # ./hello else echo '***' Hello.c fails to compile. This is a problem. echo '*** ' Please call ${HOTLINE} exit 1 fi # run gcc ### now check for fixed includes. cat > ${LOGDIR}/test-ioctl.c << 'e!o!f' #include #include #include #include double atof(const char *); #ifdef __sun__ #include extern int ioctl(); extern int perror(); #endif /* __sun__ */ extern int printf(); int main(int argc, char **argv) { #ifdef __sun__ long l; int fd; int retval; if ((fd = open("/dev/tty", O_RDONLY)) == -1) { (void) perror("test-ioctl: can't open /dev/null"); return(1); } else if ((retval = ioctl(fd, FIONREAD, &l)) != 0) { (void) perror("test-ioctl: ioctl failed"); (void) printf("test-ioctl: Most likely, you have not run \"Install fixincludes\" on this machine.\n"); return(2); } #endif /* __sun__ */ printf("test-ioctl: Ansi versions of the system header files, (the fixed includes),\n"); printf("test-ioctl: appear to be installed correctly.\n"); /* that's right. If closing /dev/tty fails, I don't want to know about it. */ return(0); } e!o!f case "||HOSTstr||" in sun3 | sun4 | decstation) if ${INSTALLDIR}/${EXECDIR}/bin/gcc -Wall -O -g \ -DMACHINE=\"${INSTALLHOST}\" ${LOGDIR}/test-ioctl.c -o ${LOGDIR}/test-ioctl ; then if ${LOGDIR}/test-ioctl ; then echo This is good. else case "$?" in 1) echo '***' test-ioctl.c fails to read /dev/tty. If you were running Install echo '*** ' in batch or from a daemon, please try running it again interactively. echo '*** ' If not, please call ${HOTLINE} exit 1 ;; 2) echo '***' test-ioctl.c fails to ioctl. echo '*** ' Most likely you need to run \"Install fixincludes\". echo '*** ' Please run \"Install fixincludes\" and echo '*** ' then try this test again. For an explanation see echo '*** ' ${WHY_FIXINCLUDES} in ${NOTES}. exit 1 ;; *) echo '***' test-ioctl.c fails to run. This is a problem. echo '*** ' Please call ${HOTLINE} exit 1 ;; esac # $? exit 1 fi # test-ioctl else ### this presupposes that hello.c DID compile. echo '***' test-ioctl.c fails to compile. This is a problem. echo '*** ' Please call ${HOTLINE} exit 1 fi # run gcc ;; iris4) if [ ! -f ${INSTALLDIR}/${EXECDIR}/lib/gcc-lib/||HOSTstr||/||GCCvn||/include/sys/cfeiroute.h ] then echo '***' You seem to be missing ${INSTALLDIR}/${EXECDIR}/lib/gcc-lib/||HOSTstr||/||GCCvn||/include/sys/cfeiroute.h. echo '*** ' Most likely you need to run \"Install fixincludes\". echo '*** ' Please run \"Install fixincludes\" and echo '*** ' then try this test again. For an explanation see echo '*** ' ${WHY_FIXINCLUDES} in ${NOTES}. exit 1 fi # test fixincluded file ;; sparc-sun-solaris2) if [ ! -f ${INSTALLDIR}/${EXECDIR}/lib/gcc-lib/||HOSTstr||/||GCCvn||/include/ieeefp.h ] then echo '***' You seem to be missing ${INSTALLDIR}/${EXECDIR}/lib/gcc-lib/||HOSTstr||/||GCCvn||/include/ieeefp.h. echo '*** ' Most likely you need to run \"Install fixincludes\". echo '*** ' Please run \"Install fixincludes\" and echo '*** ' then try this test again. For an explanation see echo '*** ' ${WHY_FIXINCLUDES} in ${NOTES}. exit 1 fi ;; rs6000) if [ ! -f ${INSTALLDIR}/${EXECDIR}/lib/gcc-lib/||HOSTstr||/||GCCvn||/include/piostruct.h ] then echo '***' You seem to be missing ${INSTALLDIR}/${EXECDIR}/lib/gcc-lib/||HOSTstr||/||GCCvn||/include/piostruct.h. echo '*** ' Most likely you need to run \"Install fixincludes\". echo '*** ' Please run \"Install fixincludes\" and echo '*** ' then try this test again. For an explanation see echo '*** ' ${WHY_FIXINCLUDES} in ${NOTES}. exit 1 fi # test fixincluded file ;; esac # ||HOSTstr|| else true fi # test if gcc present ### now check for g++. if [ -f ${INSTALLDIR}/${EXECDIR}/bin/g++ ] ; then cat > ${LOGDIR}/hello.C << 'e!o!f' #include int main(int argc, char**argv) { char *machine = MACHINE; cout << "hello: g++ appears to be installed correctly on your " << machine << ".\n"; return(0); } e!o!f if ${INSTALLDIR}/${EXECDIR}/bin/gcc ${GPLUSOPTIONS} -Wall -O -g \ -DMACHINE=\"${INSTALLHOST}\" ${LOGDIR}/hello.C -o ${LOGDIR}/Hello -lg++ ; then if ${LOGDIR}/Hello ; then echo This is good. else echo '***' hello.C fails to run. This is a problem. echo '*** ' Please call ${HOTLINE} exit 1 fi # ./Hello else ### this presupposes that hello.c DID compile. echo '***' hello.C fails to compile. This is a problem. echo '*** ' Please call ${HOTLINE} exit 1 fi # run g++ ### now check for static initialization. cat > ${LOGDIR}/static-init.C << 'e!o!f' #include int Three; struct Foo { Foo(int i) { Three = i; } }; Foo foo(3); int main(int argc, char**argv) { if (Three != 3) { cout << "static-init: static initialization fails.\n"; return(1); } cout << "static-init: static initialization appears to work.\n"; return(0); } e!o!f if ${INSTALLDIR}/${EXECDIR}/bin/gcc ${GPLUSOPTIONS} -Wall -O -g \ -DMACHINE=\"${INSTALLHOST}\" ${LOGDIR}/static-init.C -o ${LOGDIR}/static-init -lg++ ; then if ${LOGDIR}/static-init ; then echo This is good. else echo '***' Static initialization is not working. This is a problem. echo '*** ' Please call ${HOTLINE} exit 1 fi # run static-init else ### this presupposes that it DID compile. echo '***' static-init.c fails to compile. This is a problem. echo '*** ' Please call ${HOTLINE} exit 1 fi # run g++ else # no g++, so don't test it true fi # no g++ ;; emacs) cat > ${LOGDIR}/hello.el <<'e!o!f' (server-start) (message "Emacs appears to be installed correctly.") (kill-emacs 0) e!o!f if ${INSTALLDIR}/${EXECDIR}/bin/emacs -batch -l ${LOGDIR}/hello.el ; then echo This is good. else echo '***' Emacs fails to run. This is a problem. echo '*** ' Please call ${HOTLINE} exit 1 fi ;; src) # if anyone can tell me how to test the installation of source... true ;; *) echo '***' I do not know how to test for tool \"${tool}\" because I have never echo '*** ' heard of it. This is a problem. Please call ${HOTLINE}. exit 1 ;; esac done rm -f hello* test-ioctl* static-init* Hello* cd ${popdir} echo Cygnus Support software distribution tested! else true fi echo Done. exit 0 ### ### Local Variables: ### comment-column: 0 ### fill-column: 131 ### End: ### ### End of Install