Add some files from Progressive shich shouldn't be lost.

This commit is contained in:
David Henkel-Wallace 1992-07-29 16:21:34 +00:00
parent d81eea83fb
commit 5898af2c4b
13 changed files with 7378 additions and 0 deletions

983
Install.in Executable file
View 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

67
Pack-A-Progressive Executable file
View File

@ -0,0 +1,67 @@
#!/bin/sh
CC=gcc
set -x
set -e
if [ $# != 3 ] ; then
echo Usage: $0 release host /dev/norewindtape
exit 1
fi
release=$1
host=$2
tape=$3
cd ${host}
mt -f ${tape} ret
mt -f ${tape} rew
/bin/tar cf ${tape} Install
cat > /tmp/blockit.c <<'e!o!f'
#include <stdio.h>
#define BLOCKSIZE (1024 * 62)
main() {
long c;
long i = 0;
long j;
setvbuf (stdout, (char *)NULL, _IOFBF, BLOCKSIZE);
while ((c = getchar()) != EOF) {
if (ferror(stdin)) {
perror("on getchar");
return(1);
} /* on error */
putchar(c);
if (ferror(stdout)) {
perror("on putchar");
return(1);
} /* on error */
++i;
} /* while there is input */
for (j = (BLOCKSIZE - (i % BLOCKSIZE)); j; --j) {
putchar(0);
if (ferror(stdout)) {
perror("on putchar");
return(1);
} /* on error */
} /* pad */
return(0);
}
e!o!f
(cd /tmp; ${CC} -o blockit blockit.c)
/bin/tar cf - ${release} | compress -vV | /tmp/blockit > ${tape}
mt -f ${tape} asf 0
tar tvf ${tape}
dd bs=62k if=${tape} | compress -d | /bin/tar tvvf -
rm -f /tmp/blockit /tmp/blockit.c
mt -f ${tape} rew

2077
install-texi.in Normal file

File diff suppressed because it is too large Load Diff

453
intro.texi Normal file
View File

@ -0,0 +1,453 @@
\input texinfo
@c $Id$
@setfilename intro.info
@settitle Introduction
@iftex
@c The include file "texiplus.tex" is in the texinfo/cygnus dir, and
@c implements Cygnus modifications to the texinfo manual style.
@input texiplus
@c The include file "smpklug.texi" is a kluge to deal with local
@c document production issues at Cygnus; it's safe to comment out this
@c line if you don't have (or don't want) the file.
@input smpklug.texi
@smallbook
@cropmarks
@finalout
@c We don't actually want a titlepage; HEADINGSon is usually called by
@c @end titlepage to turn on footers and headers.
@setchapternewpage odd
@HEADINGSon
@end iftex
@node Top,,,
@unnumbered Introduction
This Developer's Kit puts at your disposal, in a single coordinated
and tested release, some of the best software development tools
available:
@table @t
@item gcc
C compiler
@item g++
C++ compiler
@item gdb
Debugger
@item make
Automates building and installing your programs
@item gprof
Performance analyzer
@item byacc
Parser generator
@item flex
Fast lexical analyzer generator
@item libg++.a
Class library for C++
@item send_pr
Script to send structured problem reports to Cygnus
@item diff
Compares source files
@item patch
Installs source fixes
@item info
@itemx makeinfo
Online documentation tools
@item texinfo.tex
@itemx texindex
Documentation printing tools
@end table
On most host systems, the following are also included (to see if
they are available on your host, @pxref{Contents, Release Contents,
Release Contents, README.info, Installation Notes}).
@table @t
@item gas
Assembler
@item ld
Linker
@item ar
Manages object code archives
@item nm
Lists object file symbol tables
@item objdump
Displays object file information
@item ranlib
Generates archive index
@item size
Lists section and total sizes
@item strip
Discards symbols
@end table
These tools are free software; most of them are from the GNU project,
produced by the Free Software Foundation (FSF). ``GNU'' is the name of
the FSF's evolving system (in speech, the `G' is sounded). Cygnus
Support collaborates with the FSF in developing these tools. In this,
our @dfn{Progressive} product, we've assembled the most recent forms of
the development tools, tested them, made sure they work well together,
made them easy to install---the installation tape comes with binaries
already compiled for your system---and made them easy to reconfigure and
recompile from source.
Cygnus Support exists to help our clients exploit their freedom in
using, adapting, or enhancing this software. @xref{Cygnus,,About Cygnus
Support}, for more information.
@page
@node Copying,,,
@section Free Software
If you find our Developer's Kit useful, please feel free to give or sell
copies of the software and documentation to anyone you like.
Cygnus products are @dfn{free software}, protected by the @sc{gnu} General
Public License (GPL). The GPL gives you the freedom to copy or adapt any
program it licenses---but every person getting a copy also gets with it the
freedom to modify that copy (which means that they must get access to
the source code), and the freedom to distribute further copies. Typical
software companies use copyrights to limit your freedoms; the GPL is
designed to preserve your freedoms.
Fundamentally, the General Public License is a license which grants you
these freedoms, and only imposes restrictions to ensure that no one can
take these freedoms away from anyone else.
For full details, see the @strong{LICENSE} section in this manual
set.
@page
@node Manuals,,,
@section Manuals
@noindent
These printed manuals are included in your Cygnus Progressive Release:
@display
@cite{Using the @sc{gnu} C Compiler}
@cite{The C Preprocessor}
@cite{GDB: The @sc{gnu} Source-Level Debugger}
@cite{Using @code{as}: The @sc{gnu} Assembler}
@cite{The @sc{gnu} Binary Utilities}
@cite{@code{gld}, the @sc{gnu} Linker}
@cite{@sc{gnu} Make: A Program for Directing Recompilation}
@cite{User's Guide to the @sc{GNU} C++ Class Library}
@end display
The manuals are designed for easy online browsing (@pxref{Info,,Online
Documentation}). For online use, the accompanying software distribution
tape includes all the printed manuals, and also the following documents:
@table @emph
@item FLEX: A Fast Lexical Analyzer Generator
Generates lexical analyzers suitable for GCC and other compilers.
@item Info: Documentation Browsing System
Full details on the @code{info} browser.
@item Texinfo: The @sc{gnu} Documentation Format
How you can use @TeX{} to print these manuals, and how to write your own
manuals in this style.
@item Using and Porting @sc{gnu cc}
Detailed information about what's needed to put @sc{gnu cc} on different
platforms, or to modify @sc{gnu cc}. Also includes all the
information in the printed manual @cite{Using the @sc{gnu} C Compiler}.
@end table
@noindent
Finally, @code{man} pages are included for all the programs in the release.
You have the freedom to copy the manuals, like the software they cover;
each manual's copyright statement includes the necessary permissions.
The manuals themselves are also free software, and the source for them
is also available on the tape.
@node Info,,,
@section Using Online Documentation
You can browse through the online documentation using either @sc{gnu} Emacs,
or the program @code{info} included on the accompanying tape.
Online, the manuals are organized into @dfn{nodes}, which correspond to
the chapters and sections of a printed book. You can follow them in
sequence, if you wish, just like in the printed book---but there are
also other choices. The documents have menus that let you go quickly to
the node that has the information you need. @code{info} has ``hot''
references; if one section refers to another, you can tell @code{info}
to take you immediately to that other section---and you can get back
again easily to take up your reading where you left off. Naturally, you
can also search for particular words or phrases.
The best way to get started with the online documentation system is to
run the browser @code{info}. After the Progressive Release is installed on
your system, you can get into @code{info} by just typing its name---no
options or arguments are necessary---at your shell's prompt (shown as
@samp{eg%} here):
@example
eg% info
@end example
@noindent
@code{info} will display its first screen, a menu of the documentation
available, and will await your input. Typing the single letter
@example
h
@end example
@noindent
requests a tutorial, designed to teach you how to use @code{info}.
If you already use Emacs, you may want to get into the documentation
browsing mode, instead, by typing @kbd{C-h i} inside Emacs.
You can get out of @code{info} at any time by typing the single letter
@kbd{q}.
@page
Here is a summary of all the @code{info} commands; @code{info} itself
can display a summary like this at any time, when you type the single
character @kbd{?}.
@smallexample
@cartouche
h @r{Invoke the Info tutorial.}
q @r{Quit Info}
@i{Selecting other nodes:}
n @r{Move to the ``next'' node of this node.}
p @r{Move to the ``previous'' node of this node.}
u @r{Move ``up'' from this node.}
m @r{Pick menu item specified by name (or abbreviation).}
@r{Picking a menu item moves to the corresponding node.}
f @r{Follow a cross reference. Reads name of reference.}
l @r{Move to the last node you were looking at.}
@i{Moving within a node:}
Space @r{scroll forward a page.}
DEL @r{scroll backward a page.}
b @r{Go to beginning of this node.}
@i{Advanced commands:}
1 @r{Pick first item in node's menu.}
2 - 5 @r{Pick second ... fifth item in node's menu.}
g @r{Move to node specified by name.}
@r{You may include a filename as well, as @code{(@var{FILENAME})@var{NODENAME}}.}
s @r{Search through this Info file for a specified string,}
@r{and select the node in which the next occurrence is found.}
Ctl-p @r{Print the contents of this node using @samp{lpr}.}
@end cartouche
@end smallexample
@page
@node Bugs,,,
@section Reporting Trouble
We've tried to make the programs in your Progressive Release as
trouble-free as possible. If you do encounter trouble, however, we'd
like to be able to diagnose and fix the problem as quickly as possible.
You can help us do that by using the script @code{send_pr} to send us your
problem reports.
@code{send_pr} invokes an editor on a problem report form (after
trying to fill in some fields with reasonable default values). After
you exit the editor, @code{send_pr} sends the filled out form to the
problem report management system (PRMS) at Cygnus Support. You can
use the environment variable @code{EDITOR} to specify what editor to
use (the default is @code{vi}).
@code{send_pr} attempts to send your problem report to Cygnus via
electronic mail. If your site cannot support this, you can still use
the problem report form: use @samp{send_pr -p} to capture a copy of the
blank problem-report form and fill it in. (You can also photocopy the
blank form at the end of this section to fill in.) In either case you
can FAX the problem report to Cygnus at @w{+1 415 322 3270}.
At Cygnus Support, the problem report is assigned a unique number and is
stored in the PRMS database according to its category and your
customer-id. PRMS automatically replies with an acknowledgement, citing
the category and the PR number. As the next step, Cygnus staff inspects
the bugreport (if you've marked your report as high priority, we respond
with an analysis of the problem in less than one business day). We'll
offer a solution as soon as possible, and await your feedback. As a
matter of policy, we do not consider your problem report closed until
you've agreed with a solution we offer.
To ensure that a problem report is handled promptly, it must contain
your (unique) customer-id and one of the available categories, shown as
comments in the problem report form, to identify the problem area. As a
Cygnus Support customer, you can obtain your customer-id by invoking
@code{send_pr} with the @samp{-request-id} option.
@page
@subsection Filling out a problem report
Problem reports are structured so that a program can manage them. When
filling out the form, please remember the following guidelines:
@itemize @bullet
@item
Each PR needs a valid customer-id and category.
@item
Describe only one problem with one PR.
@item
For follow-up mail, use the same subject line as the one in the
automatic acknowledgent. It shows the category, the PR number and the
original synopsis line. This allows Cygnus Support to make sure mail on
the same problem report stays together.
@item
Please try to make the subject or synopsis line as informative
as possible. For misbehaving software, you might use a sentence of
the form ``with input foo, component xyz produces bar''.
@item
You don't need to delete the comment lines while editing the PR form;
this is done by @code{send_pr}. Put your information before or
after the comment.
@end itemize
@page
For full details on @code{send_pr} and the supporting form, see the man
page @code{send_pr}(1). Here is a sample blank problem-report form; if
electronic mail from your site does not reach Cygnus, you can send us
problem reports by photocopying this sample, filling it out, and sending
it by FAX to @w{+1 415 322 3270}.
@iftex
@widen{28pt}
@end iftex
@smallexample
SEND_PR: Choose from the following categories:
SEND_PR:
SEND_PR: bfd binutils bison clib config cvs
SEND_PR: diff doc emacs g++ gas gcc
SEND_PR: gdb grep ispell ld libg++ libiberty
SEND_PR: libiberty make rcs readline send_pr texinfo
SEND_PR: other
SEND_PR:
To: cygnus-bugs@@cygnus.com
Subject:
From:
Reply-To:
X-send-pr-version: send_pr: 1.15
>Customer-Id:
>Originator: <name of the PR author (one line)>
>Organization: <organization of PR author (multiple lines)>
>Confidential: <[ yes | no ] (one line)>
>Synopsis: <synopsis of the problem (one line)>
>Severity: <[ non-critical | serious | critical ] (one line)>
>Priority: <[ low | medium | high ] (one line)>
>Category: <name of the product (one line)>
>Class: <[ sw-bug | doc-bug | change-request | support ] (one line)>
>Release: <release number or tag (one line)>
>Environment:
<machine, os, target, libraries (multiple lines)>
>Description:
<precise description of the problem (multiple lines)>
>How-To-Repeat:
<code/input/activities to reproduce the problem (multiple lines)>
@end smallexample
@iftex
@widen{-28pt}
@end iftex
@page
@node Cygnus,,,
@section About Cygnus Support
Cygnus Support was founded in 1989 to provide commercial support for
free software. Cygnus supplies products and services that benefit
advanced development groups by allowing them to use state-of-the-art
tools without having to maintain them. With Cygnus Support, sites that
once were forced to do their own tool support can recover that valuable
staff time. Former users of proprietary software now may choose
supported free software, combining the advantages of both worlds.
Free software is faster, more powerful, and more portable than its
proprietary counterparts. It evolves faster because users who want to
make improvements are free to do so. Cygnus tracks these
improvements and integrates them into tested, stable versions ready
for commercial use, then backs this software with comprehensive
support.
With Cygnus Support as your partner, you will have the software and
the support you need to meet your business objectives. Cygnus
is intimately familiar with this software from extensive experience
using, debugging, and implementing it. You get direct access to the
most qualified support people: the authors of that software.
We provide up-to-the minute ``progressive'' releases, for those who need
the very latest version---or ``vintage'' releases: stable versions which
have been through extensive use and testing.
Because all our improvements are also free software, you can
distribute them widely within your organization, or to your customers,
without extra cost.
@sp 4
@display
Cygnus Support
814 University Avenue
Palo Alto, CA 94301, USA
+1 415 322 3811
email: @code{info@@cygnus.com}
fax: +1 415 322 3270
@end display
@bye

315
sol-Build-A-Release.mk Normal file
View File

@ -0,0 +1,315 @@
### Makefile for preparing a progressive release.
###
### This makefile is distinct from the makefile for three-staging for
### several reasons. First, this version builds a "stage4" using src
### directories that have no CVS directories. Second, the binaries
### are build from independent copies of the source. That is, each
### host release will have it's own copy of the src directory.
###
### This file was written and is maintained by K. Richard Pixley
###
RELNO = 1.0
PWD = $(shell pwd)
CVS = $(PWD)/cirdancvs
tree = progressive
rooting = /opt/cygnus-sol2-$(RELNO)
cvs_module = progressive-solaris
gccflags = "-O"
release_tag = solaris-1-0
release_dir = cygnus-sol2-1.0
host_release = ${host}/cygnus-sol2-$(RELNO)
objdir = ${host_release}/objdir
# prefixes are passed as arguments to configure, they have to start with -
prefixes = -prefix=$(rooting)
# inst_prefixes are passed as arguments to make, without the -
inst_prefixes = prefix=$(PWD)/$(host_release)
### What are these for?
create =
restart =
usage =
## which C compiler to use
#CC = $(rooting)/bin/gcc
CC = /opt/cygnus-sol2-1.0/bin/gcc
C_COMPILER = "CC=$(CC) ${gccflags}"
all: .${host}-done fluff
chmod -R a-w $(host)
chmod -R go=u $(host)
find $(host) -type d -print | xargs chmod u+w
testfile: all blockit ${host}+.Z
${host}+.Z:
(cd ${host} ; tar cf - ${release_dir} \
| compress -vV \
| ../blockit \
> ../$@)
.${host}-done: .${host}-install .${host}-install-info
rm -rf ${objdir}
touch $@
.${host}-install: .${host}-all
${MAKE} -C ${objdir} -w install-no-fixedincludes \
$(inst_prefixes) $(C_COMPILER)
touch $@
.${host}-install-info: .${host}-info
${MAKE} -C ${objdir} -w install-info $(inst_prefixes) $(C_COMPILER)
touch $@
.${host}-all: .${host}-config
${MAKE} -C ${objdir} -w all $(C_COMPILER)
touch $@
.${host}-info: .${host}-config
${MAKE} -C ${objdir} -w info $(C_COMPILER)
touch $@
.${host}-config: .${host}-src
cd ${objdir} ; \
../src/configure ${host} $(prefixes)
touch $@
.${host}-src: .${release_tag}-co .${host}-dirs
rm -rf ${host_release}/src
(tar cf - ${release_dir} | (cd ${host_release} ; tar xvf -) ; true)
(cd ${host_release}/${release_dir} ; find . \( -name CVS -o -name CVS.adm \) -depth -exec rm -rf {} \; )
mv ${host_release}/${release_dir} ${host_release}/src
touch $@
.${host}-dirs:
[ -d ${host} ] || mkdir ${host}
[ -d ${host_release} ] || mkdir ${host_release}
[ -d ${objdir} ] || mkdir ${objdir}
touch $@
.${release_tag}-co: .${release_tag}-tagged
${CVS} co -r ${release_tag} ${cvs_module}
mv ${tree} ${release_dir}
touch $@
.${release_tag}-tagged:
${CVS} rtag ${release_tag} ${cvs_module}
touch $@
fluff: ${host_release}/src/Build-A-Release.mk \
${host_release}/src/Pack-A-Progressive \
${host_release}/lib/fixincludes \
${host_release}/src/INSTALL \
${host_release}/README \
${host}/Install \
${host}/install.dvi \
${host_release}/CYGNUS
${host}/install.dvi: ${host_release}/src/install.texinfo
cp $< ${host}/install.texinfo
(cd ${host} ; tex install.texinfo)
(cd ${host} ; tex install.texinfo)
(cd ${host} ; tex install.texinfo)
rm ${host}/install.texinfo
install-notes: ${host}/install.dvi
lpr $^
clean-fluff:
rm -f ${host_release}/src/Build-A-Release.mk \
${host_release}/src/Pack-A-Progressive \
${host_release}/lib/fixincludes \
${host_release}/Install \
${host_release}/src/install-texi.in \
${host_release}/src/install.texinfo \
${host_release}/src/Install.in \
${host_release}/src/Build-A-Release.mk: ${release_dir}/Build-A-Release.mk
rm -f $@; cp $< $@
${host_release}/src/Pack-A-Progressive: ${release_dir}/Pack-A-Progressive
rm -f $@; cp $< $@
${host_release}/src/Install.in: ${release_dir}/Install.in
rm -f $@; cp $< $@
${host_release}/src/CYGNUS: ${release_dir}/CYGNUS
rm -f $@; cp $< $@
${host_release}/CYGNUS: ${host_release}/src/CYGNUS
rm -f $@; cp $< $@
${host_release}/src/install-texi.in: ${release_dir}/sol-inst.texi
rm -f $@; cp $< $@
${host_release}/lib/fixincludes: ${host_release}/src/gcc/fixincludes
rm -f $@; cp $< $@
chmod a+x $@
${host}/Install: ${host_release}/Install
rm -f $@; cp $< $@
chmod a+x $@
${host_release}/Install: ${host_release}/src/Install
rm -f $@; cp $< $@
chmod a+x $@
${host_release}/src/install.texinfo: ${host_release}/src/install-texi.in
$(MAKE) process -f Build-A-Release.mk IN=$< OUT=$@ relno=`echo ${release_dir} | sed "/${tree}-/s///"`
${host_release}/README: ${host_release}/src/README-bin
rm -f $@; cp $< $@
${host_release}/src/INSTALL: ${host_release}/src/install.texinfo
-makeinfo +no-headers +no-split $< -o $@
### remove tags table
sed -e '/^Tag Table/,$$d' $@ | sed -e '$$d' > $@.new
mv -f $@.new $@
${host_release}/src/Install: ${host_release}/src/Install.in
$(MAKE) process -f Build-A-Release.mk IN=$< OUT=$@ relno=`echo ${release_dir} | sed "/${tree}-/s///"`
chmod a+x $@
process: process-${host}
@if grep '||' ${OUT}.new ; then \
echo $0 missed at least one of the triggers. 1>&2 ; \
exit 1 ; \
else \
true ; \
fi
mv -f ${OUT}.new ${OUT}
process-sun4:
sed -e "/^@clear HOSTsun4/s::@set HOSTsun4:" \
-e "/^@set HOSTsun3/s::@clear HOSTsun3:" \
-e "/^@set HOSTdecstation/s::@clear HOSTdecstation:" \
-e "/^@set HOSTiris/s::@clear HOSTiris:" \
-e "/^@set HOSTrs6000/s::@clear HOSTrs6000:" \
-e "/^@set FIXMES/s::@clear FIXMES:" \
-e "/\|\|RELNO\|\|/s::${relno}:g" \
-e "/\|\|TAPdflt\|\|/s::QIC-24:g" \
-e "/\|\|DEVdflt\|\|/s::/dev/nrst8:g" \
-e "/\|\|BD\|\|/s::35:g" \
-e "/\|\|SD\|\|/s::34:g" \
-e "/\|\|DF\|\|/s::69:g" \
-e "/\|\|HOST\|\|/s::Sun-4:g" \
-e "/\|\|HOSTstr\|\|/s::sun4:g" \
-e "/\|\|TARGET\|\|/s::sun4:g" \
-e "/\|\|GCCvn\|\|/s::cygnus-2.0.2:g" \
< ${IN} > ${OUT}.new
process-sparc-sun-solaris2:
sed \
-e "/^@set FIXMES/s::@clear FIXMES:" \
-e "/^@clear CUSTOMER/s::@set CUSTOMER:" \
-e "/^@set CDROMinst/s::@clear CDROMinst:" \
-e "/^@clear TAPEinst/s::@set TAPEinst:" \
-e "/^@set FTPsingle/s::@clear FTPsingle:" \
-e "/^@set FTPsplit/s::@clear FTPsplit:" \
-e "/\|\|MEDIUM\|\|/s::tape:g" \
-e "/\|\|MEDstr\|\|/s::/dev/rmt/0ln:g" \
-e "/\|\|DEVdflt\|\|/s::/dev/rmt/0ln:g" \
-e "/\|\|MEDvar\|\|/s::/dev/@var{tape}:g" \
-e "/\|\|TAPdflt\|\|/s::/dev/@var{tape}:g" \
-e "/\|\|RELNO\|\|/s::1.0:g" \
-e "/\|\|BD\|\|/s::20:g" \
-e "/\|\|SD\|\|/s::28:g" \
-e "/\|\|DF\|\|/s::48:g" \
-e "/\|\|BUNDLE\|\|/s::comp:g" \
-e "/\|\|HOST\|\|/s::SPARC computer:g" \
-e "/\|\|HOSTstr\|\|/s::sparc-sun-solaris2:g" \
-e "/\|\|TARGET\|\|/s::sparc-sun-solaris2:g" \
-e "/\|\|GCCvn\|\|/s::cygnus-2.0.2:g" \
< $(IN) > $(OUT).new
process-sun3:
sed -e "/^@set HOSTsun4/s::@clear HOSTsun4:" \
-e "/^@clear HOSTsun3/s::@set HOSTsun3:" \
-e "/^@set HOSTdecstation/s::@clear HOSTdecstation:" \
-e "/^@set HOSTiris/s::@clear HOSTiris:" \
-e "/^@set HOSTrs6000/s::@clear HOSTrs6000:" \
-e "/^@set FIXMES/s::@clear FIXMES:" \
-e "/\|\|RELNO\|\|/s::${relno}:g" \
-e "/\|\|TAPdflt\|\|/s::QIC-24:g" \
-e "/\|\|DEVdflt\|\|/s::/dev/nrst8:g" \
-e "/\|\|BD\|\|/s::32:g" \
-e "/\|\|SD\|\|/s::34:g" \
-e "/\|\|DF\|\|/s::65:g" \
-e "/\|\|HOST\|\|/s::Sun-3:g" \
-e "/\|\|HOSTstr\|\|/s::sun3:g" \
-e "/\|\|TARGET\|\|/s::sun3:g" \
-e "/\|\|GCCvn\|\|/s::cygnus-2.0.2:g" \
< ${IN} > ${OUT}.new
process-decstation:
sed -e "/^@set HOSTsun4/s::@clear HOSTsun4:" \
-e "/^@set HOSTsun3/s::@clear HOSTsun3:" \
-e "/^@clear HOSTdecstation/s::@set HOSTdecstation:" \
-e "/^@set HOSTiris/s::@clear HOSTiris:" \
-e "/^@set HOSTrs6000/s::@clear HOSTrs6000:" \
-e "/^@set FIXMES/s::@clear FIXMES:" \
-e "/\|\|RELNO\|\|/s::${relno}:g" \
-e "/\|\|TAPdflt\|\|/s::QIC-24:g" \
-e "/\|\|DEVdflt\|\|/s::/dev/nrmt0:g" \
-e "/\|\|BD\|\|/s::27:g" \
-e "/\|\|SD\|\|/s::34:g" \
-e "/\|\|DF\|\|/s::61:g" \
-e "/\|\|HOST\|\|/s::Decstation:g" \
-e "/\|\|HOSTstr\|\|/s::decstation:g" \
-e "/\|\|TARGET\|\|/s::decstation:g" \
-e "/\|\|GCCvn\|\|/s::cygnus-2.0.2:g" \
< ${IN} > ${OUT}.new
true
process-iris4:
sed -e "/^@set HOSTsun4/s::@clear HOSTsun4:" \
-e "/^@set HOSTsun3/s::@clear HOSTsun3:" \
-e "/^@set HOSTdecstation/s::@clear HOSTdecstation:" \
-e "/^@clear HOSTiris/s::@set HOSTiris:" \
-e "/^@set HOSTrs6000/s::@clear HOSTrs6000:" \
-e "/^@set FIXMES/s::@clear FIXMES:" \
-e "/\|\|RELNO\|\|/s::${relno}:g" \
-e "/\|\|TAPdflt\|\|/s::QIC-24:g" \
-e "/\|\|DEVdflt\|\|/s::/dev/mt/tps0d0nrns:g" \
-e "/\|\|BD\|\|/s::25:g" \
-e "/\|\|SD\|\|/s::34:g" \
-e "/\|\|DF\|\|/s::59:g" \
-e "/\|\|HOST\|\|/s::Iris:g" \
-e "/\|\|HOSTstr\|\|/s::iris4:g" \
-e "/\|\|TARGET\|\|/s::iris4:g" \
-e "/\|\|GCCvn\|\|/s::cygnus-2.0.2:g" \
< ${IN} > ${OUT}.new
process-rs6000:
sed -e "/^@set HOSTsun4/s::@clear HOSTsun4:" \
-e "/^@set HOSTsun3/s::@clear HOSTsun3:" \
-e "/^@set HOSTdecstation/s::@clear HOSTdecstation:" \
-e "/^@set HOSTiris/s::@clear HOSTiris:" \
-e "/^@clear HOSTrs6000/s::@set HOSTrs6000:" \
-e "/^@set FIXMES/s::@clear FIXMES:" \
-e "/\|\|RELNO\|\|/s::${relno}:g" \
-e "/\|\|TAPdflt\|\|/s::QIC-24:g" \
-e "/\|\|DEVdflt\|\|/s::/dev/rmt0.1:g" \
-e "/\|\|BD\|\|/s::36:g" \
-e "/\|\|SD\|\|/s::34:g" \
-e "/\|\|DF\|\|/s::70:g" \
-e "/\|\|HOST\|\|/s::RS/6000:g" \
-e "/\|\|HOSTstr\|\|/s::rs6000:g" \
-e "/\|\|TARGET\|\|/s::rs6000:g" \
-e "/\|\|GCCvn\|\|/s::cygnus-2.0.2:g" \
< ${IN} > ${OUT}.new
pclean:
rm -rf ${host}
blockit: blockit.c

222
sol-GNUmakefile Executable file
View File

@ -0,0 +1,222 @@
#!/usr/latest/bin/make -f
#
# Makefile used to three-stage build a tree of source code, usually devo.
#
# Every invocation of this Makefile needs to have a variable set (host),
# which is the named used for ./configure, and also the prefix for the
# various files and directories used in a three stage.
#
ifndef host
error:
@echo
@echo
@echo You must set the variable \"host\" to use this Makefile
@echo
@echo
@exit 1
else
#
# from here to very near the end of the file is the real guts of this
# Makefile, and it is not seen if the variable 'host' is not set
#
TREE := progressive
ROOTING := /opt/cygnus-sol2-1.0
CVS_MODULE := progressive-solaris
TAG_DATE := 920615
RELEASE_TAG := $(CVS_MODULE)-$(TAG_DATE)
release_root := $(ROOTING)
TIME := time
NICE := nice -17
MF := -w
GNUC := gcc -g
SHELL := /bin/sh
INSTDIR := $(shell pwd)/$(host)
PREFIXES := prefix=$(ROOTING)
ifdef target
arch=$(host)=$(target)
endif
.PHONY: all
all: do1 do2 do3
.PHONY: configuration
configuration: $(TREE) $(host)-stamp-stage1-configured
.PHONY: comparison
comparison:
for i in `cd $(host)-objdir.3 ; find . -name \*.o -print` ; do \
cmp $(host)-objdir.2/$$i $(host)-objdir.3/$$i ; \
done
.PHONY: clean
clean:
rm -rf $(host)-$(TREE)-holes $(host)-objdir $(host)-objdir.[123] $(host)-stamp-stage[123]* $(host)-stamp-holes *~
.PHONY: very
very:
rm -rf $(TREE)
$(TREE):
$(TIME) cvs co $(CVS_TAG) $(CVS_MODULE)
.PHONY: do1
do1: $(host)-$(TREE)-holes $(host)-stamp-stage1
$(host)-stamp-stage1: $(host)-objdir.1
touch $(host)-stamp-stage1
$(host)-objdir.1: $(TREE) $(host)-stamp-stage1-configured
(cd $(host)-objdir ; $(TIME) make $(MF) all info host=$(host))
@echo CONFIGURE: make all completed for $(host)
(cd $(host)-objdir ; $(TIME) make $(MF) install install-info host=$(host))
@echo CONFIGURE: make install-all completed for $(host)
mv $(host)-objdir $(host)-objdir.1
$(host)-stamp-stage1-configured:
[ -d $(host)-objdir ] || mkdir $(host)-objdir
(cd $(host)-objdir ; \
$(TIME) ../$(TREE)/configure $(host) -v -srcdir=../$(TREE) \
-prefix=$(ROOTING))
touch $@
.PHONY: do2
do2: $(host)-$(TREE)-holes $(host)-stamp-stage2
$(host)-stamp-stage2: $(host)-objdir.2
PATH=$(release_root)/bin:`pwd`/$(host)-$(TREE)-holes ; \
export PATH ; \
echo $$PATH ; \
SHELL=sh ; export SHELL ; \
$(TIME) make $(host)-objdir.2 host=$(host)
touch $(host)-stamp-stage2
$(host)-objdir.2: $(TREE) $(host)-stamp-stage2-configured
[ -d $(host)-objdir ] || mkdir $(host)-objdir
(cd $(host)-objdir ; $(TIME) make $(MF) all info "CC=$(GNUC)" host=$(host))
(cd $(host)-objdir ; $(TIME) make $(MF) $(PREFIXES) install install-info "CC=$(GNUC)" host=$(host))
mv $(host)-objdir $(host)-objdir.2
$(host)-stamp-stage2-configured:
[ -d $(host)-objdir ] || mkdir $(host)-objdir
(cd $(host)-objdir ; \
$(TIME) ../$(TREE)/configure $(host) -v -srcdir=../$(TREE) \
-prefix=$(ROOTING))
touch $@
.PHONY: do3
do3: $(host)-$(TREE)-holes $(host)-stamp-stage3
$(host)-stamp-stage3: $(host)-objdir.3
PATH=$(release_root)/bin:`pwd`/$(host)-$(TREE)-holes ; \
export PATH ; \
SHELL=sh ; export SHELL ; \
$(TIME) make $(host)-objdir.3 host=$(host)
touch $(host)-stamp-stage3
$(host)-objdir.3: $(TREE) $(host)-stamp-stage3-configured
[ -d $(host)-objdir ] || mkdir $(host)-objdir
(cd $(host)-objdir ; $(TIME) make $(MF) all info "CC=$(GNUC)" host=$(host))
(cd $(host)-objdir ; $(TIME) make $(MF) install-no-fixedincludes install-info "CC=$(GNUC)" host=$(host))
mv $(host)-objdir $(host)-objdir.3
$(host)-stamp-stage3-configured:
[ -d $(host)-objdir ] || mkdir $(host)-objdir
(cd $(host)-objdir ; \
$(TIME) ../$(TREE)/configure $(host) -v -srcdir=../$(TREE) \
-prefix=$(ROOTING))
touch $@
HOLES := [ \
ar \
as \
awk \
basename \
cat \
cc \
chmod \
cmp \
cp \
date \
echo \
egrep \
ex \
expr \
find \
grep \
hostname \
install \
ld \
lex \
ln \
ls \
mkdir \
mv \
pwd \
ranlib \
rm \
rmdir \
sed \
sh \
sort \
time \
touch \
tr \
true \
whoami
PARTIAL_HOLES := \
gcc \
make
$(host)-$(TREE)-holes: $(host)-stamp-holes
$(host)-stamp-holes:
-rm -rf $(host)-$(TREE)-holes
-mkdir $(host)-$(TREE)-holes
for i in $(HOLES) ; do \
if [ -x $(host)-$(TREE)-holes/$$i ] ; then \
echo "$$i already present" ; \
else if [ -x /bin/$$i ] ; then \
cp /bin/$$i $(host)-$(TREE)-holes ; \
echo $$i from /bin ; \
else if [ -x /usr/bin/$$i ] ; then \
cp /usr/bin/$$i $(host)-$(TREE)-holes ; \
echo $$i from /usr/bin ; \
else if [ -x /usr/ccs/bin/$$i ] ; then \
cp /usr/ccs/bin/$$i $(host)-$(TREE)-holes ; \
echo $$i from /usr/ccs/bin ; \
else if [ -x /usr/unsupported/bin/$$i ] ; then \
cp /usr/unsupported/bin/$$i $(host)-$(TREE)-holes ; \
echo $$i from /usr/unsupported/bin ; \
else \
echo $$i is NOT found ; \
fi; fi ; fi ; fi ; fi ; true ; \
done
for i in $(PARTIAL_HOLES) ; do \
if [ -x /usr/latest/bin/$$i ] ; then \
cp /usr/latest/bin/$$i $(host)-$(TREE)-holes ; \
echo $$i from /usr/latest/bin ; \
else if [ -x /usr/unsupported/bin/$$i ] ; then \
cp /usr/unsupported/bin/$$i $(host)-$(TREE)-holes ; \
echo $$i from /usr/unsupported/bin ; \
fi; fi; \
done
touch $(host)-stamp-holes
force:
endif # host
### Local Variables:
### fill-column: 131
### End:

2238
sol-inst.texi Normal file

File diff suppressed because it is too large Load Diff

436
sol-intro.texi Normal file
View File

@ -0,0 +1,436 @@
\input texinfo
@c $Id$
@setfilename intro.info
@settitle Introduction
@iftex
@c The include file "texiplus.tex" is in the texinfo/cygnus dir, and
@c implements Cygnus modifications to the texinfo manual style.
@input texiplus
@c The include file "smpklug.texi" is a kluge to deal with local
@c document production issues at Cygnus; it's safe to comment out this
@c line if you don't have (or don't want) the file.
@input smpklug.texi
@smallbook
@cropmarks
@finalout
@end iftex
@titlepage
@title Introduction
@sp 3
@subtitle Cygnus Support Developer's Kit for Solaris 2.0
@author Cygnus Support
@page
@tex
\def\$#1${{#1}} % Kluge: collect RCS revision info without $...$
\xdef\manvers{\$Revision$} % for use in headers, footers
{\parskip=0pt \hfill Cygnus Support\par \hfill {\it Introduction (Solaris-2)}, \manvers\par \hfill
\TeX{}info \texinfoversion\par }
@end tex
@vskip 0pt plus 1filll
Copyright @copyright{} 1991, 1992 Cygnus Support
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
are preserved on all copies.
Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided also that
the entire resulting derived work is distributed under the terms of a
permission notice identical to this one.
Permission is granted to copy and distribute translations of this manual
into another language, under the above conditions for modified versions.
@end titlepage
@node Top
@unnumbered Introduction
This Developer's Kit puts at your disposal, in a single coordinated
and tested release, some of the best software development tools
available:
@table @t
@item gcc
C compiler (and its supporting programs and libraries)
@item gdb
Debugger
@item gprof
Performance analyzer
@item byacc
Parser generator
@item flex
Fast lexical analyzer generator
@item send_pr
Cygnus problem-reporting utillity
@item patch
Source-code update utility
@item info
@itemx makeinfo
Online documentation tools
@item texinfo.tex
@itemx texindex
Documentation printing tools
@end table
These tools are free software; many of them are from the Free Software
Foundation (FSF) GNU project (in speech, the `G' in GNU is sounded).
Others were developed by the University of California, Berkeley and its
contributors.
Cygnus Support collaborates with the FSF in developing these tools. In
this product, we've ported recent forms of the development tools to
Solaris 2, tested them, made sure they work well together, and made them
easy to install---the installation package comes with binaries already
compiled for your system.
Cygnus Support exists to help our clients exploit their freedom in
using, adapting, or enhancing this software. @xref{Cygnus,,About Cygnus
Support}, for more information.
@menu
* Copying:: Free Software
* Manuals:: Printed and Online Manuals
* Info:: Using Online Documentation
* Bugs:: Reporting Trouble
* Cygnus:: About Cygnus Support
@end menu
@page
@node Copying
@section Free Software
If you find our Developer's Kit useful, please feel free to give or sell
copies of the software and documentation to anyone you like.
Cygnus products are @dfn{free software}, protected by the @sc{gnu} General
Public License (GPL). The GPL gives you the freedom to copy or adapt any
program it licenses---but every person getting a copy also gets with it the
freedom to modify that copy (which means that they must get access to
the source code), and the freedom to distribute further copies. Typical
software companies use copyrights to limit your freedoms; the GPL is
designed to preserve your freedoms.
Fundamentally, the General Public License is a license which grants you
these freedoms, and only imposes restrictions to ensure that no one can
take these freedoms away from anyone else.
For full details, see the @strong{LICENSE} section in this manual
set.
@page
@node Manuals
@section Manuals
@noindent
These printed manuals are included in your Cygnus Progressive Release:
@display
@cite{Using the @sc{gnu} C Compiler}
@cite{The C Preprocessor}
@cite{GDB: The @sc{gnu} Source-Level Debugger}
@end display
The manuals are also designed for easy online browsing (@pxref{Info,,Online
Documentation}). For online use, the accompanying software distribution
includes all the printed manuals, and also the following documents:
@table @emph
@item FLEX: A Fast Lexical Analyzer Generator
Generates lexical analyzers suitable for GCC and other compilers.
@item Info: Documentation Browsing System
Full details on the @code{info} browser.
@item Texinfo: The @sc{gnu} Documentation Format
How you can use @TeX{} to print these manuals, and how to write your own
manuals in this style.
@item Using and Porting @sc{gnu cc}
Detailed information about what's needed to put @sc{gnu cc} on different
platforms, or to modify @sc{gnu cc}. Also includes all the
information in the printed manual @cite{Using the @sc{gnu} C Compiler}.
@end table
@noindent
Finally, @code{man} pages are included for all the programs in the release.
You have the freedom to copy the manuals, like the software they cover;
each manual's copyright statement includes the necessary permissions.
The manuals themselves are also free software, and the source for them
is also available in the installation package.
@node Info
@section Using Online Documentation
You can browse through the online documentation using either @sc{gnu} Emacs,
or the (included) program @code{info}.
Online, the manuals are organized into @dfn{nodes}, which correspond to
the chapters and sections of a printed book. You can follow them in
sequence, if you wish, just like in the printed book---but there are
also other choices. The documents have menus that let you go quickly to
the node that has the information you need. @code{info} has ``hot''
references; if one section refers to another, you can tell @code{info}
to take you immediately to that other section---and you can get back
again easily to take up your reading where you left off. Naturally, you
can also search for particular words or phrases.
The best way to get started with the online documentation system is to
run the browser @code{info}. After the Progressive Release is installed on
your system, you can get into @code{info} by just typing its name---no
options or arguments are necessary---at your shell's prompt (shown as
@samp{eg%} here):
@example
eg% info
@end example
@noindent
@code{info} will display its first screen, a menu of the documentation
available, and will await your input. Typing the single letter
@example
h
@end example
@noindent
requests a tutorial, designed to teach you how to use @code{info}.
If you already use Emacs, you may want to get into the documentation
browsing mode, instead, by typing @kbd{C-h i} inside Emacs.
You can get out of @code{info} at any time by typing the single letter
@kbd{q}.
@page
Here is a summary of all the @code{info} commands; @code{info} itself
can display a summary like this at any time, when you type the single
character @kbd{?}.
@smallexample
@cartouche
h @r{Invoke the Info tutorial.}
q @r{Quit Info}
@i{Selecting other nodes:}
n @r{Move to the ``next'' node of this node.}
p @r{Move to the ``previous'' node of this node.}
u @r{Move ``up'' from this node.}
m @r{Pick menu item specified by name (or abbreviation).}
@r{Picking a menu item moves to the corresponding node.}
f @r{Follow a cross reference. Reads name of reference.}
l @r{Move to the last node you were looking at.}
@i{Moving within a node:}
Space @r{scroll forward a page.}
DEL @r{scroll backward a page.}
b @r{Go to beginning of this node.}
@i{Advanced commands:}
1 @r{Pick first item in node's menu.}
2 - 5 @r{Pick second ... fifth item in node's menu.}
g @r{Move to node specified by name.}
@r{You may include a filename as well, as @code{(@var{FILENAME})@var{NODENAME}}.}
s @r{Search through this Info file for a specified string,}
@r{and select the node in which the next occurrence is found.}
Ctl-p @r{Print the contents of this node using @samp{lpr}.}
@end cartouche
@end smallexample
@page
@node Bugs
@section Reporting Trouble
We've tried to make the programs in your Progressive Release as
trouble-free as possible. If you do encounter trouble, however, we'd
like to be able to diagnose and fix the problem as quickly as possible.
You can help us do that by using the script @code{send_pr} to send us your
problem reports.
@code{send_pr} invokes an editor on a problem report form (after
trying to fill in some fields with reasonable default values). After
you exit the editor, @code{send_pr} sends the filled out form to the
problem report management system (PRMS) at Cygnus Support. You can
use the environment variable @code{EDITOR} to specify what editor to
use (the default is @code{vi}).
@code{send_pr} attempts to send your problem report to Cygnus via
electronic mail. If your site cannot support this, you can still use
the problem report form: use @samp{send_pr -p} to capture a copy of the
blank problem-report form and fill it in. (You can also photocopy the
blank form at the end of this section to fill in.) In either case you
can FAX the problem report to Cygnus at @w{+1 415 322 3270}.
At Cygnus Support, the problem report is assigned a unique number and is
stored in the PRMS database according to its category and your
customer ID. PRMS automatically replies with an acknowledgement, citing
the category and the PR number. As the next step, Cygnus staff inspects
the bug report (if you've marked your report as high priority, we respond
with an analysis of the problem in less than five business days). We'll
offer a solution as soon as possible, and await your feedback. As a
matter of policy, we do not consider your problem report closed until
you've agreed with a solution we offer.
To ensure that a problem report is handled promptly, it must contain
your (unique) customer ID and one of the available categories, shown as
comments in the problem report form, to identify the problem area. As a
Cygnus Support customer, you can obtain your customer ID by invoking
@code{send_pr} with the @samp{-request-id} option.
@page
@subsection Filling out a problem report
Problem reports are structured so that a program can manage them. When
filling out the form, please remember the following guidelines:
@itemize @bullet
@item
Each PR needs a valid customer ID and category.
@item
Describe only one problem with one PR.
@item
For follow-up mail, use the same subject line as the one in the
automatic acknowledgent. It shows the category, the PR number and the
original synopsis line. This allows Cygnus Support to make sure mail on
the same problem report stays together.
@item
Please try to make the subject or synopsis line as informative
as possible. For misbehaving software, you might use a sentence of
the form ``with input foo, component xyz produces bar''.
@item
You don't need to delete the comment lines while editing the PR form;
this is done by @code{send_pr}. Put your information before or
after the comment.
@end itemize
@page
For full details on @code{send_pr} and the supporting form, see the man
page @code{send_pr}(1). Here is a sample blank problem-report form; if
electronic mail from your site cannot reach Cygnus, you can send us
problem reports by photocopying this sample, filling it out, and sending
it by FAX to @w{+1 415 322 3270}.
@iftex
@widen{28pt}
@end iftex
@smallexample
SEND_PR: Choose from the following categories:
SEND_PR:
SEND_PR: bfd binutils bison clib config cvs
SEND_PR: diff doc emacs g++ gas gcc
SEND_PR: gdb grep ispell ld libg++ libiberty
SEND_PR: libiberty make rcs readline send_pr texinfo
SEND_PR: other
SEND_PR:
To: cygnus-bugs@@cygnus.com
Subject:
From:
Reply-To:
X-send-pr-version: send_pr: 1.15
>Customer-Id:
>Originator: <name of the PR author (one line)>
>Organization: <organization of PR author (multiple lines)>
>Confidential: <[ yes | no ] (one line)>
>Synopsis: <synopsis of the problem (one line)>
>Severity: <[ non-critical | serious | critical ] (one line)>
>Priority: <[ low | medium | high ] (one line)>
>Category: <name of the product (one line)>
>Class: <[ sw-bug | doc-bug | change-request | support ] (one line)>
>Release: <release number or tag (one line)>
>Environment:
<machine, os, target, libraries (multiple lines)>
>Description:
<precise description of the problem (multiple lines)>
>How-To-Repeat:
<code/input/activities to reproduce the problem (multiple lines)>
@end smallexample
@iftex
@widen{-28pt}
@end iftex
@page
@node Cygnus
@section About Cygnus Support
Cygnus Support was founded in 1989 to provide commercial support for
free software. Cygnus supplies products and services that benefit
advanced development groups by allowing them to use state-of-the-art
tools without having to maintain them. With Cygnus Support, sites that
once were forced to do their own tool support can recover that valuable
staff time. Former users of proprietary software now may choose
supported free software, combining the advantages of both worlds.
Free software is faster, more powerful, and more portable than its
proprietary counterparts. It evolves faster because users who want to
make improvements are free to do so. Cygnus tracks these
improvements and integrates them into tested, stable versions ready
for commercial use, then backs this software with comprehensive
support.
With Cygnus Support as your partner, you will have the software and
the support you need to meet your business objectives. Cygnus
is intimately familiar with this software from extensive experience
using, debugging, and implementing it. You get direct access to the
most qualified support people: the authors of that software.
We provide up-to-the minute ``progressive'' releases, for those who need
the very latest version---or ``vintage'' releases: stable versions which
have been through extensive use and testing.
Because all our improvements are also free software, you can
distribute them widely within your organization, or to your customers,
without extra cost.
@sp 4
@display
Cygnus Support
814 University Avenue
Palo Alto, CA 94301, USA
+1 415 322 3811
email: @code{info@@cygnus.com}
fax: +1 415 322 3270
@end display
@bye

8
sol-make-ftp Normal file
View File

@ -0,0 +1,8 @@
BINFILES=cygnus-sol2-1.0/{Install,README,bin,lib,info,include,man}
SRCFILES=cygnus-sol2-1.0/{README,src}
cd sparc-sun-solaris2
tar cf cygnus-sol2-1.0.bin.tar ${BINFILES}
tar cf cygnus-sol2-1.0.src.tar ${SRCFILES}
tar cf cygnus-sol2-1.0.tar ${BINFILES} ${SRCFILES}

503
sol-rel.texi Normal file
View File

@ -0,0 +1,503 @@
\input texinfo
@c
@c This file may require a nonstandard texinfo.tex to format; if you
@c need it, please contact Cygnus Support (email editor-in-chief@cygnus.com)
@setfilename SOLARIS2.info
@c
@c This file describes a Cygnus Solaris Release (Developer's Kit).
@c
@c Copyright (C) 1991, 1992 Cygnus Support
@c This text may be freely distributed under the terms of the GNU
@c General Public License.
@c
@c $Id$
@c
@iftex
@c The include file "texiplus.tex" is in the texinfo/cygnus dir, and
@c implements Cygnus modifications to the texinfo manual style.
@input texiplus
@c The include file "smpklug.texi" is a kluge to deal with local
@c document production issues at Cygnus; it's safe to comment out this
@c line if you don't have (or don't want) the file.
@input smpklug.texi
@smallbook
@cropmarks
@finalout
@settitle Release Notes
@setchapternewpage on
@c
@end iftex
@titlepage
@title Release Notes
@sp 3
@table @strong
@item Cygnus Support Developer's Kit
@item Release 1.0 for Solaris-2
@end table
@author Cygnus Support
@page
@tex
\def\$#1${{#1}} % Kluge: collect RCS revision info without $...$
\xdef\Rmanvers{{\it Release Notes (Solaris-2 Developer's Kit)}, \$Revision$} % *NOT* for use in headers, footers
{\parskip=0pt \hfill Cygnus Support\par \hfill \Rmanvers\par \hfill
\TeX{}info \texinfoversion\par }
\global\def\manvers{Solaris-2 Rel 1.0}
@end tex
@vskip 0pt plus 1filll
This product includes software developed by the University of
California, Berkeley and its contributors.
This note is copyright @copyright{} 1992 Cygnus Support
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
are preserved on all copies.
Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided also that
the entire resulting derived work is distributed under the terms of a
permission notice identical to this one.
Permission is granted to copy and distribute translations of this manual
into another language, under the above conditions for modified versions.
@end titlepage
@c PROOFREADING: set FIXMES to include FIXME text in formatted
@c output
@clear FIXMES
@ifinfo
@node Top
@top Solaris-2 Developer's Kit release 1.0
@menu
* Introduction:: Overview
* Contributors:: GCC for Solaris-2 exists thanks to these people
* Versions:: Closest FSF Versions
* New:: New in This Release
* Limits:: Limitations and Warnings
@end menu
This product includes software developed by the University of
California, Berkeley and its contributors.
This file is copyright @copyright{} 1992 Cygnus Support
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
are preserved on all copies.
Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided also that
the entire resulting derived work is distributed under the terms of a
permission notice identical to this one.
Permission is granted to copy and distribute translations of this manual
into another language, under the above conditions for modified versions
@end ifinfo
@node Introduction
@chapter Overview
@table @strong
@item Cygnus Support Developer's Kit
@item Solaris-2 Release 1.0
@end table
Sun has unbunded its compilers---selling them separately from the
Solaris 2.0 operating system. Many Sun users were unhappy that their
next upgrade might take away their C compiler.
In response, Cygnus Support ported the GNU C compiler and supporting
tools to Solaris 2.0. The result is a full set of development
tools---ANSI and traditional C compiler (with supporting libraries),
debugger, parser generator, and lexical analyzer generator---freely
available to everyone.
The GNU C compiler can be used to compile any kind of program: public
domain, copyleft, or proprietary. Your binaries have the same
copyright status as your sources and libraries. The only provision of
the GNU General Public License that applies to users of the compiler
(as opposed to people who make copies of the compiler, or modify it)
is the lack of warranty (section 11 and 12). FSF does not provide a
warranty to anyone, but Cygnus gives a 1-year limited warranty (a year
of support) to customers.
@node Contributors
@chapter Contributors to GNU C for Solaris-2
Cygnus Support and the FSF are grateful to the forward-looking individuals and
organizations that sponsored this project.
@noindent
We are glad to be able to thank publicly:
@itemize @bullet
@item
Amoco Production Company (Houston, Texas)
@item
BBN Communications (Cambridge, Massachusetts)
@item
Boston Technology (Wakefield, Massachusetts)
@item
Cirrus Logic (Fremont, California)
@item
Compaq Computer Corporation (Houston, Texas)
@item
Deere & Company (Moline, Illinois)
@item
ELF Commnuications (San Francisco, California)
@item
European Computer-Industry Research Centre GMBH (Munich)
@item
Fidelity Investments (Boston, Massachusetts)
@item
FTP Software, Inc. (Wakefield, Massachusetts)
@item
Gallagher & Robertson (Oslo, Norway)
@item
GTE Laboratories (Waltham, Massachusetts)
@item
Ingres Corporation (Alameda, California)
@item
Inland Sea (Dexter, Michigan)
@item
Los Alamos National Laboratory (Los Alamos, New Mexico)
@item
Miller/Howard Investures (Cobleskill, New York)
@item
MIT Lincoln Laboratory (Lexington, Massachusetts)
@item
NASA Lewis Research Center (Cleveland, Ohio)
@item
Optimation Software (Melbourne, Australia)
@item
PFU Limited (Tokyo)
@item
Philips Laboratories (Briarcliff Manor, New York)
@item
Pure Software (Los Altos, California)
@item
Qualix Group, Inc. (San Mateo, California)
@item
Schlumberger-Doll Research (Ridgefield, Connecticut)
@item
Kevin Sheehan (Melbourne, Australia and elsewhere)
@item
State University of New York (SUNY) at Buffalo
@item
SunSoft, Inc. (Mountain View, California)
@item
@tex
Technische Universit\"at M\"unchen (Munich)
@end tex
@ifinfo
Technische Universitaet Muenchen (Munich)
@end ifinfo
@item
Telecom Finland (Helsinki)
@item
Telecom Research Labs (Victoria, Australia)
@item
Union Bank of Switzerland (Zurich)
@item University of Pennsylvania (Philadelphia)
@item
University of Washington (Seattle)
@item
UUNET Technologies, Inc. (Falls Church, Virginia)
@item
Warwick University (Coventry, England)
@item
Xerox Palo Alto Research Center (Palo Alto, California)
@end itemize
We are also grateful to six other organizations and individuals who
contributed to this project, but prefer to remain anonymous.
@node Versions
@chapter Closest FSF Versions
Cygnus Support devotes much of its effort to integrating and improving
free software. In fact, Cygnus employees are the primary developers
of several important components of the GNU tool-chain (on behalf of
the Free Software Foundation). However, especially for programs whose
FSF releases are issued elsewhere, our releases are often slightly
ahead of the nearest corresponding FSF version (and sometimes slightly
behind it). We reintegrate our sources with the FSF as frequently as
possible without compromising the stability of the integrated
toolchain.
These are the nearest corresponding FSF releases of the GNU development
tools:
@table @sc
@item @emph{Program}
@emph{Last merged with FSF version}
@item gcc
2.0 (but many improvements from 2.1 and 2.2 incorporated)
@item gdb
4.6 (maintained at Cygnus)
@end table
@node New
@chapter New in This Release
@table @strong
@item GCC
Near command-line compatibility with the SVID specification for
@code{cc}, and with the SVr4 @code{cc}. ELF output (with embedded
@code{stabs} format debugging information; this is compatible with Sun's
compilers). Many bug-fixes (from the base FSF level, and from our
Progressive--920318 release for SunOS).
@item CPP
New directive @code{#assert}; you can use this directive, together with
enhancements to @code{#if}, to declare and test for particular system
properties.
@item GDB
GDB understands the debugging format used by Solaris-2 compilers (both
ours and Sun's): @code{stabs} debugging information embedded in ELF
object files.
Since our Progressive--920318 release for SunOS, we have also made these
improvements to GDB:
Many bug fixes.
GDB now uses a new memory manager called @code{mmalloc}, an enhancement
of @sc{GNU} @code{malloc}. It can greatly speed up the startup of GDB
by using a pre-parsed symbol table in a @code{mmalloc}-managed heap.
Since memory-mapped files are available on Solaris-2 through the @code{mmap}
system call, you can have GDB write the symbols from your program into a
reusable file.
@item FLEX and BYACC
Release 1.0 for Solaris 2 includes @code{flex}, the fast lexical analyzer
generator, and @code{byacc}, the parser generator---both from UC
Berkeley. There are no restrictions on what use you can make of lexical
analyzers generated by @code{flex}, or parser generators built by
@code{byacc}.
Since @code{flex} and @code{byacc} are of interest only to a specialized
audience, we ship only on-line documentation for them.
@inforef{Top,,flex.info}, or the @code{man} pages @samp{flex.1} and
@samp{byacc.1}.
@item Problem Reports
The script @code{install_cid} is now available to record your Cygnus
customer ID for the problem-reporting utility, @code{send_pr}, on your
system.
A blank Problem Report form is now included in the @cite{Introduction}
to your Developer's Kit manuals, in case FAX is more convenient than
electronic mail to send us problem reports.
Since these programs are free software, many people who receive them
will not get them directly from Cygnus Support. We will be glad to
support you no matter where you got the software. If you have not yet
bought support from Cygnus for this set of tools, you can call us at
@w{+1 415 322 3811} for a support contract, and start reporting problems
and getting fixes.
@end table
@node Limits
@chapter Limitations and Warnings
Our major goals in this release was compatibility: with the System V
Interface Definition (@sc{svid}), with other Solaris-2 tools, and with
the @sc{sparc} Application Binary Interface (@sc{abi}).
We have been largely successful: our toolchain complies with the
@sc{svid} specifications for compilation tools, most of the tools are
also command-line compatible with the Sun offerings (even in cases where
these go beyond the @sc{svid}), and we know of only one violation of the
@sc{abi}.
The following sections give details on the few remaining compatibility
issues.
@menu
* gcc-options:: Some Solaris-2 cc options not accepted
* cc-gdb:: Using gdb on Sun compiler output
* long double:: The long double datatype violates the ABI
* ABI:: No independent verification of ABI compliance
@end menu
@node gcc-options
@section Some Solaris-2 @code{cc} options are not accepted
In porting the @sc{gnu} C compiler to Solaris-2, we wanted to have
command-line compatibility with several compilers:
@itemize @bullet
@item
@sc{svid} specification for @code{cc}
@item
Other @sc{gcc} configurations
@item
Unix SVr4 implementation of @code{cc}
@item
Sun compiler for Solaris-2
@end itemize
@noindent
Unfortunately, these specifications are not altogether compatible; we
have compromised in some areas, giving the most weight to the @sc{svid}
specification and to @sc{gcc} on other platforms.
Here is a list of command line options @emph{not} accepted by
@code{gcc}, but meaningful in one of the other command-line
specifications listed:
@table @code
@item -Bstatic
@itemx -Bdynamic
Use @samp{-static} or @samp{-symbolic} instead. (@samp{-Bstatic} and
@samp{-Bdynamic} are supported by Sun compilers, but are not in the
@sc{svid}.)
@item -dy
@itemx -dn
These Solaris-2 linker options conflict with @sc{gcc} debugging options.
Again, use @samp{-symbolic} or @samp{-static} instead; or pass the
linker options directly to the linker using @samp{-Xlinker} or
@samp{-W}.
@item -f
@sc{gcc} has a large family of options that begin with @samp{-f}. All
of these options are supported as in other versions of @sc{gcc}. The
SVr4 specification describes this option as accepted, but ignored; in
the @sc{svid}, it is used to specify floating-point emulation.
@item -J sfm
This SVr4 option appears to specify linking against a special-purpose
subroutine library. It is not in the @sc{svid}, and @sc{gcc} does not
support it.
@item -K
@sc{gcc} does not support @samp{-K}. To specify position-independent
code output, use @samp{-pic}.
@item -P
This preprocessor option retains its usual @sc{gcc} meaning, which is
slightly different from the @sc{svid} and SVr4 descriptions (which are
not quite identical with one another). It is used to generate
preprocessor output---similar to @samp{-E}, but without embedding
@code{#line} directives. However, for @sc{gcc}, the output still goes
to @file{stdout} rather than to a @samp{.i} file. To place output in a
@samp{.i} file, use command-line output redirection.
@item -q
This option is defined as implementation-specific by the @sc{svid}.
This implementation does not include it.
@item -V
Displays version information for @emph{only} the assembler and linker.
@item -v
Displays the full invocation of each compiler pass, as usual for
@sc{gcc}. This option is not defined in the @sc{svid}, but the SVr4
documentation describes it as similar to the @sc{gcc} options
@samp{-pedantic} or @samp{-pedantic-errors}. We recommend using those
options instead.
@item -W
@itemx -Y
In this implementation, @samp{-W} and @samp{Y} are restricted to
controlling the assembler and linker (the other compiler passes used by
@sc{gcc} do not exactly correspond to those in the @sc{svid}).
@item -X
This option is not in the @sc{svid}, but is used in SVr4 to give a
little control over the dialect of C. For this purpose, you can use the
standard @sc{gcc} options @samp{-traditional}, @samp{-ansi}, or the
other options described in @ref{Dialect Options,,Options Controlling
Dialect, usegcc.info, Using gcc}.
@end table
For full descriptions of the @sc{gcc} command line options in this
release, see the manual @cite{Using gcc}, or the man page @code{gcc.1}.
@node cc-gdb
@section Using @code{gdb} on Sun Compiler Output
By default, the Sun compiler @code{cc} and the system assembler
@code{as} omit debugging information from the final linked output file,
assuming the debugger will look in the @samp{.o} files for this
information. @code{gdb} will not do this. If you have the Sun compiler
@code{cc} and want to debug its output with @code{gdb}, you must include
the command-line flag @samp{-xs} when you run @code{cc}, to instruct it
to place debugging information where it will be copied to the linked
output file. Similarly, if you call the system assembler @code{as}
directly, use its command-line option @samp{-s} for the same purpose.
@node long double
@section The @code{long double} datatype violates SPARC ABI
The @sc{sparc} Application Binary Interface (@sc{abi}) specifies that
numbers of type @code{long double} take up 16 bytes. In this release,
@code{gcc} only emits 8-byte numbers for @code{long double}.
This is the only known violation of the @sc{abi}. We will fix this
problem in a future release.
@node ABI
@section No independent verification of ABI compliance
We have made every effort to comply with the @sc{sparc} @sc{abi}, and we
are aware of only one violation (noted above). However, there is as yet
no independent verification of our compiler's compliance.
@sc{sparc} International is preparing an ABI compliance test suite, but
it won't be available until sometime in the autumn of 1992. We will
seek verification of our compiler's compliance as soon as @sc{sparc}
International is ready.
@contents
@bye

22
sol-subst-strings Executable file
View File

@ -0,0 +1,22 @@
#!/bin/sh
sed -e "/^@set FIXMES/s::@clear FIXMES:" \
-e "/^@clear CUSTOMER/s::@set CUSTOMER:" \
-e "/^@set CDROMinst/s::@clear CDROMinst:" \
-e "/^@clear TAPEinst/s::@set TAPEinst:" \
-e "/^@set FTPsingle/s::@clear FTPsingle:" \
-e "/^@set FTPsplit/s::@clear FTPsplit:" \
-e "/\|\|MEDIUM\|\|/s::tape:g" \
-e "/\|\|MEDstr\|\|/s::/dev/rmt/0ln:g" \
-e "/\|\|DEVdflt\|\|/s::/dev/rmt/0ln:g" \
-e "/\|\|MEDvar\|\|/s::/dev/@var{tape}:g" \
-e "/\|\|TAPdflt\|\|/s::/dev/@var{tape}:g" \
-e "/\|\|RELNO\|\|/s::1.0:g" \
-e "/\|\|BD\|\|/s::20:g" \
-e "/\|\|SD\|\|/s::28:g" \
-e "/\|\|DF\|\|/s::48:g" \
-e "/\|\|BUNDLE\|\|/s::comp:g" \
-e "/\|\|HOST\|\|/s::SPARC computer:g" \
-e "/\|\|HOSTstr\|\|/s::sparc-sun-solaris2:g" \
-e "/\|\|TARGET\|\|/s::sparc-sun-solaris2:g" \
-e "/\|\|GCCvn\|\|/s::cygnus-2.0.2:g" \
< $1 > $2

24
sol-subst-strings-ftp Executable file
View File

@ -0,0 +1,24 @@
#!/bin/sh
sed -e "/^@set FIXMES/s::@clear FIXMES:" \
-e "/^@set CUSTOMER/s::@clear CUSTOMER:" \
-e "/^@set CDROMinst/s::@clear CDROMinst:" \
-e "/^@set TAPEinst/s::@clear TAPEinst:" \
-e "/^@set FTPsingle/s::@clear FTPsingle:" \
-e "/^@clear FTPsplit/s::@set FTPsplit:" \
-e "/\|\|DEVdflt\|\|/s::/dev/rmt/0ln:g" \
-e "/\|\|TAPdflt\|\|/s::/dev/@var{tape}:g" \
-e "/\|\|MEDIUM\|\|/s::tape:g" \
-e "/\|\|MEDstr\|\|/s::/dev/rmt/0ln:g" \
-e "/\|\|MEDvar\|\|/s::/dev/@var{tape}:g" \
-e "/\|\|RELNO\|\|/s::1.0:g" \
-e "/\|\|BD\|\|/s::20:g" \
-e "/\|\|SD\|\|/s::28:g" \
-e "/\|\|DF\|\|/s::48:g" \
-e "/\|\|BUNDLE\|\|/s::comp:g" \
-e "/\|\|HOST\|\|/s::SPARC computer:g" \
-e "/\|\|HOSTstr\|\|/s::sparc-sun-solaris2:g" \
-e "/\|\|TARGET\|\|/s::sparc-sun-solaris2:g" \
-e "/\|\|GCCvn\|\|/s::cygnus-2.0.2:g" \
-e "s/^INSTALLDIR_DEFAULT=.*$/INSTALLDIR_DEFAULT=../" \
-e "s/^FTPRELEASE=.*/FTPRELEASE=yes/" \
< $1 > $2

30
tape-labels-tex.in Normal file
View File

@ -0,0 +1,30 @@
\input tapelab
\label 0
Emacs
progressive-||RELNO||\_||TAPdflt||
||HOSTstr||
\elab
\label 1
Emacs
progressive-||RELNO||\_||TAPdflt||
||HOSTstr||
\elab
\label 2
Emacs
progressive-||RELNO||\_||TAPdflt||
||HOSTstr||
\elab
\label 3
Emacs
progressive-||RELNO||\_||TAPdflt||
||HOSTstr||
\elab
\label 4
Emacs
progressive-||RELNO||\_||TAPdflt||
||HOSTstr||
\elab
\bye