mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-09-10 05:52:21 +08:00
Add some files from Progressive shich shouldn't be lost.
This commit is contained in:
983
Install.in
Executable file
983
Install.in
Executable file
@ -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
|
Reference in New Issue
Block a user