aboutsummaryrefslogtreecommitdiff
path: root/Install.in
diff options
context:
space:
mode:
Diffstat (limited to 'Install.in')
-rwxr-xr-xInstall.in983
1 files changed, 983 insertions, 0 deletions
diff --git a/Install.in b/Install.in
new file mode 100755
index 0000000..fc3433a
--- /dev/null
+++ b/Install.in
@@ -0,0 +1,983 @@
+#!/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 <<EOF
+You may supply at least one format on the command line. Recognized formats
+are:
+ binaries for binaries
+ source for source code
+The default is both source and binaries.
+
+You may also supply actions. Recognized actions are:
+ extract read the appropriate files from tape
+ fixincludes build a directory of corrected header files for comp-tools
+ test run a very brief verification of your installation
+Default actions are extract, fixincludes, and test, although fixincludes is not
+necessary for emacs.
+
+There are two other options:
+ -tape=DEVICE asks Install to read the necessary files from DEVICE. The
+ default DEVICE is ||DEVdflt||, the ||TAPdflt||, cartridge tape
+ drive on most ||HOSTstr||s.
+ -installdir=DIRECTORY asks Install to install files into DIRECTORY.
+ The default DIRECTORY is ${INSTALLDIR_DEFAULT}.
+No action has been taken.
+EOF
+ exit 1
+ ;;
+esac
+
+
+###
+###
+### build a file list
+### (easy this round because we have only one package).
+###
+
+FILE_LIST=
+TRIGGERS=
+
+for arch in ${ARCH} ; do
+ case ${arch} in
+ bin)
+ FILE_LIST="${FILE_LIST} \
+ ${VERSION}/Install \
+ ${VERSION}/CYGNUS \
+ ${EXECDIR}/lib \
+ ${EXECDIR}/bin \
+ ${VERSION}/include \
+ ${VERSION}/info \
+ ${VERSION}/lib \
+ ${VERSION}/man"
+ for tool in ${TOOLS} ; do
+ case ${tool} in
+ comp) TRIGGERS="${TRIGGERS} ${EXECDIR}/bin/gcc" ;;
+ emacs) TRIGGERS="${TRIGGERS} ${EXECDIR}/bin/emacs" ;;
+ *)
+ echo '***' Oops. Sanity failure on triggers for binaries for ${tool}.
+ exit 1
+ ;;
+ esac
+ done
+ ;;
+ src)
+ FILE_LIST="${FILE_LIST} \
+ ${VERSION}/Install \
+ ${VERSION}/CYGNUS \
+ ${VERSION}/src"
+ for tool in ${TOOLS} ; do
+ case ${tool} in
+ comp) TRIGGERS="${TRIGGERS} ${VERSION}/src/gcc/gcc.c" ;;
+ emacs) TRIGGERS="${TRIGGERS} ${VERSION}/src/emacs/src/emacs.c" ;;
+ *)
+ echo '***' Oops. Sanity failure on triggers for source for ${tool}.
+ exit 1
+ ;;
+ esac
+ done
+ ;;
+ *)
+ echo '***' Oops. Sanity failure on triggers for arch ${arch}.
+ ;;
+ esac
+done
+
+###
+###
+### removal
+###
+###
+
+if echo ${ACTIONS} | grep rm > /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 <stdio.h>
+
+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 <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <math.h>
+
+double atof(const char *);
+
+#ifdef __sun__
+#include <sys/filio.h>
+
+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 <iostream.h>
+
+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 <iostream.h>
+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