From: David Henkel-Wallace Date: Wed, 29 Jul 1992 16:21:34 +0000 (+0000) Subject: Add some files from Progressive shich shouldn't be lost. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5898af2c4bc6a91b1430cf781eae92fef87414ce;p=binutils-gdb.git Add some files from Progressive shich shouldn't be lost. --- diff --git a/Install.in b/Install.in new file mode 100755 index 00000000000..fc3433a01cd --- /dev/null +++ b/Install.in @@ -0,0 +1,983 @@ +#!/bin/sh +### Copyright (C) 1991, 1992, Cygnus Support +### All Rights Reserved. + +### This really needs to nestle up snuggly to the Release notes. If you change +### this script, please be sure the release notes get coordinated too. + +set -e + +### this is our version number. +VERSION=cygnus-sol2-||RELNO|| + +### this is the default installation repository. We use this to test whether or +### not GCC_EXEC_PREFIX should be set when doing "Install test comp-tools". +#INSTALLDIR_DEFAULT=/giga/rich/tmp/installdir +INSTALLDIR_REAL=/opt +INSTALLDIR_DEFAULT=${INSTALLDIR_REAL} +### this is where we install into. (useful for testing). +INSTALLDIR=${INSTALLDIR_DEFAULT} + +### where to write the log files +LOGDIR=${INSTALLDIR}/${VERSION} + +### who to call in bad situations +HOTLINE="the Cygnus Support Hotline at +1 415 322 7836" + +### what the release doc is called and a few sections thereof +NOTES="the Installation Notes" +CHANGING_PATHS="\"Changing the Paths\"" +NO_ACCESS="\"No Access to ${INSTALLDIR}\?\"" +MIGHT_WRONG="\"Some Things that Might go Wrong\"" +WHY_FIXINCLUDES="Why Convert System Header Files\?" +ANOTHER_TAPE="\"Steps to install with another machine\'s tape drive\"" + +### for debugging +#PATH=/bin:/usr/bin ; export PATH + +### default the tape device +case "${TAPE}" in + "") TAPE=||DEVdflt|| + ;; + *) + ;; +esac # ${TAPE} + +### clear and/or initialize some variables +ARCH= +TOOLS= +FTPRELEASE=no + +REMOVE=no +EXTRACT=no +FIXINCLUDES=no +TESTINSTALLATION=no + +INSTALLHOST=default +ERROR= + +### where the binaries are in the release +#EXECDIR=${VERSION}/H-${INSTALLHOST} +EXECDIR=${VERSION} + +### some tool defaults +### perhaps these should be hard coded to absolute paths instead? +TAR=tar +TARKEYS="xvvopf -" +SED=sed +MT=mt + +### trigger words on the command line are: +### bin, src +### emacs, comp-tools +### -tape=/dev/device +### -installdir=/foo +### extract, fixincludes, test-installation, remove + +for arg in $* ; do + case "${arg}" in +### options + -tape=* | --tape=* | --tap=* | --ta=* | --t=*) + TAPE=`echo ${arg} | ${SED} 's/-*t[a-z]*=//'` + ;; + + -installdir=* | --installdir=* | --installdi=* | --installd=* | --install=* | --instal=* | --insta=* | --inst=* | --ins=* | --in=* | --i=*) + INSTALLDIR=`echo ${arg} | ${SED} 's/-*i[a-z]*=//'` + # we will make it an absolute path shortly. + ;; + +### actions + *remove* | rm | -rm | --rm) ACTIONS="${ACTIONS} rm" ;; + *extract*) ACTIONS="${ACTIONS} extract" ;; + *fix*) ACTIONS="${ACTIONS} fix" ;; + *test*) ACTIONS="${ACTIONS} test" ;; +### hosts + *src* | *sour*) ARCH="${ARCH} src" ;; + *bin*) ARCH="${ARCH} bin" ;; + +### packages + *emacs*) TOOLS="${TOOLS} emacs" ;; + *comp*) TOOLS="${TOOLS} comp" ;; + *help*) ERROR=true ;; + *) + echo '***' I do not understand the option \"${arg}\". + ERROR=true + ;; + esac # ${arg} +done # arg in $* + +### +### +### check for a myriad of sins +### +### + +if [ ! -d "${INSTALLDIR}" ] ; then + echo '*** ' Can not cd to \"${INSTALLDIR}\" because it does not exist. + echo '*** ' Try creating it with \"mkdir ${INSTALLDIR}\" and then try running Install again. + exit 1 +else + if (cd "${INSTALLDIR}") ; then + true + else + echo '*** ' Can not cd to \"${INSTALLDIR}\" because I do not have execute permission. + ls -lad ${INSTALLDIR} + echo '*** ' Please fix this and then try running Install again. + exit 1 + fi # ! cd ${INSTALLDIR} +fi # ! -d ${INSTALLDIR} + +# Make INSTALLDIR absolute (parts below might need it that way). +# FIXME, do they really? +# FIXME, handle pwd failure from upper dir permission +INSTALLDIR=`cd ${INSTALLDIR} ; pwd` +LOGDIR=${INSTALLDIR}/${VERSION} + +case "${ERROR}" in + "") +### default tools + case "${TOOLS}" in + "") TOOLS="||BUNDLE||" ;; + *) ;; + esac # ${TOOLS} + + INSTALLHOST= + +### decide where we are: try arch first. + if (arch) > /dev/null 2>&1 ; then + MAYBE=`arch` + else + true + fi # (arch) + + case "${MAYBE}" in + sun3) INSTALLHOST=${MAYBE} + ;; + *) +### next try uname + if (uname > /dev/null) 2>&1 ; then + UNAME=`echo \`uname -s\`\`uname -m\`\`uname -r\`` + else + UNAME="machine without a uname command (type of machine unknown)" + fi # (uname) + +### map into names we recognize + case "${UNAME}" in + AIX*) + INSTALLHOST=rs6000 + MT=tctl + ;; + ULTRIXRISC) INSTALLHOST=decstation ;; + SunOSsun4*5*) INSTALLHOST=sparc-sun-solaris2 ;; + SunOSsun4*) INSTALLHOST=sun4 ;; + SunOSsun3*) INSTALLHOST=sun3 ;; + IRIX*) INSTALLHOST=iris4 ;; + *) INSTALLHOST=unknown ;; + esac # ${UNAME} + ;; + esac # ${MAYBE} + +### default arch + case "${ARCH}" in + "") ARCH="bin src" ;; + *) ;; + esac # ${ARCH} + +### default actions + + case "${ACTIONS}" in + "") + case "${FTPRELEASE}" in + "yes") ACTIONS="test" ;; + "no" ) ACTIONS="extract test" ;; + esac # ${FTPRELEASE} + + +### fixincludes only if comp-tools + for tool in ${TOOLS} ; do + case ${tool} in + comp) + if echo ${ARCH} | grep bin > /dev/null 2>&1 ; then + ACTIONS="${ACTIONS} fix" + fi + ;; + *) ;; + esac # ${TOOLS} + done # for tool in ${TOOLS} + ;; + *) ;; + esac # ${ACTIONS} + ;; + *) ;; +esac # ${ERROR} + +case "${ERROR}" in + "") +### if binaries are not intended for this machine + case "${INSTALLHOST}" in + "||HOSTstr||") ### binaries are intended for this machine + for action in ${ACTIONS} ; do + case ${action} in + test) + for tool in ${TOOLS} ; do + OURWD=`(cd ${INSTALLDIR}; pwd) 2>/dev/null` + DEFAULTWD=`(cd ${INSTALLDIR_REAL}; pwd) 2>/dev/null` + case ${tool} in + comp) + case "${OURWD}" in + "${DEFAULTWD}") ;; + *) + echo '***' If you want to use the compilation tools in an alternate + echo '*** ' directory, GCC_EXEC_PREFIX must be set. You probably + echo '*** ' want to set it with: + echo GCC_EXEC_PREFIX=${INSTALLDIR}/${EXECDIR}/lib/gcc-lib/||HOSTstr||/||GCCvn||/ ; export GCC_EXEC_PREFIX + GCC_EXEC_PREFIX=${INSTALLDIR}/${EXECDIR}/lib/gcc-lib/||HOSTstr||/||GCCvn||/ ; export GCC_EXEC_PREFIX + echo '*** ' This is what I will use for the installation tests. + # skip C++ msg on Solaris + case "${INSTALLHOST}" in + sparc-sun-solaris2) ;; + *) + echo '*** ' And for g++ I will use the options: + echo '*** ' -I${INSTALLDIR}/${EXECDIR}/lib/g++-include + echo '*** ' -L${INSTALLDIR}/${EXECDIR}/lib + ;; + esac # ${INSTALLHOST} + echo '*** ' For further help, please refer to ${CHANGING_PATHS} + echo '*** ' in ${NOTES}. + + GPLUSOPTIONS="-I${INSTALLDIR}/${EXECDIR}/lib/g++-include -L${INSTALLDIR}/${EXECDIR}/lib" + ;; + esac # ${INSTALLDIR} + ;; + emacs) + case "${OURWD}" in + "${DEFAULTWD}") ;; + *) + echo '***' I cannot test Emacs. + echo '*** ' The provided Emacs binary can only run from the default + echo '*** ' installation directory. If you wish to run emacs, please + echo '*** ' refer to ${CHANGING_PATHS} in ${NOTES}. + exit 1 + ;; + esac # ${INSTALLDIR} + ;; + *) true ;; + esac # ${tool} + done # for tool in ${TOOLS} + ;; + *) true ;; + esac # ${action} + done # for action in ${ACTIONS} + ;; + + *) + for action in ${ACTIONS} ; do + case ${action} in + rm | extract) true ;; + fix) + if echo ${TOOLS} | grep comp > /dev/null ; then + NOTFIXED="fixincludes" + if echo ${ACTIONS} | grep test > /dev/null ; then + JOINER=" or " + else + true + fi # echo ${ACTIONS} + else +# echo '***' If you only install Emacs you do not need to run fixincludes. +# ERROR=true + true + fi # echo ${TOOLS} + ;; + test) NOTTESTED="the installation tests" ;; + esac # ${action} + done # for action in ${ACTIONS} + ;; + esac # ${INSTALLHOST} + ;; + *) ;; +esac # ${ERROR} + +if [ -n "${NOTFIXED}" -o -n "${NOTTESTED}" ] ; then + case "${INSTALLHOST}" in + "||HOSTstr||") ;; + *) + echo '*** ' This machine appears to be a \"${INSTALLHOST}\". + echo '*** ' You may still run \"$0 -extract ...\" on this machine and then + echo '*** ' run the other steps on the machine on which you wish to install. + echo '*** ' You will need to do these steps separately. + echo '*** ' For more information, please refer to + echo '*** ' ${ANOTHER_TAPE} in ${NOTES}. + ERROR=true + ;; + esac # ${INSTALLHOST} +fi # [ -n ${NOTFIXED -o -n ${NOTTESTED} ] + +### if we can't read the tape drive... +popdir=`pwd` + +if [ ! -d "${LOGDIR}" ] ; then + if mkdir ${LOGDIR}; then + true + else + echo '*** ' Can not write logs to \"${LOGDIR}\" because it does not exist. + echo '*** ' Try creating it with \"mkdir ${LOGDIR}\" and then try running Install again. + exit 1 + fi +else + if [ ! -w "${LOGDIR}" ] ; then + echo '*** ' Can not write logs to \"${LOGDIR}\" because I do not have write permission. + ls -lad ${LOGDIR} + echo '*** ' Please fix this and then try running Install again. + exit 1 + fi # ! -r ${LOGDIR} +fi # ! -d ${LOGDIR} + + +cd ${INSTALLDIR} + +### There is a window here that I don't know how to handle gracefully from +### shell. If the directory DID exist and WAS executable but dissappeared +### before we could cd into it, we're kinda hosed. If you get a call about +### this, make sure the directory exists, is readable, is executable, is the +### either the default installation directory or the -installdir=directory +### given on the command line. Then ask them to just try again. A few times. +### If you get the same error every time, we've got a very strange bug. I +### can't help you. + +if [ "$?" != "0" ] ; then + echo '***' Cannot cd to \"${INSTALLDIR}\". This is a problem. + echo '*** ' For further help, please refer to + echo '*** ' ${NO_ACCESS} in ${NOTES} or call + echo '*** ' ${HOTLINE} + exit 1 +fi + +if echo ${ACTIONS} | grep extract > /dev/null ; then + if [ -z "${ERROR}" -a ! -r "${TAPE}" ] ; then + ### try checking for a relative tape path + if [ -r ${popdir}/${TAPE} ] ; then + TAPE=${popdir}/${TAPE} + echo '***' Using TAPE device \"${TAPE}\". + else + echo '***' Can not read from TAPE device, \"${TAPE}\". + cd ${popdir} ; ls -lasd ${TAPE} + echo '*** ' Try using \"./Install -tape=/dev/something ...\" to name your tape + echo '*** ' drive or refer to ${MIGHT_WRONG} in + echo '*** ' ${NOTES}. + exit 1 + fi # ! -r ${popdir}/${TAPE} + fi # -z ${ERROR} +fi # extract in ${ACTIONS} + +cd ${popdir} + +### bail out + +case "${ERROR}" in +"") ;; +*) + cat < /dev/null 2>&1 ; then + if [ ! -d "${INSTALLDIR}" ] ; then + echo '***' Cannot remove anything from \"${INSTALLDIR}\" because it does not exist. + echo '*** ' You probably do not need to remove anything. + else + popdir=`pwd` + if [ ! -d "${INSTALLDIR}" ] ; then + echo '***' Can not cd to \"${INSTALLDIR}\" because it does not exist. + echo '*** ' You probably do not need to remove anything. + exit 1 + else + if [ ! -r "${INSTALLDIR}" ] ; then + echo '***' Can not cd to \"${INSTALLDIR}\" because I do not have execute permission. + ls -lad ${INSTALLDIR} + echo '*** ' Please fix this and then try running Install again. For + echo '*** ' more information, please refer to ${NO_ACCESS} + echo '*** ' in ${NOTES}. + exit 1 + fi + fi + + cd ${INSTALLDIR} + +### see also the above note about the timing window. + + if [ "$?" != "0" ] ; then + echo '***' Cannot cd to \"${INSTALLDIR}\". This is a problem. + echo '*** ' For further help, please refer to + echo '*** ' ${NO_ACCESS} in ${NOTES} or call + echo '*** ' ${HOTLINE} + exit 1 + else + true + fi + + if [ ! -d "${VERSION}" ] ; then + echo '***' Cannot remove anything from \"${INSTALLDIR}/${VERSION}\" because it does not exist. + echo '*** ' You probably do not need to remove anything. + exit 1 + else + true + fi + + echo Removing from \"${INSTALLDIR}\"... + + if rm -rf ${FILE_LIST} ; then + # if neither binaries nor source are installed, remove installdir + if [ -d ${INSTALLDIR}/${EXECDIR} \ + -o -d ${INSTALLDIR}/${VERSION}/src ] ; then + true + else + if rm -rf "${INSTALLDIR}/${VERSION}" ; then + true + else + if [ ! -w "${INSTALLDIR}" ] ; then + echo '***' I can not remove ${INSTALLDIR}/${VERSION} + echo '*** ' because I do not have write access to \"${INSTALLDIR}\" + echo '*** ' Please fix this and try running Install again. For more information + echo '*** ' please refer to ${NO_ACCESS} in ${NOTES}. + exit 1 + else + echo '***' I do not know why I can not remove ${INSTALLDIR}/${VERSION}. This is + echo '*** ' probably not a problem. + fi + exit 1 + fi + fi + + echo Removed. + else + echo '***' There appears to have been a removal error. + echo '*** ' Chances are that this is not a problem, but you might try removing + echo '*** ' again. + exit 1 + fi + fi + echo Cygnus Support software distribution removed! +else + true +fi # if removing + +### +### +### extraction +### +### + +if echo ${ACTIONS} | grep extract > /dev/null 2>&1 ; then + if [ ! -d "${INSTALLDIR}" ] ; then + echo Trying to create \"${INSTALLDIR}\"... + if mkdir ${INSTALLDIR} ; then + echo Created \"${INSTALLDIR}\". + else + echo '***' I can not make directory, \"${INSTALLDIR}\". + +### attempt to diagnose... + + DIR=`echo ${INSTALLDIR} | ${SED} -e 's:/[^/]*$::'` + if [ ! -d "${DIR}" ] ; then + echo '*** ' It looks as though \"${DIR}\" does not even exist. + exit 1 + else + if [ ! -w "${DIR}" ] ; then + echo '*** ' It looks as though you do not have write access to \"${DIR}\". + echo '*** ' Please fix this and try running Install again. For more information + echo '*** ' please refer to ${NO_ACCESS} in ${NOTES}. + exit 1 + else + echo '*** ' I do not know why I can not create \"${INSTALLDIR}\". This is a problem. + echo '*** ' Please call ${HOTLINE} + exit 1 + fi # ! -w ${DIR} + fi # ! -d ${DIR} + fi # mkdir ${INSTALLDIR} + else + true + fi # ! -d ${INSTALLDIR} + + cd ${INSTALLDIR} + + if [ "$?" = "0" ] ; then + for trigger in ${TRIGGERS} ; do + if [ -r "${trigger}" ] ; then + echo '***' \"${INSTALLDIR}/${trigger}\" exists and I will not overwrite it. + echo '*** ' If you really want to install it again, please remove it first. + exit 1 + else + true + fi # -r ${trigger} + done # for trigger + else + echo '***' I can not cd to \"${INSTALLDIR}\". + +### attempt to diagnose... + + if [ ! -r "${INSTALLDIR}" ] ; then + echo '*** ' It looks as though you do not have execute permission to \"${INSTALLDIR}\". + else + true + fi # ! -r ${INSTALLDIR} + + echo '*** ' For further help, please refer to + echo '*** ' ${NO_ACCESS} in ${NOTES}. + exit 1 + fi # status is zero + + +### remove redundant names from the list + echo ${FILE_LIST} ${COMMONS} ${EMACSHIBIN} | tr ' ' ' +' | sort | uniq > ${LOGDIR}/extract_list + + echo It will take some time for me to read the tape. + echo Verbose output will be saved in ${LOGDIR}/tar.log + echo Extracting into \"${INSTALLDIR}\"... + +### make sure things come off the tape as they were written, but minus what could be a security hole. + umask 0 + +### using the no rewind device, so rewind and fsf to be sure. + + if ${MT} -f ${TAPE} rewind > /dev/null 2>&1 ; then + if ${MT} -f ${TAPE} fsf 1 ; then + true + else + echo '***' Could not forward space tape device \"${TAPE}\". + exit 1 + fi + else + if test -r ${TAPE} ; then + true + else + echo '***' Could not rewind tape device \"${TAPE}\". + exit 1 + fi + fi # mt ${TAPE} rewind + + if dd if=${TAPE} bs=124b | compress -d | ${TAR} ${TARKEYS} `cat ${LOGDIR}/extract_list` > ${LOGDIR}/tar.log 2>&1 && test -d ${VERSION} ; then + if [ -d ${INSTALLDIR}/${EXECDIR}/bin ] ; then + echo Extracted. + else + echo '***' The extraction has failed. The directory + echo '***' ${INSTALLDIR}/${EXECDIR}/bin was not extracted. + echo '*** ' The output from the tar command has been logged in ${LOGDIR}/tar.log + echo '*** ' I do not know how to continue until this problem has been + echo '*** ' corrected. If you do not know how to fix it either, please + echo '*** ' call ${HOTLINE}. + exit 1 + fi + + if (${MT} -f ${TAPE} rewind > /dev/null 2>&1) ; then + true + else + true + fi # mt rewind + else + echo '***' There appears to have been an extraction error. + echo '*** ' The output from the tar command has been logged in ${LOGDIR}/tar.log + echo '*** ' I do not know how to continue until this problem has been + echo '*** ' corrected. If you do not know how to fix it either, please + echo '*** ' call ${HOTLINE}. + exit 1 + fi # dd | compress | tar .... + + rm -f ${LOGDIR}/extract_list + echo Cygnus Support software distribution extracted! +else + true +fi # extraction in actions + +### +### +### fixincludes +### +### + +if echo ${ACTIONS} | grep fix > /dev/null 2>&1 ; then + echo Running fixincludes for ${INSTALLHOST}. + echo Verbose output will be stored in ${LOGDIR}/fixincludes.log + echo This will take some time. + LIB=${INSTALLDIR}/${EXECDIR}/lib/gcc-lib/||HOSTstr||/||GCCvn||/include ; export LIB + + if mkdir ${LIB}/tmpdir && mv ${LIB}/*.h ${LIB}/tmpdir ; then + if ${INSTALLDIR}/${VERSION}/lib/fixincludes ${LIB} /usr/include ${INSTALLDIR}/${VERSION}/src/gcc > ${LOGDIR}/fixincludes.log ; then + mv ${LIB}/tmpdir/* ${LIB} && rmdir ${LIB}/tmpdir + echo Finished with fixincludes. + else + echo '***' There seems to have been a problem with fixincludes. + echo '*** ' The verbose output from the fixincludes script has been logged in + echo '*** ' ${INSTALLDIR}/${VERSION}/fixincludes.log. + echo '*** ' I do not know how to continue until this problem has been + echo '*** ' corrected. If you do not know how to fix it either, please + echo '*** ' call ${HOTLINE}. + mv ${LIB}/tmpdir/* ${LIB} && rmdir ${LIB}/tmpdir + exit 1 + fi # + else + echo '***' Not able to create the temporary include dir + echo '*** ' Please ensure that write permissions for + echo '*** ' ${LIB} are allowed. + echo '*** ' Or call ${HOTLINE} for more information. + exit 1 + fi + echo Fixed include files installed! +else + true +fi # fix in actions + +### +### +### testing the installation +### +### + +if echo ${ACTIONS} | grep test > /dev/null 2>&1 && echo ${ARCH} | grep bin > /dev/null 2>&1 ; then + popdir=`pwd` + cd ${LOGDIR} + for tool in ${TOOLS} ; do + case ${tool} in + comp) + if [ -f ${INSTALLDIR}/${EXECDIR}/bin/gcc ] ; then + cat > ${LOGDIR}/hello.c <<'e!o!f' +#include + +extern int printf(); + +int main(int argc, char **argv) { + (void) printf("hello: The compilation tools appear to be installed correctly on your %s.\n", + MACHINE); + return(0); +} /* main() */ +e!o!f + if ${INSTALLDIR}/${EXECDIR}/bin/gcc -Wall -O -g \ + -DMACHINE=\"${INSTALLHOST}\" ${LOGDIR}/hello.c -o ${LOGDIR}/hello ; then + if ${LOGDIR}/hello ; then + echo This is good. + else + echo '***' Hello.c fails to run. This is a problem. + echo '*** ' Please call ${HOTLINE} + exit 1 + fi # ./hello + else + echo '***' Hello.c fails to compile. This is a problem. + echo '*** ' Please call ${HOTLINE} + exit 1 + fi # run gcc + +### now check for fixed includes. + cat > ${LOGDIR}/test-ioctl.c << 'e!o!f' +#include +#include +#include +#include + +double atof(const char *); + +#ifdef __sun__ +#include + +extern int ioctl(); +extern int perror(); +#endif /* __sun__ */ + +extern int printf(); + +int main(int argc, char **argv) { +#ifdef __sun__ + long l; + int fd; + int retval; + + if ((fd = open("/dev/tty", O_RDONLY)) == -1) { + (void) perror("test-ioctl: can't open /dev/null"); + return(1); + } else if ((retval = ioctl(fd, FIONREAD, &l)) != 0) { + (void) perror("test-ioctl: ioctl failed"); + (void) printf("test-ioctl: Most likely, you have not run \"Install fixincludes\" on this machine.\n"); + return(2); + } +#endif /* __sun__ */ + + printf("test-ioctl: Ansi versions of the system header files, (the fixed includes),\n"); + printf("test-ioctl: appear to be installed correctly.\n"); + +/* that's right. If closing /dev/tty fails, I don't want to know about it. */ + + return(0); +} +e!o!f + + case "||HOSTstr||" in + sun3 | sun4 | decstation) + if ${INSTALLDIR}/${EXECDIR}/bin/gcc -Wall -O -g \ + -DMACHINE=\"${INSTALLHOST}\" ${LOGDIR}/test-ioctl.c -o ${LOGDIR}/test-ioctl ; then + if ${LOGDIR}/test-ioctl ; then + echo This is good. + else + case "$?" in + 1) + echo '***' test-ioctl.c fails to read /dev/tty. If you were running Install + echo '*** ' in batch or from a daemon, please try running it again interactively. + echo '*** ' If not, please call ${HOTLINE} + exit 1 + ;; + 2) + echo '***' test-ioctl.c fails to ioctl. + echo '*** ' Most likely you need to run \"Install fixincludes\". + echo '*** ' Please run \"Install fixincludes\" and + echo '*** ' then try this test again. For an explanation see + echo '*** ' ${WHY_FIXINCLUDES} in ${NOTES}. + exit 1 + ;; + *) + echo '***' test-ioctl.c fails to run. This is a problem. + echo '*** ' Please call ${HOTLINE} + exit 1 + ;; + esac # $? + exit 1 + fi # test-ioctl + else +### this presupposes that hello.c DID compile. + echo '***' test-ioctl.c fails to compile. This is a problem. + echo '*** ' Please call ${HOTLINE} + exit 1 + fi # run gcc + ;; + iris4) + if [ ! -f ${INSTALLDIR}/${EXECDIR}/lib/gcc-lib/||HOSTstr||/||GCCvn||/include/sys/cfeiroute.h ] + then + echo '***' You seem to be missing ${INSTALLDIR}/${EXECDIR}/lib/gcc-lib/||HOSTstr||/||GCCvn||/include/sys/cfeiroute.h. + echo '*** ' Most likely you need to run \"Install fixincludes\". + echo '*** ' Please run \"Install fixincludes\" and + echo '*** ' then try this test again. For an explanation see + echo '*** ' ${WHY_FIXINCLUDES} in ${NOTES}. + exit 1 + fi # test fixincluded file + ;; + sparc-sun-solaris2) + if [ ! -f ${INSTALLDIR}/${EXECDIR}/lib/gcc-lib/||HOSTstr||/||GCCvn||/include/ieeefp.h ] + then + echo '***' You seem to be missing ${INSTALLDIR}/${EXECDIR}/lib/gcc-lib/||HOSTstr||/||GCCvn||/include/ieeefp.h. + echo '*** ' Most likely you need to run \"Install fixincludes\". + echo '*** ' Please run \"Install fixincludes\" and + echo '*** ' then try this test again. For an explanation see + echo '*** ' ${WHY_FIXINCLUDES} in ${NOTES}. + exit 1 + fi + ;; + + rs6000) + if [ ! -f ${INSTALLDIR}/${EXECDIR}/lib/gcc-lib/||HOSTstr||/||GCCvn||/include/piostruct.h ] + then + echo '***' You seem to be missing ${INSTALLDIR}/${EXECDIR}/lib/gcc-lib/||HOSTstr||/||GCCvn||/include/piostruct.h. + echo '*** ' Most likely you need to run \"Install fixincludes\". + echo '*** ' Please run \"Install fixincludes\" and + echo '*** ' then try this test again. For an explanation see + echo '*** ' ${WHY_FIXINCLUDES} in ${NOTES}. + exit 1 + fi # test fixincluded file + ;; + esac # ||HOSTstr|| + else + true + fi # test if gcc present + +### now check for g++. + if [ -f ${INSTALLDIR}/${EXECDIR}/bin/g++ ] ; then + cat > ${LOGDIR}/hello.C << 'e!o!f' +#include + +int main(int argc, char**argv) +{ + char *machine = MACHINE; + cout << "hello: g++ appears to be installed correctly on your " + << machine << ".\n"; + return(0); +} +e!o!f + if ${INSTALLDIR}/${EXECDIR}/bin/gcc ${GPLUSOPTIONS} -Wall -O -g \ + -DMACHINE=\"${INSTALLHOST}\" ${LOGDIR}/hello.C -o ${LOGDIR}/Hello -lg++ ; then + if ${LOGDIR}/Hello ; then + echo This is good. + else + echo '***' hello.C fails to run. This is a problem. + echo '*** ' Please call ${HOTLINE} + exit 1 + fi # ./Hello + else + ### this presupposes that hello.c DID compile. + echo '***' hello.C fails to compile. This is a problem. + echo '*** ' Please call ${HOTLINE} + exit 1 + fi # run g++ + + ### now check for static initialization. + cat > ${LOGDIR}/static-init.C << 'e!o!f' +#include +int Three; + +struct Foo { + Foo(int i) { Three = i; } +}; + +Foo foo(3); + +int main(int argc, char**argv) +{ + if (Three != 3) { + cout << "static-init: static initialization fails.\n"; + return(1); + } + + cout << "static-init: static initialization appears to work.\n"; + return(0); +} +e!o!f + if ${INSTALLDIR}/${EXECDIR}/bin/gcc ${GPLUSOPTIONS} -Wall -O -g \ + -DMACHINE=\"${INSTALLHOST}\" ${LOGDIR}/static-init.C -o ${LOGDIR}/static-init -lg++ ; then + if ${LOGDIR}/static-init ; then + echo This is good. + else + echo '***' Static initialization is not working. This is a problem. + echo '*** ' Please call ${HOTLINE} + exit 1 + fi # run static-init + else + ### this presupposes that it DID compile. + echo '***' static-init.c fails to compile. This is a problem. + echo '*** ' Please call ${HOTLINE} + exit 1 + fi # run g++ + else # no g++, so don't test it + true + fi # no g++ + ;; + emacs) + cat > ${LOGDIR}/hello.el <<'e!o!f' +(server-start) +(message "Emacs appears to be installed correctly.") +(kill-emacs 0) +e!o!f + if ${INSTALLDIR}/${EXECDIR}/bin/emacs -batch -l ${LOGDIR}/hello.el ; then + echo This is good. + else + echo '***' Emacs fails to run. This is a problem. + echo '*** ' Please call ${HOTLINE} + exit 1 + fi + ;; + src) # if anyone can tell me how to test the installation of source... + true + ;; + *) + echo '***' I do not know how to test for tool \"${tool}\" because I have never + echo '*** ' heard of it. This is a problem. Please call ${HOTLINE}. + exit 1 + ;; + esac + done + rm -f hello* test-ioctl* static-init* Hello* + cd ${popdir} + echo Cygnus Support software distribution tested! +else + true +fi + +echo Done. + +exit 0 + +### +### Local Variables: +### comment-column: 0 +### fill-column: 131 +### End: +### + +### End of Install diff --git a/Pack-A-Progressive b/Pack-A-Progressive new file mode 100755 index 00000000000..5b6f66a0d43 --- /dev/null +++ b/Pack-A-Progressive @@ -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 + +#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 diff --git a/install-texi.in b/install-texi.in new file mode 100644 index 00000000000..c825820d9f6 --- /dev/null +++ b/install-texi.in @@ -0,0 +1,2077 @@ +\input texinfo +@c +@c search for "UPDATE!" for items that will need examination on future +@c releases +@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 README.info +@c FIXME: XCOMP stuff not ready to go. For example, +@c FIXME: no mention of lack of -msoft-float support for XCOMP, yet. +@c +@c This file describes how to install a Cygnus Progressive Release. +@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 CONFIG: One of these hosts should be set, the others clear: +@set HOSTsun4 +@clear HOSTsun3 +@clear HOSTdecstation +@clear HOSTrs6000 +@clear HOSTiris +@c CONFIG: In addition, XCOMP should be set for discussion of +@c cross-compilation facilities +@clear XCOMP +@c +@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 +@setchapternewpage on +@finalout +@end iftex +@settitle Progressive--||RELNO|| Installation +@tex +% override-override: the following \font lines are redundant if you're +% using an unmodified FSF texinfo. +\globaldefs=1 +\font\texttt=cmtt10 scaled \magstephalf\let\tentt=\texttt +\font\textsl=cmsl10 scaled \magstephalf\let\tensl=\textsl +\font\textsf=cmss10 scaled \magstephalf\let\tensf=\textsf +\globaldefs=0 +%end override-override +% WARNING: NONSTANDARD USAGE we need \tensf for print, without +% upsetting info. We weren't using @b in this note, so I redefine it: +% +\global\def\b#1{{\tensf #1}} +\global\parindent=0pt +@end tex +@titlepage +@title Installation Notes +@sp 3 +@table @strong +@item Cygnus Support Developer's Kit +@item Progressive Release ||RELNO|| for ||HOST|| +@item {} +@item Contents +@end table +@c TOGGLE XREF DISPLAY TO AVOID SQUARE BRACKETS OR QUOTES: +@c (Cygnus "texiplus.tex" hack. If you want standard texinfo remove +@c or comment-out instances of @altref). +@altref +@format +@ref{Brief,,Installing in Brief} +@ref{Contents,,Release Contents}. +@ref{Platforms,,Supported Platforms}. + +@ref{Installing,,Installing the Developer's Kit}. +@ref{local-install,,Installing in @file{/usr/cygnus} with a local tape drive}. +@ref{cross-install,,Installing in @file{/usr/cygnus} with another machine's tape drive}. +@ref{Examples,,Installation Examples}. +@ref{Install-Options,,Installation Options} + +@ref{Why-fixincludes,,Why Convert System Header Files?} +@ref{Links,,Links for Easy Access and Updating} +@ref{Paths,,Changing the Paths} +@ref{Trouble,,Some Things that Might go Wrong} +@ref{Rebuilding,,Rebuilding From Source}. +@ref{Removing,,Removing the Developer's Kit}. + +@ref{Cygnus-FSF,,Cygnus Progressive Releases and the FSF}. +@ref{Cygnus-Support,,About Cygnus Support}. +@end format +@c TOGGLE XREF DISPLAY BACK, TO RESTORE MARKERS AROUND SECNAMES: + +@altref +@author Cygnus Support @hfill hotline: +1 415 322 7836 +@page + +@tex +\def\$#1${{#1}} % Kluge: collect RCS revision info without $...$ +\xdef\Rmanvers{{\it Installation Notes (Progressive 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{Progressive ||RELNO|| for ||HOST||} +@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 + +@ifinfo +@node Top, Brief, (dir), (dir) + +This file is about the Cygnus Developer's Kit: what's in it, how to +install it, and how to reconfigure it. + +@menu +* Brief:: Installing in Brief +* Contents:: Release Contents +* Requirements:: System Requirements +* Installing:: Installing the Developer's Kit +* Examples:: Installation Examples +* Install-Options:: Installation Options +* Links:: Links for Easy Access and Updating +* Running:: Running the Programs +* Paths:: Changing the Paths +* Trouble:: Some Things that Might go Wrong +* Rebuilding:: Rebuilding From Source +* Removing:: Removing Parts of the Developer's Kit +* Cygnus-FSF:: Cygnus Releases and the FSF +* Cygnus-Support:: About Cygnus Support + + --- The Detailed Node Listing --- + +Release Contents + +* Platforms:: Supported Platforms + +Supported Platforms + +* Requirements:: System Requirements + +Installing the Developer's Kit + +* local-install:: Installing with a local tape drive +* cross-install:: Installing with another machine's tape drive + +Installation Examples + +* binaries:: Installing binaries only +* ||HOSTstr||-remote:: Reading tape on any machine, finishing on ||HOST|| +* source-remove:: Removing Source + +Installation Options + +* Why-fixincludes:: Why Convert System Header Files? + +Links for Easy Access and Updating + +* Running:: Running the Programs + +Some Things that Might go Wrong + +* No Drive:: No Local Tape Drive +* Limited Space:: Not Enough Space +* No access:: No Access to @file{/usr/cygnus} +* Install errors:: Error Messages from @code{Install} + +Rebuilding From Source + +* Configuration:: Configuration +* Config Names:: Specifying Names for Hosts and Targets +* configure Options:: @code{configure} Options +* Compilation:: Compilation +* Installation:: Installation +@end menu + +@end ifinfo + +@node Brief, Contents, Top, Top +@unnumberedsubsubsec Installing in Brief +@strong{You can run the brief installation procedure if:} +@itemize @bullet +@item +You have a ||TAPdflt|| release tape (see tape label), and +@item +Your ||HOST|| has its own ||TAPdflt|| tape drive (@code{||DEVdflt||}), and +@item +You're willing to use the installation directory @file{/usr/cygnus}, and +@item +You have at least ||DF|| MB available in @code{/usr} (try @samp{df /usr}) +@end itemize +Otherwise, see @ref{Installing,,Installing the +Developer's Kit}. + +@strong{Steps for Brief Install:} + +@enumerate +@item +Make sure you can write in @samp{/usr/cygnus}, by typing: + +@example +eg$ @b{su root} +password: @i{(enter root password)} +# @b{mkdir /usr/cygnus} @i{(ignore ``File exists'' error if any)} +# @b{chmod 777 /usr/cygnus} +# @b{exit} @i{(root access not needed beyond this)} +@end example + +@item +Load the Progressive--||RELNO|| tape into your tape drive. + +@item +Get the @code{Install} script from the tape: + +@example +eg$ @b{cd /tmp} +eg$ @b{tar xfv ||DEVdflt|| Install} +@end example + +@item +Run the @code{Install} script: + +@example +eg$ @b{./Install} +@end example + +@code{Install} displays messages about its activity, ending with + +@example +Done. +@end example + +@item +Build symbolic links to make execution paths easy: + +@example +eg$ @b{cd /usr/cygnus} +eg$ @b{ln -s progressive-||RELNO|| progressive} +eg$ @b{su root} @i{(may need root access to put link in /usr)} +password: +# @b{ln -s /usr/cygnus/progressive/H-||HOSTstr|| /usr/progressive} +# @b{exit} @i{(give up root access as soon as possible)} +@end example + +@item +Use your Cygnus customer-ID (see cover letter) to tag your copy of our +problem-report form: + +@example +eg$ @b{/usr/progressive/bin/install@t{_}cid @var{ID}} +@end example + +@item +Remove public write access from @file{/usr/cygnus}. See your System +Administrator for the correct permissions at your site. +@end enumerate + +You're done! Anyone who puts @samp{/usr/progressive/bin} in her or his +@code{PATH} can use the Developer's Kit. + +@node Contents, Requirements, Brief, Top +@unnumbered Release Contents + +This Developer's Kit is a Cygnus Support @dfn{Progressive Release}: the +programs in it are recent versions, which have been tested and certified +both individually and as a coordinated suite of tools. +The kit includes both source and binaries for: + +@c UPDATE! Anything new shoveled in? + +@c ifclear doesn't seem to nest well. For that reason, and due to lack +@c of "else" to ifclear, and due to lack of expressions in ifset/ifclear +@c arguments, "DoFullTable" used in this contorted fashion: + +@set DoFullTable + +@ifset HOSTrs6000 +@clear DoFullTable +@end ifset + +@ifset HOSTdecstation +@clear DoFullTable +@end ifset + +@ifset HOSTiris +@clear DoFullTable +@end ifset + +@table @t +@item gcc +C compiler + +@item g++ +C++ compiler + +@ifset DoFullTable +@item gas +assembler +@end ifset + +@item gdb +debugger + +@item gprof +Performance analyzer + +@item byacc +Parser generator + +@item flex +Fast lexical analyzer generator + +@ifset DoFullTable +@item ld +linker +@end ifset + +@item make +compilation control program + +@item libg++.a +C++ class library + +@ifset DoFullTable +@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 ifset + +@item makeinfo +@itemx info +Documentation tools + +@item texinfo.tex +@itemx texindex +Documentation printing tools + +@item send_pr +Script to send structured problem reports to Cygnus + +@item diff +Compares source files + +@item patch +Installs source fixes +@end table + +@menu +* Platforms:: Supported Platforms +@end menu + +@node Platforms, , Contents, Contents +@unnumberedsec Supported Platforms + +@table @strong +@item ||HOST|| +All programs in your Developer's Kit run on ||HOST|| computers; we +ship binaries (configured to install and run under @file{/usr/cygnus}) +as well as all source code. + +@ignore +@ifset HOSTsun4 +@item @sc{sparc} clones +Whenever this note refers to ``Sun-4'' computers, you can also use a +@sc{sparc} clone---that is, any computer system based on the @sc{sparc} +architecture, regardless of its manufacturer. +@end ifset +@end ignore + +@ifset XCOMP +@item Cross-Compiling +@sc{gcc}, @sc{gas}, @sc{gdb}, and the binary +utilities are preconfigured to generate and manage code for ||TARGET|| +architectures. +@end ifset + +@item Other Platforms +For information on other platforms or other programs +that we may support, please contact Cygnus Support at: + +@table @strong +@item voice ++1 415 322 3811 +@item hotline ++1 415 322 7836 +@item fax ++1 415 322 3270 +@item email +@code{info@@cygnus.com} +@end table +@end table + +@menu +* Requirements:: System Requirements +@end menu + +@node Requirements, Installing, Contents, Top +@unnumbered System Requirements + +@table @strong +@item OS Level +Progressive Release ||RELNO|| for ||HOST|| hosts requires +@ifset HOSTsun4 +SunOS 4.1.1 (or later). +@end ifset +@ifset HOSTsun3 +SunOS 4.1 (or later). +@end ifset +@ifset HOSTdecstation +ULTRIX 4.0. For Ultrix 4.2, some workarounds are required even to run +the installation script; if you would like to try these workarounds, +please call the Cygnus hotline @w{+1 415 322 7836}. +@end ifset +@ifset HOSTrs6000 +AIX 3.1.5 (or later). + +@item IBM Software Patches +Debugging code compiled with @sc{gcc} on the RS/6000 requires that you +upgrade the AIX assembler @code{/bin/as} with a replacement that is available +from IBM. Without the upgrade, you can still compile your code, but +@samp{gcc -g @dots{}} will not work. + +Any IBM RS/6000 customer can order and get the replacement assembler, +and install it on one or more machines. It is distributed both on +diskette and via VNET, for downloading via ftp. VNET distribution may +be desirable if you have a friendly IBM representative nearby with a +networked VM machine. + +In either case, to order the replacement assembler from IBM, first +execute @samp{lslpp -h bos.obj} to determine your release level. (Look +on the @samp{ACTIVE} line for something like @samp{03.01.0005.0012}.) +Then (in North America) call IBM Support at 800--237--5511. Ask for +emergency shipment of the RS/6000 AIX fix for APAR IX22829. They may +ask you to verify that it's a fix for ``@code{.extern foo} conflicts +with defining @code{foo}''; say yes. They may also ask you for your +customer number. If you do not know it, you will still be able to get +the fix, but you will have to be persistent. + +You will receive a tar or tar.Z file containing an assembler plus +installation instructions. + +If you tell them you're running AIX version 3.2, you may be told that +no fix is available yet. In fact the 3.1.5 fix works fine on version +3.2. Request it anyway. + +IBM is working on a second upgrade to replace IX22829 and fix two +more problems with debug information. There's no scheduled availability +yet, but it's probably summer 1992. Ask for the fix for APAR IX26107, +``Don't allow @code{.csect name[BS]} or @code{[UC]}''. (Without the +second upgrade, debugging works, but there may be occasional +aberrations.) + +IBM has corresponding support organizations outside of North America. +If you are not in North America, call your IBM branch office and ask +them to put you in touch with the department that handles emergency +fixes for AIX on the RS/6000. If that doesn't work, ask for the +department that handles software defect support for AIX on the RS/6000. +Then ask for the emergency APAR fix. +@end ifset +@ifset HOSTiris +IRIX 4.0.1 (or later). +@end ifset +@c UPDATE! fill in OS for all supported platforms. + +@item Tape Drive +You need access to a tape drive that can read the distribution tape. +The tape drive need not be on the ||HOST|| where you want to run +the software; but it is best if the machine with a tape drive and your ||HOST|| +can mount a common file system. At the very least, you need some sort +of file transfer capability between the machine with a tape drive and +your ||HOST||. + +Cygnus release tapes are labelled to identify the kind of +tape used; either ||TAPdflt|| tapes, or Exabyte tapes. + +@item Disk Space +The total space required to extract and install +binaries and source for all programs is +||DF|| megabytes. + +The software is configured to go into @file{/usr/cygnus}. If you have +space available, but not in the same file system as @file{/usr}, you can +use @samp{ln -s} to create @file{/usr/cygnus} as a symbolic link to the +file system where you do have the space available. + +If you don't have enough space, you may be able to install binaries only; +see @ref{Limited Space,,Not Enough Space}. The space required for +installing the binaries on ||HOST|| systems is ||BD|| megabytes. + +@item Write Access +You need to to sign on to an account with write access to @file{/usr}, +or at least to an existing @file{/usr/cygnus} directory. If you can't +write in @file{/usr} or @file{/usr/cygnus}, see @ref{No access,,No +Access to @file{/usr/cygnus}}. + +Root access is @emph{not} necessary to run the installation itself; +but you might need it briefly to arrange for a writable +@file{/usr/cygnus} directory, and to build a symbolic link in @file{/usr} after +the installation is complete. The detailed installation instructions show +when this may be necessary. We recommend you avoid @samp{su root} whenever +possible. +@end table + +@node Installing, Examples, Requirements, Top +@unnumbered Installing the Developer's Kit + +@iftex +This note shows the different parts of examples like this: +@table @asis +@item @code{Computer output is shown in typewriter font.} +@item @b{Your input is indicated by a sans-serif font.} +@item @i{Comments appear in italic font}. +@end table +@end iftex +In examples, we show the system prompt as @samp{eg$}. + +The Cygnus Progressive--||RELNO|| tape contains two separate @code{tar} +files. The first file contains a script called @code{Install}; +the second file contains the Progressive software. To get +the software onto your system, you need to make sure you have the space +you'll need for it, and get the @code{Install} script off the tape. +Then you can use the @code{Install} script to choose what else to +install. + +Here is more detail about what to do. Two checklists follow. The first +checklist shows what to do if you have a tape drive on the same system +(a ||HOST||) where you want to install the Developer's Kit; the +second shows how to use another networked machine to read the tape, then +finish the installation on your ||HOST||. + +Both checklists give the procedure for installing the Developer's Kit +under @file{/usr/cygnus} (which can be a symbolic link from somewhere +else, if you like). We recommend you use this location for the +software, because the precompiled, ready-to-run versions of the tools +are configured this way. (If you want to use a different location, and +cannot establish a symbolic link from it to @file{/usr/cygnus}, please +see @ref{Install-Options,,Installation Options}. To use the software +conveniently after installing elsewhere, you should reconfigure and +recompile from source; see @ref{Paths,,Changing the Paths}.) + +Both checklists are very similar to @ref{Brief,,Installing in Brief}, +but provide more discussion of each step, and offer alternatives for +tape drives, for systems whose available disk space is not in +@code{/usr}, and for installing only portions of the Developer's Kit. + +@menu +* local-install:: Installing with a local tape drive +* cross-install:: Installing with another machine's tape drive +@end menu + +@node local-install, cross-install, Installing, Installing +@unnumberedsubsec Installing in @file{/usr/cygnus}, with a local tape drive + +This procedure is for a ||HOST|| that has its own tape drive. + +Installing this way will install all the source code, plus the binaries for +the ||HOST||. If you don't want both source and binaries, stop after +extracting @code{Install} from the tape, and read about what options you +can use with @code{Install} in @ref{Install-Options,,Installation +Options}. For examples of variations on what to install, +@xref{Examples,,Installation Examples}. + +@enumerate +@item +find out the name of the @emph{non-rewinding} tape device on your +machine that can read the release tape. Cygnus release tapes are +labelled to identify the kind of tape used---either ||TAPdflt|| or Exabyte. +@ifset HOSTiris +You must also be certain to use a @emph{non-byte-swapping} tape device. +See @samp{man tps} for details. +@end ifset +@ifset HOSTrs6000 +On RS/6000 systems, you can find details on tape drives in +@samp{man rmt}. +@end ifset + + +You should use one of the following devices: +@table @emph +@item ||TAPdflt|| tapes +Use @file{||DEVdflt||} where the examples show @code{/dev/@var{tape}}. + +@item Exabyte tapes +The device name depends on how your Exabyte tape drive was installed; +ask your system administrator. +@ifset HOSTsun4 +You will probably use one of +@file{/dev/nrst0} or @file{/dev/nrst1} where we show +@code{/dev/@var{tape}}. +@end ifset +@ifset HOSTsun3 +You will probably use one of +@file{/dev/nrst0} or @file{/dev/nrst1} where we show +@code{/dev/@var{tape}}. +@end ifset +@end table + +@item +Check that you have enough space available (@pxref{Requirements,,System +Requirements}) in @file{/usr}. You can use @samp{df /usr} to check. + +@item +Check whether there's already a @file{/usr/cygnus} directory, and +whether you can write in it. Typing the following line checks both: + +@cartouche +@example +eg$ @b{touch /usr/cygnus/test; rm /usr/cygnus/test} +@end example +@end cartouche + +@noindent +@emph{If you get no errors from this line, skip the next step.} + +@item +If you got ``No such file or directory'' or ``Permission denied'' +errors, you need to sign on (or @code{su}) to an account that has +permission to write in @file{/usr} or in an existing @file{/usr/cygnus} +directory. If only @code{root} has access, the best procedure is to +@code{su root} @emph{briefly}, to create a writable +@file{/usr/cygnus}---then return to your usual sign-on. For instance: + +@cartouche +@example +eg$ @b{su root} +password: @i{enter root password} +# @b{mkdir /usr/cygnus} @i{ignore ``File exists'' error if any} +# @b{chmod 777 /usr/cygnus} +# @b{exit} @i{root access not needed beyond this} +eg$ +@end example +@end cartouche + +If you don't have access to @code{root} or to any account with +permission to write in @file{/usr} or @file{/usr/cygnus}, see @ref{No +access,,No Access to @file{/usr/cygnus}}. + +@item +Load the Cygnus Support release tape (labelled ``Progressive--||RELNO||'') into +your system's tape drive. + +@item +Extract the @code{Install} script (remember, @var{tape} stands for the +device name for the appropriate tape drive on your system): + +@cartouche +@example +eg$ @b{cd /tmp} +eg$ @b{tar xfv /dev/@var{tape} Install} +@end example +@end cartouche + +@c UPDATE! Check error messages from tar on non-Suns when supported +If you get any error messages beginning ``tar: can't open'', check that +the tape is correctly placed in your tape drive, and that you typed the +right name for @var{tape}. + +It doesn't really matter where you put @code{Install}, though these +examples assume @file{/tmp}. Don't worry about losing the script after +you've done the install; when you extract anything from the tape, +another copy of @code{Install} is saved (for future reference) in +@file{/usr/cygnus/progressive-||RELNO||}. + +@quotation +@emph{If you don't want both source and binaries, stop now,} and read about +what options you can use with @code{Install} in +@ref{Install-Options,,Installation Options}. For examples of variations +on what to install, @xref{Examples,,Installation Examples}. +@end quotation + +@item +Now you can extract all the software by running @code{Install}. Use +the @samp{-tape=} option to identify your tape drive: + +@cartouche +@example +eg$ @b{/tmp/Install -tape=/dev/@var{tape}} +@end example +@end cartouche + +This is a time-consuming step. @code{Install} will begin by using +@code{tar} to extract software for your system, leaving a log in +@file{/usr/cygnus/tar.log}. Then it prepares copies of your system +header files, converted to comply with @sc{ansi} C +(@pxref{Why-fixincludes,,Why Convert System Header Files?}); a log for +this step goes in +@file{/usr/cygnus/progressive-||RELNO||/fixincludes.log}. @emph{Your +system's original header files are not changed;} @code{Install} writes +the converted copies in a separate, @sc{gcc}-specific directory. + +As it executes, @code{Install} displays occasional messages to keep you +informed about which of these steps it's executing. Among them, these +messages mark completion of the major stages of installation: + +@cartouche +@example +Cygnus Support software distribution extracted! + +Fixed include files installed! + +Cygnus Support software distribution tested! + +Done. +@end example +@end cartouche + +@ifset HOSTrs6000 +If the test step fails on a @samp{.s} file, you may not have the +correct assembler from IBM installed. @xref{Requirements,,System +Requirements}. +@end ifset + +@item +Now that the software is on your system, you need to arrange for users +to run it conveniently. We recommend the following links; see +@ref{Links,,Links for Easy Access and Updating}, for a discussion. + +@cartouche +@example +eg$ @b{cd /usr/cygnus} +eg$ @b{ln -s progressive-||RELNO|| progressive} + +eg$ @b{su root} @i{root privileges may be needed} +password: @i{to put link in /usr} +# @b{ln -s /usr/cygnus/progressive/H-||HOSTstr|| /usr/progressive} +# exit @i{give up root privileges as soon as possible} +@end example +@end cartouche + +@item +Finally, in case you need to send problem reports to Cygnus, we've +included a script @code{send_pr} (and a supporting online template) to +structure and transmit your reports. Please use the +script @code{install_cid} to record your Cygnus customer ID in your copy +of the problem report form. (You can find your customer ID in the cover +letter that came with this release; or call the Cygnus hotline, +@w{+1 415 322 7836}.) This will enable us to respond as quickly as +possible to any problem reports you send. + +@cartouche +@example +eg$ @b{/usr/cygnus/progressive-||RELNO||/H-||HOSTstr||/bin/install@t{_}cid @var{ID}} +install_cid: `@var{ID}' is now the default customer ID + for send_pr +@end example +@end cartouche + +@item +We recommended permissions @code{777} for the @file{/usr/cygnus} +directory, to be sure you could run this procedure. However, for the +long term, it is usually not a good idea to leave directories +world-writable (especially directories where executables come from). + +For better security, remove public write access from @file{/usr/cygnus}. +See your System Administrator for the correct permissions at your site. +@end enumerate + +You're done! Anyone who puts @samp{/usr/progressive/bin} in her or his +@code{PATH} can use the Developer's Kit. + +@node cross-install, , local-install, Installing +@unnumberedsubsec Installing in @file{/usr/cygnus}, with another machine's tape drive +This checklist is for a ||HOST|| that does not have its own tape drive, +but can share a file system with another machine that does have a tape +drive. The other machine need not be a ||HOST||. + +Installing this way will install all the source, plus the binaries for +the ||HOST||. If you don't want both source and binaries, stop after +extracting @code{Install} from the tape, and read about what options you +can use with @code{Install} in @ref{Install-Options,,Installation +Options}. For examples of variations on what to install, +@xref{Examples,,Installation Examples}. + +@enumerate +@item +find a machine with a suitable tape drive on the same network as your +||HOST||, and sign on to it. If the only machine with a tape +drive isn't on the network, @pxref{No Drive,,No Local Tape Drive}. + +@item +find out the name of the @emph{non-rewinding} tape device on the machine +that can read the release tape. Cygnus release tapes are labelled to +identify the kind of tape used---either ||TAPdflt||, or Exabyte. + +You should use one of the following devices on ||HOST|| (or +compatible) systems: +@table @emph +@item ||TAPdflt|| tapes +Use @file{||DEVdflt||} where the examples show @code{/dev/@var{tape}}. + +@item Exabyte tapes +The device name depends on how your Exabyte tape drive was installed; +check with your system administrator. +@ifset HOSTsun4 +You will probably use one of +@file{/dev/nrst0} or @file{/dev/nrst1} where the example shows +@code{/dev/@var{tape}}. +@end ifset +@ifset HOSTsun3 +You will probably use one of +@file{/dev/nrst0} or @file{/dev/nrst1} where the example shows +@code{/dev/@var{tape}}. +@end ifset +@end table + +@item +Choose a directory where you will install the Developer's Kit. The +directory must be accessible from both machines (the one with the tape +drive, and the ||HOST|| where you want to use the software)---for +example, over NFS. Wherever this note uses @var{shr}, substitute the +name of the directory you chose. + +The shared directory need not have the same name on both machines, +though we show it as @var{shr} on both, for simplicity. + +@item +Check that you have enough space available (@pxref{Requirements,,System +Requirements}) in @var{shr}. You can use @samp{df @var{shr}} to check. + +@item +Check whether there's already a @file{@var{shr}/cygnus} directory, +and whether you can write in it. Typing the following line checks both: + +@cartouche +@example +eg$ @b{touch @var{shr}/cygnus/test; rm @var{shr}/cygnus/test} +@end example +@end cartouche + +@noindent +@emph{If you get no errors from this line, skip the next step.} + +@item +If you got ``No such file or directory'' or ``Permission denied'' +errors, you need to sign on (or @code{su}) to an account that has +permission to write in @var{shr} or in an existing +@file{@var{shr}/cygnus} directory. If only @code{root} has access, +the best procedure is to @code{su root} @emph{briefly}, and create a writable +@file{@var{shr}/cygnus}---then return to your usual sign-on. For +instance: + +@cartouche +@example +eg$ @b{su root} +password: @i{(enter root password)} +# @b{mkdir @var{shr}/cygnus} @i{(ignore ``File exists'' error if any)} +# @b{chmod 777 @var{shr}/cygnus} +# @b{exit} @i{root access not needed beyond this} +eg$ +@end example +@end cartouche + +@item +Load the Cygnus Support release tape (labelled ``Progressive--||RELNO||'') into +the tape drive. In these examples, @var{tape} stands for the +device name for the appropriate tape drive on your system. + +@item +The first file on the tape is a script called @code{Install}. +That script automates most of the installation procedure---but first you +need to bootstrap the installation by getting @code{Install} itself from +the tape. It doesn't really matter where you put this initial +copy of @code{Install}; it is only used to get things started---these +examples assume you put it in @file{/tmp}. When you use this copy of +@code{Install} to extract software from the tape, another copy of +@code{Install} will be saved in +@file{@var{shr}/cygnus/progressive-||RELNO||}. Later, you will use that +second copy to finish the installation on your ||HOST||. + +These commands will get @code{Install} into the @file{/tmp} directory +(remember, @var{tape} stands for the device name for the appropriate +tape drive on your system): + +@cartouche +@example +eg$ @b{cd /tmp} +eg$ @b{tar xfv /dev/@var{tape} Install} +@end example +@end cartouche + +@noindent +@c UPDATE! tar error messages on other hosts? +If you get any error messages beginning with something like ``tar: can't +open'', check that the tape is correctly placed in your tape drive, and +that you typed the right name for @var{tape}. + +@quotation +@emph{If you don't want both source and binaries, stop now,} and read about +what options you can use with @code{Install} in +@ref{Install-Options,,Installation Options}. For examples of variations +on what to install, @xref{Examples,,Installation Examples}. +@end quotation + +@item +Now you can extract all the software by running @samp{Install extract}. +Use the @samp{-tape=} option to identify your tape drive, and the +@w{@samp{-installdir=}} option to point to the @var{shr} directory. + +@cartouche +@example +eg$ @b{cd /tmp} +eg$ @b{./Install extract -tape=/dev/@var{tape} -installdir=@var{shr}/cygnus} +@end example +@end cartouche + +This is a time-consuming step. @code{Install} will use @code{tar} to +extract software for your system, leaving a log in the file +@file{@var{shr}/cygnus/tar.log}. + +When @code{Install} is done extracting the tape contents, it +displays the messages + +@cartouche +@example +Cygnus Support software distribution extracted! +Done. +@end example +@end cartouche + +@item +Log on to the ||HOST|| where you want to use the software. + +@item +Create a symbolic link from @file{@var{shr}/cygnus/progressive-||RELNO||} +to @file{/usr/cygnus/progressive-||RELNO||} on your ||HOST||. You may +need to become @code{root} @emph{briefly}, as in this example: + +@iftex +@widen{1pc} +@end iftex +@cartouche +@example +eg-||HOSTstr||$ @b{su root} +password: +# @b{mkdir /usr/cygnus} @i{(ignore ``File exists'' error if any)} +# @b{chmod 777 /usr/cygnus} +# @b{ln -s @var{shr}/cygnus/progressive-||RELNO|| /usr/cygnus/progressive-||RELNO||} +# exit @i{root access not needed beyond this} +@end example +@end cartouche +@iftex +@widen{-1pc} +@end iftex + +@noindent +If you don't have access to any account with permission to write in +@file{/usr}, @pxref{No access,,No Access to @file{/usr/cygnus}}. + +@item +Fix up system header files on your ||HOST||, and test the installation, with +the copy of @code{Install} that was placed in +@file{@var{shr}/cygnus/progressive-||RELNO||}: + +@cartouche +@example +eg-||HOSTstr||$ @b{cd /usr/cygnus/progressive-||RELNO||} +eg-||HOSTstr||$ @b{./Install @b{f}ixincludes test} +@end example +@end cartouche + +@noindent +A log for the @code{fixincludes} step goes in +@file{/usr/cygnus/progressive-||RELNO||/fixincludes.log}. @emph{Your +system's original header files are not changed;} @code{Install} writes +the converted copies in a separate, @sc{gcc}-specific directory. + +When each stage of this work is complete, @code{Install} displays these +messages (the last, @samp{Done.}, simply indicates that @code{Install} +has finished executing). + +@cartouche +@example +Fixed include files installed! + +Cygnus Support software distribution tested! + +Done. +@end example +@end cartouche + +@ifset HOSTrs6000 +If the test step fails on a @samp{.s} file, you may not have the +correct assembler from IBM installed. @xref{Requirements,,System +Requirements}. +@end ifset + +@item +Now that the software is on your system, you need to arrange for users +to run it conveniently. We recommend the following links; see +@ref{Links,,Links for Easy Access and Updating}, for a discussion. + +@cartouche +@example +eg-||HOSTstr||$ @b{cd /usr/cygnus} +eg-||HOSTstr||$ @b{ln -s progressive-||RELNO|| progressive} + +eg-||HOSTstr||$ @b{su root} @i{root privileges may be needed} +password: @i{to put link in /usr} +# @b{ln -s /usr/cygnus/progressive/H-||HOSTstr|| /usr/progressive} +# exit @i{give up root privileges as soon as possible} +@end example +@end cartouche + +@item +Finally, in case you need to send problem reports to Cygnus, we've +included a script @code{send_pr} (and a supporting online form) to +structure and transmit your reports. Please use the +script @code{install_cid} to record your Cygnus customer ID in your copy +of the problem report form. (You can find your customer ID in the cover +letter that came with this release; or call the Cygnus hotline, +@w{+1 415 322 7836}.) This will enable us to respond as quickly as +possible to any problem reports you send. + +@cartouche +@example +eg$ @b{/usr/cygnus/progressive-||RELNO||/H-||HOSTstr||/bin/install@t{_}cid @var{ID}} +install_cid: `@var{ID}' is now the default customer ID + for send_pr +@end example +@end cartouche + +@item +We recommended permissions @code{777} for the @file{/usr/cygnus} and +@file{@var{shr}/cygnus} directories, to make sure you could run this +procedure. However, for the long term, it is usually not a good idea to +leave directories world-writable (especially directories where +executables come from). + +For better security, remove public write access from @file{/usr/cygnus} +and @file{@var{shr}/cygnus}. See your System Administrator for the +correct permissions at your site. +@end enumerate + +You're done! Anyone who puts @samp{/usr/progressive/bin} in her or his +@code{PATH} can use the Developer's Kit. + +@node Examples, Install-Options, Installing, Top +@unnumbered Installation Examples + +Once you've extracted @code{Install} from your tape, +you can tell @code{Install} what software to install, what form of the +programs you need, and what installation steps to do. Here are some +examples covering common situations. For a full explanation of each +possible @code{Install} argument, @pxref{Install-Options,,Installation +Options}. + +@code{Install}'s default tape drive is @code{||DEVdflt||}, which is +right for the most common cases (||TAPdflt|| tapes, read on ||HOST|| +systems). If your tape drive is different, you need to use the +@samp{-tape=/dev/@var{tape}} option; the examples show this option +for completeness. Remember to specify a @emph{non-rewinding} tape +device. + +@menu +* binaries:: Installing binaries only +* ||HOSTstr||-remote:: Reading tape on any machine, finishing on ||HOST|| +* source-remove:: Removing Source +@end menu + +@node binaries, ||HOSTstr||-remote, Examples, Examples +@unnumberedsubsec Installing binaries only +@ignore +@c ignore til UPDATE fulfilled for all hosts. +For this example, we assume you've got the release on an Exabyte tape, +and that your ||HOST|| reads Exabytes with +@samp{/dev/nrst1}. +@c UPDATE! exabyes on non-Sun hosts? +@end ignore + +@cartouche +@example +@c eg$ @b{./Install -tape=/dev/nrst1 bin} +eg$ @b{./Install -tape=/dev/@var{tape} bin} +@end example +@end cartouche + +If you don't want the source---for instance, to save space---you can use +the argument @samp{bin}. + +@node ||HOSTstr||-remote, source-remove, binaries, Examples +@unnumberedsubsec Reading tape on any machine, finishing on ||HOST|| + +@cartouche +@example +@emph{On a machine on your network with a tape drive:} +eg-tp$ @b{./Install -tape=/dev/@var{tape} -installdir=@var{shr}/cygnus extract} + +@emph{On your ||HOST||} +eg$ @b{ln -s @var{shr}/cygnus /usr/cygnus} +eg$ @b{cd /usr/cygnus/progressive-||RELNO||} +eg$ @b{./Install @b{f}ixincludes test} +@end example +@end cartouche + +@noindent +If your ||HOST|| doesn't have a tape drive, but another machine that can +mount some shared directory @var{shr} does have one, you can carry out +the first step of the installation from the machine with a tape drive, +as shown. Note that you have to say @samp{extract} on the +@code{Install} command line. This alerts @code{Install} to stop the +install procedure after it reads the tape. You still have to finish the +installation, but the last two steps have to run on your ||HOST||. (If +you forget, there's no great harm done: @code{Install} will notice that +it can't carry out a full installation on the wrong machine, and will +stop with an error message---then you can go back and try again. When +@code{Install} notices a problem like this, it doesn't carry out +@emph{any} action other than giving a helpful error message). + +The @samp{fixincludes} part of the installation is essential. Please +see the full explanation (@pxref{Why-fixincludes,,Why Convert System +Header Files?}), if you're curious. + +@node source-remove, , ||HOSTstr||-remote, Examples +@unnumberedsubsec Removing Source +The @code{Install} script can remove anything it can install. For +example, if after installing the complete Developer's Kit on your +machine you decide to remove the source files: + +@cartouche +@example +eg$ @b{cd /usr/cygnus/progressive-||RELNO||} +eg$ @b{./Install remove source} +@end example +@end cartouche + +@noindent +In general, to remove a part of the Developer's Kit, use the same +@code{Install} command line that would extract that part, but add the +keyword @code{remove}. The @code{-tape} option is not necessary for +removing. + +@node Install-Options, Links, Examples, Top +@unnumbered Installation Options + +There are two kinds of command-line arguments to @code{Install}, which +you can use to direct its operation: +@itemize @bullet +@item +@emph{What form of the programs} to install. You can choose among ||HOST|| +binaries (argument @code{bin}) and source code (@code{source}). +If you don't specify either of these, @code{Install} assumes you want +both source, and binaries for ||HOST||. + +@item +@emph{What installation actions} to carry out. A full installation +involves up to three steps, and @code{Install} has options to let you +choose them explicitly. The steps are +@enumerate +@item +extracting source from the tape (option +@code{extract}) +@item +writing @sc{ansi}-C conforming copies of your system include files (needed +for the compilation tools; option @code{fixincludes}) +@item +running a simple test of the installed programs +(option @code{test}) +@end enumerate + +The last two of these actions (@code{fixincludes} and +@code{test}) can only run on your ||HOST||. If you read the +tape on another machine, you must specify the @code{extract} option +explicitly, to indicate that you don't expect the other two actions to +run (and are aware of the need to run further installation steps on your +||HOST||). +@end itemize + +@code{Install} also has two command line options: @samp{-tape} +and @w{@samp{-installdir}}. You can use these to adapt the +installation to your system. + +Here is a summary of all of @code{Install}'s command-line options, +followed by a more detailed explanation of each: + +@example +Install @r{[} -tape=/dev/@var{tape} @r{]} + @r{[} -installdir=@var{directory} @r{]} + @r{[} bin @r{]} @r{[} source @r{]} + @r{[} extract @r{]} @r{[} fixincludes @r{]} @r{[} test @r{]} + @r{[} remove @r{]} +@end example + +@table @code +@item -tape=/dev/@var{tape} +@itemx -tape=@var{tarfile} +Specify the @emph{non-rewinding} device name for your tape drive as +@var{tape}. + +If you extract the installation script and tarfile on some other system, +and transfer them to your ||HOST|| for installation, use use the name of +the tarfile instead of a device name with @samp{-tape}. @xref{No +Drive,,No Local Tape Drive}, for more discussion. + +@item -installdir=@var{directory} +If you have no write access to @samp{/usr/cygnus} or @samp{/usr}, use +this option to specify an alternate @var{directory} for placing your +software---but beware: the software is configured to go in +@samp{/usr/cygnus}, and you'll have to override or change that too. +@xref{Paths,,Changing the Paths}. + +@item bin +@itemx source +By default, @code{Install} extracts both source, and binaries for your +||HOST||. Instead of relying on the default, you +can use these options to say exactly what forms you +want. You need to do this if +@itemize @bullet +@item +you want only binaries, or +@item +you want only source. +@end itemize + +@noindent +@code{Install} is designed to share files, wherever +possible, between installations for different hosts (of the same +release). If you get Cygnus release tapes configured for different +hosts, there is no need to do a binary-only install of some of the +tapes to save space on a shared file system; @code{Install} arranges the +files so that all hosts will share the same source +files. Documentation files are shared as well. +See @ref{Links,,Links for Easy Access and Updating}, for a +discussion of how to manage the directory structure used for this +purpose. + +@item extract +@item fixincludes +@item test +A full installation includes up to three things: (1) extracting +software from the tape; (2) creating @sc{ansi}-C conforming copies of your +system's standard header files; and (3) testing the installation. +You can execute these steps separately by specifying +@samp{extract}, @samp{fixincludes}, or @samp{test} on the +@code{Install} command line. + +After you run @samp{extract}, @samp{fixincludes} is essential if you're +using the compiler. @samp{fixincludes} @emph{does not change your +system's original header files;} @code{Install} writes the converted +copies in a separate, @sc{gcc}-specific directory. +@xref{Why-fixincludes,,Why Convert System Header Files?}, for more +discussion of the @samp{fixincludes} step. @code{Install} will only +attempt these last two steps if you run it on the ||HOST||. + +@samp{test} is a confidence-building step, and doesn't +actually change the state of the installed software. The +@samp{test} step may not make sense, depending on what +other options you've specified---if you install only source, there's +nothing to test. + +If you specify a step that doesn't make sense, or if you run @code{Install} +on a different machine but try to run @code{fixincludes} or +@code{test}, @code{Install} will notice the error, and exit +(before doing anything at all) with an error message, so you can try +again. + +When you run @samp{extract}, @code{Install} leaves a log file +@file{tar.log} in the installation directory---by default, in @file{/usr/cygnus}. When you run @samp{fixincludes}, +@code{Install} leaves a log file @file{fixincludes.log} in the +@file{progressive-||RELNO||} subdirectory. + +@item remove +You can also use @code{Install} to remove parts of the release after +you've installed them. Identify what to remove with either of the +command-line options @samp{source} or @samp{bin}; if you specify +@samp{remove} as well, @code{Install} will try to erase parts of the +installation from your system. @xref{Removing,,Removing Parts of the Developer's +Kit}, for an example. +@end table + +@menu +* Why-fixincludes:: Why Convert System Header Files? +@end menu + +@node Why-fixincludes, , Install-Options, Install-Options +@unnumberedsec Why Convert System Header Files? + +@c UPDATE! Is this really needed on @emph{all} hosts? +It is very important to run @samp{Install fixincludes} (on @emph{each +host} where you install the compiler binaries). + +When the @sc{ansi x3j11} committee finished developing a standard for +the C language, a few things that had worked one way in many traditional +C compilers ended up working differently in @sc{ansi} C. Most of these +changes are improvements. But some Unix header files still rely on the +old C meanings, in cases where the Unix vendor has not yet converted to +using an @sc{ansi} C compiler for the operating system itself. +@samp{Install fixincludes} does a mechanical translation that writes +@sc{ansi} C versions of some system header files into a new, +@sc{gcc}-specific include directory---@emph{your system's original +header files are not affected.} + +If you don't run @code{fixincludes}, the GNU C compiler can only use the +original system header files when you compile new C programs. @emph{In +some cases, the resulting programs will fail at run-time}. + +@node Links, Running, Install-Options, Top +@unnumbered Links for Easy Access and Updating +Once you've extracted them from the tape, the tools are installed under +a directory named @file{progressive-||RELNO||}. We put the release +number in the directory name so that you can +keep several releases installed at the same time, if you wish. In order +to simplify administrative procedures (such as upgrades to future Cygnus +Progressive releases), we recommend that you establish a symbolic link +@file{/usr/cygnus/progressive} to this directory. For example, assuming +you've used the default installation path: + +@cartouche +@example +eg$ @b{cd /usr/cygnus} +eg$ @b{ln -s progressive-||RELNO|| progressive} +@end example +@end cartouche + +Directories of host-independent files (source and documentation) are +installed directly under @file{progressive-||RELNO||}. However, to +accomodate binaries for multiple hosts in a single directory structure, +the binary files for your ||HOST|| are in a subdirectory +@file{H-||HOSTstr||}. + +This means that one more level of symbolic links is helpful, to allow +your users to keep the same execution path defined even if they +sometimes use ||HOST|| binaries and sometimes binaries for another +machine. Even if this doesn't apply now, you might want it in the +future; establishing these links now can save your users the trouble of +changing all their paths later. The idea is to build +@samp{/usr/progressive/bin} on each machine so that it points to the +appropriate binary subdirectory for each machine---for instance, +@samp{/usr/cygnus/progressive/H-||HOSTstr||}. + +You may need to use @code{su} again briefly to establish these links: + +@cartouche +@example +eg$ @b{ln -s /usr/cygnus/progressive/H-||HOSTstr|| /usr/progressive} +@end example +@end cartouche + +We recommend building these links as the very last step in the +installation process. That way, users at your site will only see +software in @file{/usr/progressive} when you're satisfied that the +installation is complete and successful. + +@menu +* Running:: Running the Programs +@end menu + +@node Running, Paths, Links, Top +@unnumbered Running the Programs +Any users who wish to run the Cygnus development tools will need to make +sure the @code{PATH} environment variable will find them. If you create +the symbolic links we recommend above, users who want to run the +Developer's Kit---regardless of whether they need binaries for ||HOST||, +or for some other platform---can use settings like one of the following +in their initialization files. + +@example +@exdent For shells compatible with Bourne shell (@code{/bin/sh}, @code{bash}, or Korn shell): +@cartouche +@b{PATH=/usr/progressive/bin:$PATH} +@b{export PATH} +@end cartouche +@end example + +@example +@exdent For C shell: +@cartouche +@b{set path=(/usr/progressive/bin $path)} +@end cartouche +@end example + +@noindent +You should also ensure that your @code{man} command can pick up the +manual pages for these tools. Some @code{man} programs recognize a +@code{MANPATH} environment variable. If your @code{man} program is one +of these, users at your site can also include in their initialization +file lines like + +@example +@exdent For Bourne-compatible shells: +@cartouche +@b{MANPATH=/usr/cygnus/progressive/man:$MANPATH:/usr/man} +@b{export MANPATH} +@end cartouche +@end example + +@example +@exdent For C shell: +@cartouche +@b{setenv MANPATH /usr/cygnus/progressive/man:$MANPATH:/usr/man} +@end cartouche +@end example + +If your @code{man} program doesn't recognize @samp{MANPATH}, you may +want to copy or link the files from +@file{progressive/man/man1} into your system's +@file{man/man1}. @refill + +@node Paths, Trouble, Running, Top +@unnumbered Changing the Paths +The binaries shipped by Cygnus are configured for installation under the +directory @file{/usr/cygnus}. In particular, @code{gcc}, @code{g++}, +and the documentation browser @code{info} need to know the location of +the distribution. + +If you wish to run the tools after installing them in another location, +you can either: +@itemize @bullet +@item +use environment variables (and, for @code{g++}, command-line options) +to tell the tools where to find pieces of the installation; or + +@item +rebuild the tools from source, with your preferred paths built in. +@xref{Rebuilding,,Rebuilding from Source}, if you want to take this +approach. +@end itemize + +In rare circumstances, the auxiliary installation script +@code{install_cid} will also require a workaround if you do not install +in @file{/usr/cygnus}. + +@subheading GCC Paths +@c FIXME! Add something about specs file? +You can run the compiler @sc{gcc} without recompiling, even if you +install the distribution in an alternate location, by first setting the +environment variable @samp{GCC_EXEC_PREFIX}. This variable specifies +where to find the executables, libraries, and data files used by the +compiler. Its value will be different depending on which set of +binaries you need to run. For example, if you install the tape +distribution under @file{/local} (instead of the default +@file{/usr/cygnus}), and you wish to run @sc{gcc} as a native ||HOST|| +compiler, you could set @samp{GCC_EXEC_PREFIX} as follows. (You can +type the first two lines as a single line, if you like; the example +is split using the line continuation character @samp{\} only +to make it fit on the printed page.) + +@cartouche +@example +@b{GCC@t{_}EXEC@t{_}PREFIX=/local/progressive-||RELNO||/H-||HOSTstr||/@t{\} +lib/gcc-lib/||TARGET||/||GCCvn||/} +@b{export GCC@t{_}EXEC@t{_}PREFIX} +@end example +@end cartouche + +@noindent +The example assumes you use a shell compatible with the Bourne shell; if +you run the C shell, use the following instead. (Again, the line +continuation character @samp{\} is only used for convenience in the +example; feel free to use a single line.) + +@cartouche +@example +@b{setenv GCC@t{_}EXEC@t{_}PREFIX /local/progressive-||RELNO||/H-||HOSTstr||/@t{\} +lib/gcc-lib/||TARGET||/||GCCvn||/} +@end example +@end cartouche + +@quotation +@emph{Warning: The trailing slash @samp{/} is important}. The @code{gcc} +program uses @samp{GCC_EXEC_PREFIX} simply as a prefix. If you omit the +slash (or make any other mistakes in specifying the prefix), @code{gcc} +will fail with a message beginning @samp{installation problem, cannot +exec@dots{}}. +@end quotation + +@subheading G++ Paths +To compile C++ programs (when you've installed the binaries for the +compiler somewhere other than @file{/usr/cygnus}), you need to set +@code{GCC_EXEC_PREFIX} as for C programs. You @emph{also} need to include +a @samp{-L} option and a @samp{-I} option on the @code{g++} command +line, to locate the @sc{g++} specific header files and library. For example, +assuming you installed the ||HOST|| binaries under @file{/local}, and +want to compile a C++ program @samp{program.cc}: + +@enumerate +@item +Set @code{GCC_EXEC_PREFIX} in one of the ways shown above; + +@item +Invoke the @code{g++} compiler with at least the following options: +@end enumerate +@cartouche +@example +eg$ @b{g++ -L/local/progressive-||RELNO||/H-||HOSTstr||/lib@t{\} +-I/local/progressive-||RELNO||/H-||HOSTstr||/lib/g++-include program.cc} +@end example +@end cartouche + +@subheading @code{info} Paths +The standalone documentation browser @code{info} also needs to know the +location of its documentation files in the distribution. The default +location, @file{/usr/cygnus/progressive-||RELNO||/info}, is compiled in. +If you install elsewhere, set the environment variable @code{INFOPATH} +to indicate the alternate location. + +For example, again assuming you installed under @file{/local}: + +@example +@exdent For shells compatible with Bourne shell (@code{/bin/sh}, @code{bash}, or Korn shell): +@cartouche +@b{INFOPATH=/local/progressive-||RELNO||/info} +@b{export INFOPATH} +@end cartouche +@end example + +@example +@exdent For C shell: +@cartouche +@b{setenv INFOPATH /local/progressive-||RELNO||/info} +@end cartouche +@end example + +@noindent +If you built @file{progressive} as a symbolic link to +@file{progressive-||RELNO||}, as recommended in @ref{Links,,Links for +Easy Access and Updating}, then you could simply use +@file{/local/progressive/info} as the value of @code{INFOPATH} in the +examples above. + +@subheading @code{install_cid} Paths +The auxiliary script @code{install_cid} is provided as a convenience, to +fill in your site's customer ID as the default for your local version of +the Cygnus @code{send_pr} problem-reporting script. + +If you don't install in @file{/usr/cygnus}, @samp{install_cid +@var{ID}} will still work correctly in most cases. However, +there is one situation where @code{install_cid} fails: + +@itemize @bullet +@item +@emph{if} your site already has a release tree for +@samp{/usr/cygnus/progressive-||RELNO||}, +@item +@emph{and} you run @code{Install} with an alternative installation +directory. +@end itemize + +@noindent +In this case, you must manually edit your customer ID into your site's +copy of @code{send_pr}. Please call the Cygnus hotline, +@w{+1 415 322 7836}, if you have any trouble with this. + +@node Trouble, Rebuilding, Paths, Top +@unnumbered Some Things that Might go Wrong + +We've tried to make the installation of your Developer's Kit as painless +as possible. Still, some complications may arise. Here are suggestions +for dealing with some of them. + +@menu +* No Drive:: No Local Tape Drive +* Limited Space:: Not Enough Space +* No access:: No Access to @file{/usr/cygnus} +* Install errors:: Error Messages from @code{Install} +@end menu + +@node No Drive, Limited Space, Trouble, Trouble +@unnumberedsec No Local Tape Drive +If your ||HOST|| doesn't have an appropriate tape drive, you may +still be able to install your software. Check with your system +administrator to see if another machine at your site has a tape drive +you can use. If so: +@table @emph +@item If a shared filesystem is available +between the two machines, and it has enough space, create +@samp{/usr/cygnus} on your ||HOST|| (the one where you want to install +this Progressive Release) as a symbolic link to a directory where the +other machine (the one with a tape drive) can write. Then go ahead and +run @code{Install} from the machine with a tape drive. You'll have to +run @samp{Install fixincludes} and @samp{Install test} from your +||HOST|| afterwards; @pxref{cross-install,,Installing with another +machine's tape drive}. + +@item If some form of filetransfer is available +(such as @code{uucp}), read the tape using a system utility (for +instance, @code{dd} on Unix systems; see the system documentation for +the machine with a tape drive). There are two files on the +distribution tape; the first contains just the @code{Install} script, +and the second is a compressed @code{tar} format file containing the +rest of the release. Read both of these files, and transfer them to +your own machine. Then run @code{Install} as shown in +@ref{local-install,,Installing with a local tape drive}, but use +@samp{-tape=@var{tarfile}} to specify the name of the installation +file, instead of @samp{-tape=/dev/@var{tape}} as shown in the +examples. In the simplest case, for example (starting after you've +transferred @code{Install} and the tar file to your system): + +@cartouche +@example +eg$ @b{./Install -tape=@var{tarfile}} +@end example +@end cartouche + +@end table + +@node Limited Space, No access, No Drive, Trouble +@unnumberedsec Not Enough Space +If you don't have enough space to install all of the tape +distribution, you can instead extract only the compiled code, or only +the source. + +The following table summarizes the approximate space (rounded up to the +next megabyte) needed for source and binaries. +There is a little overlap between the partial installations: the +documentation, and documentation tools, are always installed. + +@table @r +@item ||BD|| MB +||HOST|| binaries + +@item ||SD|| MB +source code for all programs + +@item ||DF|| MB +||HOST|| total +@end table + +You can easily extract these components independently of one another, by +using the @samp{source} or @samp{bin} arguments to the @code{Install} +script provided on your release tape. +@xref{Install-Options,,Installation Options}. + +@node No access, Install errors, Limited Space, Trouble +@unnumberedsec No Access to @file{/usr/cygnus} + +If you can't sign on to an account with access to write in @file{/usr} +or @file{/usr/cygnus}, use the @samp{-installdir=@var{directory}} option +to @code{Install} to specify a different installation directory, where +you @emph{can} write. For example, if all the other installation +defaults are right, you can execute something like @samp{./Install +-tape=/dev/@var{tape} -installdir=@var{mydir}}. You'll need to either +override default paths for the pre-compiled tools, or else recompile the +software. + +@quotation +@emph{WARNING:} If you can't install in @file{/usr/cygnus} (or link your +installation directory to that name), some of the defaults configured +into the Progressive--||RELNO|| distribution won't work. +@xref{Paths,,Changing the Paths}, for information on overriding or +reconfiguring these defaults. +@end quotation + +@node Install errors, , No access, Trouble +@unnumberedsec Error Messages from @code{Install} +The @code{Install} script checks for many errors and inconsistencies in +the way its arguments are used. The messages are meant to be +self-explanatory. Here is a list of a few messages where further +information might be useful: +@table @code +@item Cannot read from TAPE device, @var{tape} +The error message ends with the tape device @code{Install} was trying to +use. Please check that it is the device you intended; possible causes of +trouble might include leaving off the @samp{/dev/} prefix at the front +of the device name. A typo in the device name might also cause this +problem. + +If the problem is neither of these things, perhaps your tape device can't +read our tape; @pxref{No Drive,,No Local Tape Drive}, for a discussion +of how to use another machine's tape drive. + +@item @dots{} This is a problem. +@itemx Cannot cd to @var{installdir} +@itemx I do not know why I cannot create @var{installdir} +@itemx hello.c fails to run +@itemx test-ioctl.c fails to run +@itemx I do not know how to remove an arch called @dots{} +These errors (the first covers anything that ends in @samp{This is a +problem}) are from paranoia checks; they are issued for situations that +other checks should have covered, or for unlikely situations that +require further diagnosis. + +If you get one of these messages, please +@itemize @bullet +@item +@strong{call the Cygnus hotline, +1 415 322 7836}, or +@item +send electronic mail to @samp{help@@cygnus.com}. +@end itemize +@end table + +@node Rebuilding, Removing, Trouble, Top +@unnumbered Rebuilding From Source + +All Cygnus products are free software; your Developer's Kit includes +complete source code for all programs. + +Cygnus Support has implemented an automatic configuration scheme to +adapt the programs to different environments. + +Rebuilding the programs from source requires these steps: +@enumerate +@item +configuration +@item +compilation +@item +installation +@end enumerate + +For example, executing the following commands in sequence will rebuild +and install a ||HOST|| native version of all the tools in a nonstandard +directory: + +@cartouche +@example +eg$ @b{cd progressive-||RELNO||/src} + +eg$ @b{./configure ||HOSTstr|| -prefix=/local/gnu} +Created "Makefile" in @var{installdir}/progressive-||RELNO||/src + +eg$ @b{make clean all info install install-info >make.log} +@dots{} @i{output for @code{make} steps follows} +@end example +@end cartouche + +@noindent +We discuss each step in detail in the following sections. + +@menu +* Configuration:: Configuration +* Config Names:: Specifying Names for Hosts and Targets +* configure Options:: @code{configure} Options +* Compilation:: Compilation +* Installation:: Installation +@end menu + +@node Configuration, Config Names, Rebuilding, Rebuilding +@unnumberedsec Configuration + +You can configure the software in this release by using the shell +script called @code{configure}. The shell script requires one argument: +the host type. There are also several possible options, including a +@samp{-target=} option to configure for cross-system development. + +@node Config Names, configure Options, Configuration, Rebuilding +@section Specifying Names for Hosts and Targets + +The specifications used for hosts and targets in the @code{configure} +script are based on a three-part naming scheme, but some short predefined +aliases are also supported. The full naming scheme encodes three pieces +of information in the following pattern: + +@example +@var{architecture}-@var{vendor}-@var{os} +@end example + +For example, you can use the alias @code{sun4} as a @var{host} argument +or in a @samp{-target=@var{target}} option, but the equivalent full name +is @samp{sparc-sun-sunos4}. + +@quotation +@emph{Warning:} @code{configure} can represent a very large number of +combinations of architecture, vendor, and OS. There is by no means +support for all possible combinations! +@end quotation + +@node configure Options, Compilation, Config Names, Rebuilding +@section @code{configure} Options + +This section summarizes the @code{configure} options and arguments. +Your Developer's Kit contains full online documentation for the Cygnus +configure system. @inforef{Using Configure,,configure.info}, to read +about @code{configure} in more detail, including information on how the +@code{configure} options relate to @file{Makefile} variables. + +@example +configure @r{[}-prefix=@var{dest}@r{]} + @r{[}-exec-prefix=@var{bindest}@r{]} + @r{[}-srcdir=@var{path}@r{]} + @r{[}-norecursion@r{]} + @r{[}-target=@var{target}@r{]} + @var{host} +@end example + +@noindent +The binaries on your tape were configured using + +@cartouche +@example +configure -prefix /usr/cygnus/progressive-||RELNO|| \ + -exec-prefix /usr/cygnus/progressive-||RELNO||/H-||HOSTstr|| \ + ||HOSTstr|| +@end example +@end cartouche + +@table @code +@item -prefix=@var{dest} +@var{dest} is an installation directory @emph{path prefix}, the root for +the directories where @code{make install} will place things. After you +configure with this option, @samp{make install install-info} will +install info files in @file{@var{dest}/info}, man pages in +@file{@var{dest}/man}, and---unless you also use +@samp{-exec-prefix}---compiled programs in @file{@var{dest}/bin}, and +libraries in @file{@var{dest}/lib}. If you specify +@samp{-prefix=/local}, for example, @code{make install} puts the +development tools in @file{/local/bin}. + +@emph{WARNING:} the default @var{dest} path prefix in the source is not +the same as the prefix for the preconfigured binaries distributed by Cygnus. + +@samp{-prefix=/usr/cygnus/progressive-||RELNO||} was used to build this +Cygnus Progressive Release. If you do not use @code{-prefix}, the +installation directory is @file{/usr/local}. + +@item -exec-prefix=@var{bindest} +@samp{-exec-prefix} serves the same purpose as @samp{-prefix}, but +affects only machine-dependent targets (compiled programs and +libraries). Specifying both @samp{-prefix} and @samp{-exec-prefix} +allows you to segregate machine-dependent files, so that +machine-independent files can be shared. + +@emph{WARNING:} the default @var{bindest} path prefix in the source is not +the same as the prefix for the preconfigured binaries distributed by Cygnus. + +@samp{-exec-prefix=/usr/cygnus/progressive-||RELNO||/H-||HOSTstr||} was +used to build this Cygnus Progressive Release. +If you do not use @samp{-exec-prefix}, the default directory for +machine-dependent targets is whatever was specified with @file{-prefix} +(by default, @file{/usr/local}). + +@item -srcdir=@var{path} +@emph{Warning: This option is only supported if you use @sc{gnu} +@code{make}} (which is included in the Cygnus Progressive--||RELNO|| release). +Use this option to make configurations in directories separate from the +source directories. @code{configure} writes configuration specific files +in the current directory, but arranges for them to use the source in the +directory @var{path}. @code{configure} will create directories under +the working directory in parallel to the source directories below +@var{path}. Among other things, you can use this to build (or maintain) +several configurations simultaneously, in separate directories. + +@item -norecursion +Configure only the directory level where @code{configure} is executed; do not +propagate configuration to subdirectories. + +@item -target=@var{target} +Configure the development tools for cross-development (compiling, +debugging, or other processing) of programs running on the specified +@var{target}. Without this option, programs are configured ``native'', +that is, for managing programs that run on the same machine (@var{host}) +as the development tools themselves. + +There is no convenient way to generate a list of all available targets. + +@item @var{host} @dots{} +Configure the development tools to run on the specified @var{host}. + +There is no convenient way to generate a list of all available hosts. +@end table + +The @samp{-prefix=@var{dest}} and @samp{-exec-prefix=@var{bindest}} +options are particularly important. If you don't specify a @var{dest} +or @var{bindest} directory, the @file{Makefile} installs binaries in +subdirectories of @file{/usr/local}. These options are important +because the @var{dest} and @var{bindest} directories are used for +several purposes: + +@enumerate +@item +@var{bindest} is the directory where binaries are installed. + +@item +@var{bindest} is built into the compiler itself for the +locations of @sc{gcc} specific include files, the locations of @sc{gcc} +subprograms, and the location of the @sc{gcc} specific library +@file{libgcc.a}. + +@item +@var{dest} is compiled into @code{info} as the default directory +for the documentation. + +@end enumerate + +@node Compilation, Installation, configure Options, Rebuilding +@unnumberedsec Compilation + +After you've run @code{configure} (which writes the final +@file{Makefile} in each directory), compilation is straightforward. +To compile all the programs in the Developer's Kit, run: + +@cartouche +@example +@b{make all info >make.log} +@end example +@end cartouche + +The examples suggest capturing the @code{make} output in a +@file{make.log} file, because the output is lengthy. + +The overall @file{Makefile} propagates the value of the @code{CC} +variable explicitly, so that you can easily control the compiler used in +this step. @code{CFLAGS} is treated the same way. For instance, to +build the compiler a second time, using @sc{gcc} to compile itself +(after building and installing it in the alternate directory +@file{/local/gnu}), you might use + +@cartouche +@example +@b{make CC=/local/gnu/H-sun4/bin/gcc CFLAGS=-O all info >make.log} +@end example +@end cartouche + +The conventional targets @samp{all}, @samp{install}, and @samp{clean} +are supported at all levels of @file{Makefile}. Other targets are +supported as well, as appropriate in each directory; please read the +individual @file{Makefile} for details. Each @file{Makefile} in the +source directories includes ample comments to help you read it. If you +are not familiar with @code{make}, refer to @ref{Overview,,Overview of +@code{make}, make.info, GNU Make: A Program for Directing +Recompilation}. + +@node Installation, , Compilation, Rebuilding +@unnumberedsec Installation + +Whether you configure an alternative path using @code{-prefix}, or you +use the default installation path @file{/usr/local}, you can install the +software by executing: + +@cartouche +@example +@b{make install install-info} +@end example +@end cartouche + +@node Removing, Cygnus-FSF, Rebuilding, Top +@unnumbered Removing Parts of the Developer's Kit +You can use the same @code{Install} script that was used to install the +Developer's Kit on your system, to remove parts of the release. +(Remember that the @code{Install} script was automatically saved for you +as @file{/usr/cygnus/progressive-||RELNO||/Install}.) + +To do this, decide what you want to remove; then call @code{Install} +with the option @samp{remove} on the command line, as well as all the +options that you would use to install that portion of the release +(@pxref{Install-Options,,Installation Options}). For example, suppose +you never look at the source, and are running short of disk +space; you can remove the source, while leaving the rest of +the Progressive Release undisturbed, as follows: + +@cartouche +@example +eg$ @b{cd /usr/cygnus/progressive-||RELNO||} +eg$ @b{./Install remove source} +@end example +@end cartouche + +@noindent +You should see the following messages confirming the software was +removed: + +@cartouche +@example +Cygnus Support software distribution removed! +Done. +@end example +@end cartouche + +To remove the complete Progressive Release of the Developer's Kit from your system +(if, eventually, you no longer want it), delete the directory +@file{/usr/cygnus/progressive-||RELNO||} and all its contents. + +@node Cygnus-FSF, Cygnus-Support, Removing, Top +@unnumbered Cygnus Releases and the FSF + +Most of the tools in this Developer's Kit are originally from the Free +Software Foundation (FSF). You can get versions of all these tools +from the FSF as well as from Cygnus. In general, Cygnus Progressive +Releases add to FSF software in the following ways: +@c UPDATE! more differences bet Cygnus/FSF releases? + +@itemize @bullet +@item +Commercial support is available. Cygnus adds value to FSF releases in +large measure by offering outstanding support services. +@item +Coordination. The tools in your Developer's Kit are certified to work +together; you need not worry about tools being out of step with each other. +@item +Bug fixes. A Progressive Release includes many fixes, already integrated +into the programs. Cygnus repairs bugs discovered during testing, and +also tracks and includes bug fixes developed for other Cygnus customers +or distributed over the Internet. +@item +Bug reporting. Cygnus releases include the tool @code{send_pr}, which +you can use to make sure your problem reports receive prompt attention, +and are also incorporated in our future tests. +@item +Documentation. Cygnus revises and adds to available FSF +documentation to give you better descriptions of all the software tools. +@item +Stability. Cygnus tests (and uses) all the programs it releases. +@end itemize + +@c FIXME! If we can say something about this, remove @ignore/@end ignore +@c and fill in below: +@ignore +This particular Cygnus Progressive release differs from the nearest +corresponding FSF distributions in these important details: + +FILL IN HERE! + +@end ignore + +@node Cygnus-Support, , Cygnus-FSF, Top +@unnumbered 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 the software. + +We provide ``vintage'' releases---the most stable versions, which have +been though even more extensive use and testing---or up-to-the minute +``progressive'' releases, for those who need the very latest version. + +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 +hotline: +1 415 322 7836 +email: @code{info@@cygnus.com} +fax: +1 415 322 3270 +@end display + +@bye diff --git a/intro.texi b/intro.texi new file mode 100644 index 00000000000..bc00f3da9e0 --- /dev/null +++ b/intro.texi @@ -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: + +>Organization: + + + +>Confidential: <[ yes | no ] (one line)> + +>Synopsis: + +>Severity: <[ non-critical | serious | critical ] (one line)> + +>Priority: <[ low | medium | high ] (one line)> + +>Category: + +>Class: <[ sw-bug | doc-bug | change-request | support ] (one line)> + +>Release: + +>Environment: + + + + +>Description: + + + + + + + +>How-To-Repeat: + +@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 diff --git a/sol-Build-A-Release.mk b/sol-Build-A-Release.mk new file mode 100644 index 00000000000..45ee8726f14 --- /dev/null +++ b/sol-Build-A-Release.mk @@ -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 + + + diff --git a/sol-GNUmakefile b/sol-GNUmakefile new file mode 100755 index 00000000000..d359c1b30a1 --- /dev/null +++ b/sol-GNUmakefile @@ -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: + diff --git a/sol-inst.texi b/sol-inst.texi new file mode 100644 index 00000000000..78697a2657d --- /dev/null +++ b/sol-inst.texi @@ -0,0 +1,2238 @@ +\input texinfo +@c +@c search for "UPDATE!" for items that will need examination on future +@c releases +@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 INSTALL-NOTES +@c FIXME: XCOMP stuff not ready to go. For example, +@c FIXME: no mention of lack of -msoft-float support for XCOMP, yet. +@c +@c This file describes how to install a Cygnus Solaris-2 Release. +@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 +@c set exactly ONE of the following to select what kind of install to doc: +@clear CDROMinst +@clear TAPEinst +@set FTPsingle +@clear FTPsplit +@c +@c shared properties: +@clear FTP +@clear FTPorCD +@ifset FTPsingle +@set FTP +@set FTPorCD +@end ifset +@ifset FTPsplit +@set FTP +@set FTPorCD +@end ifset +@ifset CDROMinst +@set FTPorCD +@end ifset +@c +@c set CUSTOMER to indicate install instructions are for a Cygnus customer +@c (clear for general public) +@set CUSTOMER +@c +@iftex +@c The include file "texiplus.tex" is in the src/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 +@setchapternewpage on +@finalout +@end iftex +@settitle Release ||RELNO|| for Solaris 2 +@tex +% override-override: the following \font lines are redundant if you're +% using an unmodified FSF texinfo. +% FIXME! check whether these are still needed, or whether Courier OK now +% w/shorter paths +\globaldefs=1 +\font\texttt=cmtt10 scaled \magstephalf\let\tentt=\texttt +\font\textsl=cmsl10 scaled \magstephalf\let\tensl=\textsl +\font\textsf=cmss10 scaled \magstephalf\let\tensf=\textsf +\font\user=pcrb at 10pt +\globaldefs=0 +%end override-override +% WARNING: NONSTANDARD USAGE we need \tensf for print, without +% upsetting info. We weren't using @b in this note, so I redefine it: +% +\global\def\b#1{{\user #1}} +\global\parindent=0pt +@end tex +@titlepage +@ifset CDROMinst +@title CD-ROM Installation Notes +@end ifset +@ifset TAPEinst +@title Tape Installation Notes +@end ifset +@ifset FTP +@title FTP Installation Notes +@end ifset +@sp 3 +@subtitle Cygnus Support Developer's Kit +@subtitle Release ||RELNO|| for Solaris 2.0 +@author Cygnus Support @hfill hotline: +1 415 322 7836 +@page + +@tex +\def\$#1${{#1}} % Kluge: collect RCS revision info without $...$ +\xdef\Rmanvers{{\it Installation 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{Release ||RELNO|| for Solaris 2} +@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 + +@ifinfo +@node Top +@top Cygnus Support Solaris-2 Developer's Kit, version ||RELNO|| + +This file is about the Cygnus Developer's Kit: what's in it, how to +install it, and how to reconfigure it. + +@ifclear FTPorCD +@menu +* Brief:: Installing in Brief +* Contents:: Release Contents +* Installing:: Installing the Developer's Kit +* Examples:: Installation Examples +* Install-Options:: Installation Options +* Why-fixincludes:: Why Convert System Header Files? +* Running:: Running the Programs +* Paths:: Changing the Paths +* Trouble:: Some Things that Might go Wrong +* Rebuilding:: Rebuilding From Source +* Removing:: Removing Parts of the Developer's Kit +* Cygnus-FSF:: Cygnus Releases and the FSF +* Cygnus-Support:: About Cygnus Support +@end menu +@end ifclear +@ifset FTPorCD +@menu +* Brief:: Installation Procedure +* Contents:: Release Contents +* Install-Options:: Installation Options +* Why-fixincludes:: Why Convert System Header Files? +* Running:: Running the Programs +* Paths:: Changing the Paths +* Trouble:: Some Things that Might go Wrong +* Rebuilding:: Rebuilding From Source +* Cygnus-FSF:: Cygnus Releases and the FSF +* Cygnus-Support:: About Cygnus Support +@end menu +@end ifset + +@end ifinfo + +@ifclear FTPorCD +@node Brief +@chapter Installing in Brief +@end ifclear + +@ifset FTPorCD +@node Brief +@chapter Installation Procedure +@end ifset + +@ifset TAPEinst +@strong{You can run the brief installation procedure if:} +@itemize @bullet +@item +Your ||HOST|| has its own tape drive (@code{/dev/rmt/0ln}---those +last three characters are zero, el, en; see @samp{man st}), and +@item +You're willing to install in the directory @file{/opt}, and +@item +You have at least ||DF|| MB available (try @samp{df /opt}; @pxref{Disk space}) +@item +The Solaris-2 OS packages @code{SUNWesu}, @code{SUNWhea}, +@code{SUNWbtool}, @code{SUNWarc}, and @code{SUNWtoo} are installed (try +@samp{pkginfo @var{name}}; @pxref{Optional OS packages}). +@end itemize +Otherwise, see @ref{Installing,,Installing the Developer's Kit}. +@end ifset +@ifset FTPorCD +@strong{To install the Cygnus Solaris-2 Developer's Kit, you need:} + +@end ifset +@ifset FTPsingle +@itemize @bullet +@item +the distribution file, @file{cygnus-sol2-||RELNO||.tar.Z}, in some directory +@var{dist} on your system +@item +The Solaris-2 OS packages @code{SUNWesu}, @code{SUNWhea}, +@code{SUNWbtool}, @code{SUNWarc}, and @code{SUNWtoo} installed on your +system (try @samp{pkginfo @var{name}}). See @ref{Optional OS packages}. +@item +at least ||DF|| MB of disk space available. See @ref{Disk space}. +@end itemize +@end ifset +@ifset FTPsplit +@itemize @bullet +@item +the distribution files, @file{cygnus-sol2-||RELNO||.bin.tar.Z} (if you +want precompiled binaries) and @file{cygnus-sol2-||RELNO||.src.tar.Z} +(if you want the source code), in some directory @var{dist} on your +system +@item +The Solaris-2 OS packages @code{SUNWesu}, @code{SUNWhea}, +@code{SUNWbtool}, @code{SUNWarc}, and @code{SUNWtoo} installed on your +system (try @samp{pkginfo @var{name}}). See @ref{Optional OS packages}. +@item +at least ||BD|| MB of disk space available for the binaries. See @ref{Disk space}. +@item +at least ||SD|| MB of disk space available for the source. See @ref{Disk space}. +@end itemize +@end ifset +@ifset CDROMinst +@itemize @bullet +@item +A copy of the SunSoft Catalyst CDware disc. +@item +The Solaris-2 OS packages @code{SUNWesu}, @code{SUNWhea}, +@code{SUNWbtool}, @code{SUNWarc}, and @code{SUNWtoo} installed on your +system (try @samp{pkginfo @var{name}}). See @ref{Optional OS packages}. +@item +at least ||BD|| MB of disk space available for the binaries. See @ref{Disk space}. +@item +at least ||SD|| MB of disk space available for the source. See @ref{Disk space}). +@end itemize +@end ifset + +@ifset FTPorCD +We suggest installing the Developer's Kit under @file{/opt} (at least +via a symbolic link). The precompiled tools are configured for this +location. If you install elsewhere, and cannot establish a symbolic +link to @file{/opt/cygnus-sol2-||RELNO||}, see @ref{Paths,,Changing the +Paths}. +@end ifset + +@enumerate +@ifclear FTPorCD +@item +Make sure you can write in @file{/opt/cygnus-sol2-||RELNO||}, by typing: + +@example +eg$ @b{su root} +password: @i{(enter root password)} +# @b{mkdir /opt/cygnus-sol2-||RELNO||} @i{(ignore error if any)} +# @b{chmod 777 /opt/cygnus-sol2-||RELNO||} +# @b{exit} @i{(give up root access)} +@end example +@end ifclear + +@ifset FTPorCD +@item +Make sure you can write in @file{/opt}, by typing: + +@example +eg$ @b{touch /opt/cygnus-test; rm /opt/cygnus-test} +@end example + +If you get an error, talk to your System Administrator about access to +@samp{/opt}. If you can't get permission to write in @file{/opt}, see +@ref{No access,,No Access to @file{/opt}}. +@end ifset + +@ifset FTPsingle +@item +Extract the Developer's Kit from the distribution file. + +@example +@exdent @emph{If you can install directly in @file{/opt}:} +eg$ @b{cd /opt} +eg$ @b{zcat @var{dist}/cygnus-sol2-||RELNO||.tar.Z | tar xfov -} +@end example + +@example +@exdent @emph{If you install in another directory @var{other}:} +eg$ @b{cd} @var{other} +eg$ @b{zcat @var{dist}/cygnus-sol2-||RELNO||.tar.Z | tar xfov -} +eg$ @b{ln -s cygnus-sol2-||RELNO|| /opt} +@end example +@end ifset + +@ifset FTPsplit +@item +Extract the Developer's Kit binaries from the distribution file. + +@example +@exdent @emph{If you can install directly in @file{/opt}:} +eg$ @b{cd /opt} +eg$ @b{zcat @var{dist}/cygnus-sol2-||RELNO||.bin.tar.Z | tar xfov -} +@end example + +@example +@exdent @emph{If you install in another directory @var{other}:} +eg$ @b{cd} @var{other} +eg$ @b{zcat @var{dist}/cygnus-sol2-||RELNO||.bin.tar.Z | tar xfov -} +eg$ @b{ln -s cygnus-sol2-||RELNO|| /opt} +@end example + +@item +If you also want the source, repeat the previous step, but with the file +@file{@var{dist}/cygnus-sol2-||RELNO||.src.tar.Z}. +@end ifset + +@ifset CDROMinst +@item +Mount the @sc{cdware cd-rom}. You may need to briefly become super-user: + +@example +eg$ @b{su root} +password: @i{(enter root password)} +# @b{mkdir} @b{/cdrom} @i{(ignore any errors)} +# @b{mount} @b{-F} @b{hsfs} @b{-o} @b{ro} @b{/dev/dsk/c0t6d0s0} @b{/cdrom} +# @b{exit} @i{(give up root access)} +@end example + +@item +Start the @sc{cd-rom}'s presentation program (see the instructions +that came with your @sc{cd-rom}). + +@item +Look for an icon showing the Cygnus logo, with the label ``GNU C''. If +you can't find this icon, you may have the wrong category selected; in +the Category menu, select either ``All'' or ``Software Engineering''. + +@item +Select the Cygnus icon by clicking once on it with the left mouse +button. + +@item +Select ``Install'' from the Options menu. A submenu appears, showing +these options: + +@display +Install Everything +Install Binaries +Install Source Code +@end display + +Select one of these options. (Selecting ``Install Everything'' is +equivalent to selecting each of the other two options, to get both +binaries and source code for the Developer's Kit.) +An interaction window appears. + +@item +Answer the prompt @samp{Installation directory} with the name of the +directory where you want the Developer's Kit installed. We recommend +@file{/opt} (which is the default), because the compiler and other tools +are configured for this location. (If you use another directory, +see @ref{Paths,,Changing the Paths}.) + +@item +Inspect the messages that appear in the interaction window. The +installation script @code{Install} displays occasional messages to keep +you informed about the steps it executes. Among them, these messages +mark completion of the major stages of installation: + +@example +Cygnus Support software distribution extracted! + +Fixed include files installed! + +Cygnus Support software distribution tested! + +@end example + +@strong{If all these messages have appeared}, skip the next step. + +@strong{If you see messages about missing parts of Solaris 2}, make sure +you have all the optional packages described in +@ref{Optional OS packages}. Then proceed with the next +step. +@end ifset + +@ifset TAPEinst +@item +Load the cygnus-sol2-||RELNO|| ||MEDIUM|| into your ||MEDIUM|| drive. + +@item +Get the @code{Install} script from the tape: + +@example +eg$ @b{cd /tmp} +eg$ @b{tar xfov /dev/rmt/0ln Install} +@i{Ignore ``WARNING: @dots{} Sense Key: Unit Attention'' message.} +@i{For other errors, try reinserting the tape and rerunning.} +@end example + +@item +Run the @code{Install} script: + +@example +eg$ @b{./Install} +@i{@dots{} @code{Install} displays messages about its activity, ending with} +Done. +@end example +@end ifset + +@ifset FTPorCD +@item +Fix up copies of the system header files for your ||HOST||, and test the +installation, with the @code{Install} script that was extracted from the +distribution. @emph{@code{Install} makes its own copies of the header +files; your system's original header files are not changed.} + +@example +eg$ @b{cd cygnus-sol2-||RELNO||} +eg$ @b{./Install} +@exdent @code{Install} displays messages about its activity, ending with +Done. +@end example + +For background information on this step, see @ref{Why-fixincludes,,Why +Convert System Header Files?}. +@end ifset + +@ifset CUSTOMER +@item +Record your Cygnus customer-ID (see cover letter): + +@example +eg$ @b{/opt/cygnus-sol2-||RELNO||/bin/install_cid @var{ID}} +@end example +@end ifset + +@item +Make a symbolic link to simplify pathnames: +@example +eg$ @b{cd} @b{/opt} +eg$ @b{ln} @b{-s} @b{cygnus-sol2-||RELNO||} @b{cygnus} +@end example + +@ifclear FTPorCD +@c Assume *WE* don't distribute cygnus-sol2-||RELNO|| w/permissions 777 +@item +Remove public write access from @file{/opt/cygnus-sol2-||RELNO||}. See your System +Administrator for the correct permissions at your site. +@end ifclear + +@end enumerate + +You're done! Anyone who puts @samp{/opt/cygnus/bin} in her or his +@code{PATH} can use the Developer's Kit. + +@node Contents +@chapter Release Contents + +This Developer's Kit is a Cygnus Support release: the +programs in it are recent versions, which have been tested and certified +both individually and as a coordinated suite of tools. +The kit includes both source and binaries for: + +@c UPDATE! Anything new shoveled in? + +@table @t +@item gcc +C compiler + +@item libm.a +Mathematical subroutine library + +@item gdb +Debugger + +@item gprof +Performance analyzer + +@item byacc +Parser generator + +@item flex +Fast lexical analyzer generator + +@item makeinfo +@itemx info +Online documentation tools + +@item texinfo.tex +@itemx texindex +Documentation printing tools + +@item send_pr +The Cygnus problem-reporting utility + +@item patch +Source-code update utility +@end table + +@menu +* Platforms:: Supported Platforms +* Requirements:: System Requirements +@end menu + +@node Platforms +@section Supported Platforms + +@table @strong +@item ||HOST||s +All programs in your Developer's Kit are for ||HOST||s running +Solaris 2.0; we ship binaries (configured to install and run under +@file{/opt/cygnus-sol2-||RELNO||}) as well as all source code. + +@item Other Platforms +For information on other platforms or other programs +that we may support, please contact Cygnus Support at: + +@table @strong +@item voice ++1 415 322 3811 +@item hotline ++1 415 322 7836 +@item fax ++1 415 322 3270 +@item email +@code{info@@cygnus.com} +@end table +@end table + +@page +@node Requirements +@section System Requirements + +@ifset FTPorCD +@menu +* OS level:: +* Optional OS packages:: +* Disk space:: +* Write access:: +@end menu +@end ifset + +@ifset TAPEinst +@menu +* OS level:: +* Optional OS packages:: +* A tape drive:: +* Disk space:: +* Write access:: +@end menu +@end ifset + +@node OS level +@subsection OS level +Solaris 2.0 Beta or later. + +@node Optional OS packages +@subsection Optional OS packages +Many components of Solaris 2.0 are part of the standard operating system +distribution, but are not installed by default. To install the Cygnus +Solaris 2.0 Developer's Kit, you will need to make sure two of these +optional components (called @dfn{packages}) are installed on your system: +@samp{SUNWesu} and @samp{SUNWhea}. Three more packages are needed to +run the Developer's Kit software after you've installed it: +@samp{SUNWbtool}, @samp{SUNWtoo}, and @samp{SUNWarc}. + +To check whether an optional package is installed, you can run +@samp{pkginfo @var{name}}. @code{pkginfo} is in @file{/usr/bin/}. If +@var{name} is not installed, you will get an error, like this: + +@example +eg$ @b{/usr/bin/pkginfo} @b{SUNWlibm} +ERROR: information for "SUNWlibm" was not found +@end example + +@noindent +If @var{name} is installed, you will see a one-line summary of the +package, like this: + +@example +eg$ @b{/usr/bin/pkginfo} @b{SUNWhea} +system SUNWhea Header Files +@end example + +To install one of these optional parts of Solaris 2 (@var{name} in the +example), put the Solaris 2.0 distribution CD in the drive, mount it +(for example, as @file{/cdrom}), then do: + +@example +/usr/sbin/pkgadd -d /cdrom/Solaris_2.0 @var{name} @dots{} +@end example + +@noindent +You can specify several package names at once. + +These are the Solaris 2 optional packages you'll need to run the +Developer's Kit: + +@table @code +@item SUNWarc +@emph{Needed to link your programs:} Archive libraries for system +interfaces. + +@item SUNWbtool +@emph{Needed to build your programs:} ``SPARCCompilers +2.0 Bundled tools''. Most of the contents of @file{/usr/ccs/bin} +(most notably, the assembler) come from this package. + +@item SUNWesu +@emph{Needed to install the Developer's Kit:} ``Extended System +Utilities''. The decompression program (@code{compress}, +@code{uncompress}, @code{zcat}) is in this package; it is used to +extract the contents of the Developer's Kit. + +@item SUNWhea +@emph{Needed to complete installation and compile your programs:} Header +files (@file{/usr/include}). + +@item SUNWtoo +@emph{Needed to link your programs:} ``Programming Tools'', notably the +linker, @code{/usr/ccs/bin/ld}. +@end table + +@noindent +One additional optional package may be of interest: + +@table @code +@item SUNWlibm +Sun's math subroutine library. This is not required, however, as a free +@samp{libm.a} is part of the Developer's Kit. +@end table + +@ifset TAPEinst +@node A tape drive +@subsection A tape drive +You need access to a tape drive that can read the distribution. +The drive need not be on the ||HOST|| where you want to run the +software; but it is best if the machine with a tape drive and your +||HOST|| can mount a common file system. At the very least, you need +some sort of file transfer capability between the machine with a +tape drive and your ||HOST||. +@end ifset + +@node Disk space +@subsection Disk space +The total space required to extract and install +binaries and source for all programs is +||DF|| megabytes. + +The software is configured to go into @file{/opt/cygnus-sol2-||RELNO||}. If you have +space available, but not in the same file system as @file{/opt}, you can +use @samp{ln -s} to create @file{/opt/cygnus-sol2-||RELNO||} as a symbolic link to the +file system where you do have the space available. + +@ifclear FTPorCD +If you don't have enough space, you may be able to install binaries only; +see @ref{Limited Space,,Not Enough Space}. The space required for +installing the binaries on ||HOST|| systems is ||BD|| megabytes. +@end ifclear + +@node Write access +@subsection Write access +You need write access to @file{/opt}, or at least to an existing +@file{/opt/cygnus-sol2-||RELNO||} directory. If you can't write in +@file{/opt} or @file{/opt/cygnus-sol2-||RELNO||}, see @ref{No access,,No +Access to @file{/opt}}. + +@ifclear FTPorCD +Root access is @emph{not} necessary to run the installation itself; +but you might need it briefly +@ifset CDROMinst +to mount the @sc{cd-rom} drive, and +@end ifset +to arrange for a writable @file{/opt/cygnus-sol2-||RELNO||} directory. The detailed +installation instructions show when this may be necessary. We recommend +you avoid @samp{su root} whenever possible. +@end ifclear + +@ifclear FTPorCD +@node Installing +@chapter Installing the Developer's Kit + +@iftex +This note shows the different parts of examples like this: +@table @asis +@item Computer output is shown in @code{typewriter font.} +@item Your input is indicated by @b{a bold typewriter font.} +@item Text to be replaced, rather than typed verbatim, is in @var{this font.} +@item Comments appear in @i{italic font}. +@end table +@end iftex +In examples, we show the system prompt as @samp{eg$}. + +The Cygnus cygnus-sol2-||RELNO|| ||MEDIUM|| contains two separate +files. The first file is a script called @code{Install}; +the second file contains the Developer's Kit software. To get +the software onto your system, you need to make sure you have the space +you'll need for it, and get the @code{Install} script off the ||MEDIUM||. +Then you can use the @code{Install} script to choose what else to +install. + +Two checklists follow. The first checklist shows what to do if you have +a ||MEDIUM|| drive on the ||HOST|| where you want to install the +Developer's Kit; the second shows how to use another networked machine +to read the ||MEDIUM||, then finish the installation on your ||HOST||. + +Both checklists suggest installing the Developer's Kit under +@file{/opt} (if you like, via a symbolic link from another location). +We recommend you use this location for the software, because the +precompiled, ready-to-run versions of the tools are configured this +way. (If you want to use a different location, and cannot establish a +symbolic link from it to @file{/opt/cygnus-sol2-||RELNO||}, please see +@ref{Install-Options,,Installation Options}. To use the software +conveniently after installing elsewhere, see @ref{Paths,,Changing the +Paths}.) + +Both checklists are very similar to @ref{Brief,,Installing in Brief}, +but provide more discussion of each step, and offer alternatives for +||MEDIUM|| drives, for systems whose available disk space is not in +@code{/opt}, and for installing only portions of the Developer's Kit. + +@menu +* local-install:: Installing with a local ||MEDIUM|| drive +* cross-install:: Installing with another machine's ||MEDIUM|| drive +@end menu + +@node local-install +@section Installing in @file{/opt}, with a local ||MEDIUM|| drive + +This procedure is for a ||HOST|| that has its own ||MEDIUM|| drive. + +Installing this way will install all the source code, plus the binaries for +the ||HOST||. If you don't want both source and binaries, stop after +extracting @code{Install} from the ||MEDIUM||, and read about what options you +can use with @code{Install} in @ref{Install-Options,,Installation +Options}. For examples of variations on what to install, +see @ref{Examples,,Installation Examples}. + +@enumerate +@item +Make sure that you have all the required Solaris 2 OS packages: +@code{SUNWesu}, @code{SUNWhea}, @code{SUNWbtool}, @code{SUNWarc}, and +@code{SUNWtoo}. You can use @code{pkginfo} to check; see +@ref{Optional OS packages}. + +@item +Check that you have enough space available (@pxref{Disk space}) in +@file{/opt}. You can use @samp{df /opt} to check. + +@item +Check whether you can write in @file{/opt}: + +@cartouche +@example +eg$ @b{touch /opt/cygnus-test; rm /opt/cygnus-test} +@end example +@end cartouche + +@noindent +@emph{If you get no errors from this line, skip the next step.} + +@item +If you got ``No such file or directory'' or ``Permission denied'' +errors, you may need to use another group, or an account that has +permission to write in @file{/opt} or in an existing +@file{/opt/cygnus-sol2-||RELNO||} directory. See @ref{No access,,No Access +to @file{/opt}}. If only @code{root} has access, the simplest procedure +is to @code{su root} @emph{briefly}, to create a writable +@file{/opt/cygnus-sol2-||RELNO||}. For instance: + +@cartouche +@example +eg$ @b{su root} +password: @i{enter root password} +# @b{mkdir /opt/cygnus-sol2-||RELNO||} @i{ignore error if any} +# @b{chmod 777 /opt/cygnus-sol2-||RELNO||} +# @b{exit} @i{give up root access} +eg$ +@end example +@end cartouche + +@ifset TAPEinst +@item +Load the Cygnus Support release tape (labelled ``cygnus-sol2-||RELNO||'') into +your system's tape drive. + +@item +find out the name of the @emph{non-rewinding} tape device that can read +the release tape, on your machine. Cygnus release tapes are labelled to +identify the kind of tape used---either QIC-24 or Exabyte. + +You will most likely use @file{/dev/rmt/0ln} (the last three characters +are zero, el, en) as the tape device, regardless of which of the two +kinds of tape you have; see @samp{man st} for details on how tape +devices are named on Solaris 2. + +However, the correct device name depends on how your system's tape +drives were installed; ask your system administrator. If the tape drive +you plan to use is your system's only tape drive, @file{/dev/rmt/0ln} is +very likely. Otherwise it may be something like @file{/dev/rmt/1ln}. + +Our examples show @file{/dev/rmt/0ln} for the tape device, as this is +the most common case. + +@item +The first file on the tape is a script called @code{Install}. That +script automates most of the installation procedure---but first you need +to bootstrap the installation by getting @code{Install} itself from the +tape. It doesn't really matter where you put this initial copy of +@code{Install}; it is only used to get things started---these examples +assume you put it in @file{/tmp}. When you use this copy of +@code{Install} to extract software from the tape, another copy of +@code{Install} will be saved in @file{/opt/cygnus-sol2-||RELNO||}. + +These commands will get @code{Install} into the @file{/tmp} directory +(remember, you may need something slightly different from +@file{/dev/rmt/0ln} as the device name for the appropriate tape drive on +your system): + +@cartouche +@example +eg$ @b{cd /tmp} +eg$ @b{tar xfov /dev/rmt/0ln Install} +@end example +@end cartouche + +A frightening five-line message beginning ``@code{WARNING}'' and ending +with ``@code{Sense Key: Unit Attention}'' is very common at this point. +It does not indicate anything is wrong; on the contrary, it's the +operating system's way of letting you know that it noticed you put in a +tape. + +If you get any error messages beginning ``tar: can't open'', check that +the tape is correctly placed in your tape drive, and that you typed the +right name where we show @file{/dev/rmt/0ln}. Some errors can be +corrected by reseating the tape in the tape drive and trying again. +@end ifset + +@quotation +@emph{If you don't want both source and binaries, stop now,} and read about +what options you can use with @code{Install} in +@ref{Install-Options,,Installation Options}. For examples of variations +on what to install, see @ref{Examples,,Installation Examples}. +@end quotation + +@item +Now you can extract your Developer's Kit software by running +@code{Install}. Use the @samp{-tape=} option to specify where +the software comes from: + +@cartouche +@example +eg$ @b{/tmp/Install -tape=/dev/rmt/0ln} +@end example +@end cartouche + +This is a time-consuming step. @code{Install} will begin by using +@code{tar} to extract software for your system, leaving a log in +@file{/opt/cygnus-sol2-||RELNO||/tar.log}. Then it prepares copies of your system +header files, converted to comply with @sc{ansi} C +(@pxref{Why-fixincludes,,Why Convert System Header Files?}); a log for +this step goes in @file{/opt/cygnus-sol2-||RELNO||/fixincludes.log}. @emph{Your +system's original header files are not changed;} @code{Install} writes +the converted copies in a separate, @sc{gcc}-specific directory. + +As it executes, @code{Install} displays occasional messages to keep you +informed about which of these steps it's executing. Among them, these +messages mark completion of the major stages of installation: + +@cartouche +@example +Cygnus Support software distribution extracted! + +Fixed include files installed! + +Cygnus Support software distribution tested! + +Done. +@end example +@end cartouche + +@ifset CUSTOMER +@item +In case you need to send problem reports to Cygnus, we've +included a script @code{send_pr} (and a supporting online template) to +structure and transmit your reports. Please use the +script @code{install_cid} to record your Cygnus customer ID in your copy +of the problem report form. (You can find your customer ID in the cover +letter that came with this release; or call the Cygnus hotline, +@w{+1 415 322 7836}.) This will enable us to respond as quickly as +possible to any problem reports you send. + +@cartouche +@example +eg$ @b{/opt/cygnus-sol2-||RELNO||/bin/install_cid @var{ID}} +install_cid:`@var{ID}' is now the default customer ID for send_pr +@end example +@end cartouche +@end ifset + +@item +Make a symbolic link to simplify pathnames (@pxref{Running,,Running the +Programs}): + +@cartouche +@example +eg$ @b{cd} @b{/opt} +eg$ @b{ln} @b{-s} @b{cygnus-sol2-||RELNO||} @b{cygnus} +@end example +@end cartouche + +@item +We recommended permissions @code{777} for the @file{/opt/cygnus-sol2-||RELNO||} +directory, to be sure you could run this procedure. However, for the +long term, it is usually not a good idea to leave directories +world-writable (especially directories where executables are found). + +For better security, remove public write access from @file{/opt/cygnus-sol2-||RELNO||}. +See your System Administrator for the correct permissions at your site. +@end enumerate + +You're done! Anyone who puts @samp{/opt/cygnus/bin} in her or his +@code{PATH} can use the Developer's Kit. + +@page +@node cross-install +@section Installing in @file{/opt}, with another machine's ||MEDIUM|| drive +This checklist is for a ||HOST|| that does not have its own ||MEDIUM|| drive, +but can share a file system with another machine that does have a ||MEDIUM|| +drive. The other machine need not be a ||HOST||. + +Installing this way will install all the source code, plus the binaries for +the ||HOST||. If you don't want both source and binaries, stop after +extracting @code{Install} from the ||MEDIUM||, and read about what options you +can use with @code{Install} in @ref{Install-Options,,Installation +Options}. For examples of variations on what to install, +see @ref{Examples,,Installation Examples}. + +@enumerate +@item +Find a machine with a suitable ||MEDIUM|| drive on the same network as your +||HOST||, and sign on to it. If the only machine with a ||MEDIUM|| +drive isn't on the network, see @ref{No Drive,,No Local ||MEDIUM|| Drive}. + +@item +Make sure a decompression program is available. The installation +procedure requires @code{compress} (used with the @samp{-d} option, in +the Cygnus @code{Install} script). @code{compress} is present on most +Unix systems. On Solaris 2 systems, it is part of the optionally +installed @code{SUNWesu} package. + +@item +Choose a directory where you will install the Developer's Kit. The +directory must be accessible from both machines (the one with the ||MEDIUM|| +drive, and the ||HOST|| where you want to use the software)---for +example, over NFS. Wherever this note uses @var{shr}, substitute the +name of the directory you chose. + +The shared directory need not have the same name on both machines, +though we show it as @var{shr} on both, for simplicity. + +@item +Check that you have enough space available (@pxref{Disk space}) in +@var{shr}. You can use @samp{df @var{shr}} to check. + +@item +Check whether you can write in @var{shr}: + +@cartouche +@example +eg$ @b{touch @var{shr}/cygnus-test; rm @var{shr}/cygnus-test} +@end example +@end cartouche + +@noindent +@emph{If you get no errors from this line, skip the next step.} + +@item +If you got ``No such file or directory'' or ``Permission denied'' +errors, you may need to use another group, or an account that has +permission to write in @var{shr} or in an existing +@file{/@var{shr}/cygnus-sol2-||RELNO||} directory. See @ref{No access,,No +Access to @file{/opt}}. If only @code{root} has access, the simplest +procedure is to @code{su root} @emph{briefly}, to create a writable +@file{/@var{shr}/cygnus-sol2-||RELNO||}. For instance: + +@cartouche +@example +eg$ @b{su root} +password: @i{(enter root password)} +# @b{mkdir @var{shr}/cygnus-sol2-||RELNO||} @i{(ignore error if any)} +# @b{chmod 777 @var{shr}/cygnus-sol2-||RELNO||} +# @b{exit} @i{root access not needed beyond this} +eg$ +@end example +@end cartouche + +@ifset TAPEinst +@item +Load the Cygnus Support release tape (labelled ``cygnus-sol2-||RELNO||'') into +the system's tape drive. + +@item +find out the name of the @emph{non-rewinding} tape device on the machine +that can read the release tape. Cygnus release tapes are labelled to +identify the kind of tape used---either QIC-24 or Exabyte. + +On ||HOST|| (or compatible) systems running Solaris 2, you will most +likely use @file{/dev/rmt/0ln} (the last three characters are zero, el, +en) as the tape device, regardless of which of the two kinds of tape you +have; see @samp{man st} for details on how tape devices are named on +Solaris 2. + +However, the correct device name depends on the kind of system, and on +how the system's tape drives were installed; ask your system +administrator. On systems running Solaris or other Unix SVr4 variants, +if the tape drive you plan to use is your system's only tape drive, +@file{/dev/rmt/0ln} is very likely. Otherwise it may be something like +@file{/dev/rmt/1ln}. + +These examples show @file{/dev/@var{tape}} for the tape device; remember +to substitute the appropriate name. + +@item +The first file on the tape is a script called @code{Install}. That +script automates most of the installation procedure---but first you need +to bootstrap the installation by getting @code{Install} itself from the +tape. It doesn't really matter where you put this initial copy of +@code{Install}; it is only used to get things started---these examples +assume you put it in @file{/tmp}. When you use this copy of +@code{Install} to extract software from the tape, another copy of +@code{Install} will be saved in @file{@var{shr}/cygnus-sol2-||RELNO||}. Later, you +will use that second copy to finish the installation on your ||HOST||. + +These commands will get @code{Install} into the @file{/tmp} directory +(remember to fill in the appropriate device for @file{/dev/@var{tape}}: + +@cartouche +@example +eg$ @b{cd /tmp} +eg$ @b{tar xfov /dev/@var{tape} Install} +@end example +@end cartouche + +On Solaris-2 systems, a frightening five-line message beginning +``@code{WARNING}'' and ending with ``@code{Sense Key: Unit Attention}'' +is very common at this point. It does not indicate anything is wrong; +on the contrary, it's the operating system's way of letting you know +that it noticed you put in a tape. Other systems may provide similar +amenities. + +If you get any error messages beginning with something like ``tar: can't +open'', check that the tape is correctly placed in your tape drive, and +that you typed the right name for @var{tape}. Some errors can be +corrected by reseating the tape in the tape drive and trying again. +@end ifset + +@quotation +@emph{If you don't want both source and binaries, stop now,} and read about +what options you can use with @code{Install} in +@ref{Install-Options,,Installation Options}. For examples of variations +on what to install, see @ref{Examples,,Installation Examples}. +@end quotation + +@item +Now you can extract all the software by running @samp{Install extract}. +Use the @samp{-tape=} option to specify where the software comes from, and the +@w{@samp{-installdir=}} option to point to the @var{shr} directory. + +@cartouche +@example +eg$ @b{cd} @b{/tmp} +eg$ @b{./Install} @b{extract} @b{-tape=||MEDvar||} @b{-installdir=@var{shr}} +@end example +@end cartouche + +This is a time-consuming step. @code{Install} will use @code{tar} to +extract software for your system, leaving a log in the file +@file{@var{shr}/cygnus-sol2-||RELNO||/tar.log}. + +When @code{Install} is done extracting the software, it +displays the messages + +@cartouche +@example +Cygnus Support software distribution extracted! +Done. +@end example +@end cartouche + +@item +Log on to the ||HOST|| where you want to use the software. + +@item +Make sure that your ||HOST|| has the required Solaris 2 OS packages: +@code{SUNWhea}, @code{SUNWbtool}, @code{SUNWarc}, and @code{SUNWtoo} +(@pxref{Optional OS packages}). You can use @code{pkginfo} +to check. + +@item +Create a symbolic link from @file{@var{shr}/cygnus-sol2-||RELNO||} +to @file{/opt/cygnus-sol2-||RELNO||} on your ||HOST||. You may +need to become @code{root} @emph{briefly}, as in this example: + +@cartouche +@example +eg-sol2$ @b{su root} +password: +# @b{ln -s @var{shr}/cygnus-sol2-||RELNO|| /opt/cygnus-sol2-||RELNO||} +# exit @i{root access not needed beyond this} +@end example +@end cartouche + +@noindent +If you don't have access to any account with permission to write in +@file{/opt}, see @ref{No access,,No Access to @file{/opt}}. + +@item +Fix up system header files on your ||HOST||, and test the installation, +with the copy of @code{Install} that was placed in +@file{@var{shr}/cygnus-sol2-||RELNO||} (now accessible as @file{/opt/cygnus-sol2-||RELNO||} on your +machine): + +@cartouche +@example +eg-sol2$ @b{cd} @b{/opt/cygnus-sol2-||RELNO||} +eg-sol2$ @b{./Install} @b{f}@b{ixincludes} @b{test} +@end example +@end cartouche + +@noindent +A log for the @code{fixincludes} step goes in +@file{/opt/cygnus-sol2-||RELNO||/fixincludes.log}. @emph{Your +system's original header files are not changed;} @code{Install} writes +the converted copies in a separate, @sc{gcc}-specific directory. + +When each stage of this work is complete, @code{Install} displays these +messages (the last, @samp{Done.}, simply indicates that @code{Install} +has finished executing). + +@cartouche +@example +Fixed include files installed! + +Cygnus Support software distribution tested! + +Done. +@end example +@end cartouche + +@ifset CUSTOMER +@item +In case you need to send problem reports to Cygnus, we've +included a script @code{send_pr} (and a supporting online form) to +structure and transmit your reports. Please use the +script @code{install_cid} to record your Cygnus customer ID in your copy +of the problem report form. (You can find your customer ID in the cover +letter that came with this release; or call the Cygnus hotline, +@w{+1 415 322 7836}.) This will enable us to respond as quickly as +possible to any problem reports you send. + +@cartouche +@example +eg-sol2$ @b{/opt/cygnus-sol2-||RELNO||/bin/install_cid @var{ID}} +install_cid:`@var{ID}' is now the default customer ID for send_pr +@end example +@end cartouche +@end ifset + +@item +Make a symbolic link to simplify pathnames (@pxref{Running,,Running the +Programs}): + +@cartouche +@example +eg$ @b{cd} @b{/opt} +eg$ @b{ln} @b{-s} @b{cygnus-sol2-||RELNO||} @b{cygnus} +@end example +@end cartouche + +@item +We recommended permissions @code{777} for the @file{/opt/cygnus-sol2-||RELNO||} and +@file{@var{shr}/cygnus-sol2-||RELNO||} directories, to make sure you could run this +procedure. However, for the long term, it is usually not a good idea to +leave directories world-writable (especially directories where +executables are found). + +For better security, remove public write access from @file{/opt/cygnus-sol2-||RELNO||} +and @file{@var{shr}/cygnus-sol2-||RELNO||}. See your System Administrator for the +correct permissions at your site. +@end enumerate + +You're done! Anyone who puts @samp{/opt/cygnus/bin} in her or his +@code{PATH} can use the Developer's Kit. + +@node Examples +@chapter Installation Examples + +Once you've got the @code{Install} script from your ||MEDIUM||, +you can tell @code{Install} what software to install, what form of the +programs you need, and what installation steps to do. Here are some +examples covering common situations. For a full explanation of each +possible @code{Install} argument, see @ref{Install-Options,,Installation +Options}. + +The default ||MEDIUM|| drive for @code{Install} is @code{/dev/rmt/0ln}, which is +right for the most common cases on Solaris 2 systems. If your +||MEDIUM|| drive is different, you need to use the +@samp{-tape=||MEDvar||} option; the examples show this option for +completeness. +@ifset TAPEinst +Remember to specify a @emph{non-rewinding} tape device. +@end ifset + +@menu +* binaries:: Installing binaries only +* ||HOSTstr||-remote:: Reading tape on any machine, finishing on ||HOST|| +* source-remove:: Removing Source +@end menu + +@node binaries +@section Installing binaries only + +@cartouche +@example +eg$ @b{./Install -tape=||MEDvar|| bin} +@end example +@end cartouche + +If you don't want the source---for instance, to save space---you can use +the argument @samp{bin}. + +@node ||HOSTstr||-remote +@section Reading ||MEDIUM|| on any SVr4 machine, finishing on ||HOST|| + +@cartouche +@example +@emph{On an SVr4 machine on your network with a ||MEDIUM|| drive:} +eg-tp$ @b{./Install -tape=/dev/rmt/0ln -installdir=@var{shr} extract} +@end example +@end cartouche + +@cartouche +@example +@emph{On your ||HOST||} +eg$ @b{ln -s @var{shr}/cygnus-sol2-||RELNO|| /opt/cygnus-sol2-||RELNO||} +eg$ @b{cd /opt/cygnus-sol2-||RELNO||} +eg$ @b{./Install @b{f}ixincludes test} +@end example +@end cartouche + +@noindent +If your ||HOST|| doesn't have a ||MEDIUM|| drive, but another machine that can +mount some shared directory @var{shr} does have one, you can carry out +the first step of the installation from the machine with a ||MEDIUM|| drive, +as shown. Note that you have to say @samp{extract} on the +@code{Install} command line. This alerts @code{Install} to stop the +install procedure after it reads the software. You still have to finish the +installation, but the last two steps have to run on your ||HOST||. (If +you forget, there's no great harm done: @code{Install} will notice that +it can't carry out a full installation on the wrong machine, and will +stop with an error message---then you can go back and try again. When +@code{Install} notices a problem like this, it doesn't carry out +@emph{any} action other than giving a helpful error message). + +The @samp{fixincludes} part of the installation is essential. Please +see @ref{Why-fixincludes,,Why Convert System Header Files?}, if you're +curious. + +@node source-remove +@section Removing Source +The @code{Install} script can remove anything it can install. For +example, if after installing the complete Developer's Kit on your +machine you decide to remove the source files: + +@cartouche +@example +eg$ @b{cd /opt/cygnus-sol2-||RELNO||} +eg$ @b{./Install remove source} +@end example +@end cartouche + +@noindent +In general, to remove a part of the Developer's Kit, use the same +@code{Install} command line that would extract that part, but add the +keyword @code{remove}. The @code{-tape} option is not necessary for +removing. +@c following "end" matches ifclear FTPorCD several nodes back! +@end ifclear + +@node Install-Options +@chapter Installation Options + +The command-line arguments and options to @code{Install} allow you to +direct its operation in these ways: + +@ifclear FTPorCD +@itemize @bullet +@item +@emph{What form of the programs} to install. You can choose among ||HOST|| +binaries (argument @code{bin}) and source code (@code{source}). +If you don't specify either of these, @code{Install} assumes you want +both source, and binaries for a ||HOST|| running Solaris 2. +@end itemize +@end ifclear + +@itemize @bullet +@item +@emph{What installation actions} to carry out: +@enumerate +@ifclear FTPorCD +@item +extracting source from the ||MEDIUM|| (option +@code{extract}) +@end ifclear +@item +writing @sc{ansi}-C conforming copies of your system include files (needed +for the compilation tools; option @code{fixincludes}) +@item +running a simple test of the installed programs +(option @code{test}) +@end enumerate + +@ifclear FTPorCD +The last two of these actions (@code{fixincludes} and +@code{test}) can only run on your ||HOST||. If you read the +||MEDIUM|| on another machine, you must specify the @code{extract} option +explicitly, to indicate that you don't expect the other two actions to +run (and are aware of the need to run further installation steps on your +||HOST||). + +@item +@emph{Removing some of the release} after it's installed. + +@item +@emph{Where to find the software distribution}, with the @samp{-tape} option. +@end ifclear + +@item +@emph{Where you want to install}, with the @samp{-installdir} option. +@end itemize + +Here is a summary of the @code{Install} command-line options, +followed by more detailed explanations: + +@ifclear FTPorCD +@example +Install @r{[} -tape=||MEDvar|| @r{]} + @r{[} -installdir=@var{directory} @r{]} + @r{[} bin @r{]} @r{[} source @r{]} + @r{[} extract @r{]} @r{[} fixincludes @r{]} @r{[} test @r{]} + @r{[} remove @r{]} +@end example +@end ifclear +@ifset FTPorCD +@example +Install @r{[} fixincludes @r{]} @r{[} test @r{]} +@end example +@end ifset + +@ifset TAPEinst +@table @code +@item -tape=||MEDvar|| +@itemx -tape=@var{tarfile} +Specify the @emph{non-rewinding} device name for your tape drive as +@file{rmt/0ln} (the last three characters are zero, el, en). + +If you extract the installation script and compressed tarfile on some +other system, and transfer them to your ||HOST|| for installation, use +the name of the tarfile instead of a device name with @samp{-tape}. +See @ref{No Drive,,No Local ||MEDIUM|| Drive}, for more discussion. + +@item -installdir=@var{directory} +If you have no write access to @samp{/opt}, use this option to specify +an alternate @var{directory} for your software---but beware: the +software is configured to go in @samp{/opt/cygnus-sol2-||RELNO||}, and +you'll have to override or change that too. See @ref{Paths,,Changing the +Paths}. + +@item bin +@itemx source +By default, @code{Install} extracts both source, and binaries for your +||HOST||. Instead of relying on the default, you +can use these options to say exactly what forms you +want. You need to do this if +@itemize @bullet +@item +you want only binaries, or +@item +you want only source. +@end itemize + +@item extract +@itemx fixincludes +@itemx test +A full installation includes up to three things: (1) extracting +software; (2) creating @sc{ansi}-C conforming copies of your +system's standard header files; and (3) testing the installation. +You can execute these steps separately by specifying +@samp{extract}, @samp{fixincludes}, or @samp{test} on the +@code{Install} command line. + +After you extract the software, @samp{fixincludes} is essential if you're +using the compiler. @samp{fixincludes} @emph{does not change your +system's original header files;} @code{Install} writes the converted +copies in a separate, @sc{gcc}-specific directory. +See @ref{Why-fixincludes,,Why Convert System Header Files?}, for more +discussion of the @samp{fixincludes} step. @code{Install} will only +attempt these two steps if you run it on the ||HOST||. + +@samp{test} is a confidence-building step, and doesn't +actually change the state of the installed software. +The @samp{test} step may not make sense, depending on what +other options you've specified---if you install only source, there's +nothing to test. + +If you specify a step that doesn't make sense, or if you run @code{Install} +on a different machine but try to run @code{fixincludes} or +@code{test}, @code{Install} will notice the error, and exit +(before doing anything at all) with an error message, so you can try +again. + +When you run @samp{extract}, @code{Install} leaves a log file +@file{tar.log} in the installation directory---by default, in +@file{/opt/cygnus-sol2-||RELNO||}. + +When you run @samp{fixincludes}, @code{Install} +leaves a log file @file{fixincludes.log} in the @file{cygnus-sol2-||RELNO||} +subdirectory. + +@item remove +You can also use @code{Install} to remove parts of the release after +you've installed them. Identify what to remove with either of the +command-line options @samp{source} or @samp{bin}, together with +@samp{remove}. @code{Install} will erase these parts of the +installation from your system. See @ref{Removing,,Removing Parts of the +Developer's Kit}, for an example. +@end table +@end ifset + +@ifset FTPorCD +@table @code +@item fixincludes +@itemx test +These steps are performed when you run @code{Install} without +arguments, but if you like you can select either of them explicitly. + +After you extract the software, @samp{fixincludes} is essential if you're +using the compiler. @samp{fixincludes} @emph{does not change your +system's original header files;} @code{Install} writes the converted +copies in a separate, @sc{gcc}-specific directory. +See @ref{Why-fixincludes,,Why Convert System Header Files?}, for more +discussion of the @samp{fixincludes} step. @code{Install} will only +attempt these two steps if you run it on the ||HOST||. + +@samp{test} is a confidence-building step, and doesn't +actually change the state of the installed software. + +When you run @samp{fixincludes}, @code{Install} +leaves a log file @file{fixincludes.log} in the @file{cygnus-sol2-||RELNO||} +subdirectory. +@end table +@end ifset + + +@node Why-fixincludes +@chapter Why Convert System Header Files? + +It is very important to run the @samp{fixincludes} step of installation +(either explicitly, as @samp{Install fixincludes}, or by default when +you run @code{Install} with no arguments). You must do this on +@emph{each installation}: if many ||HOST||s share the same binaries on a +shared filesystem, you need only do it once---but if you install +separate copies, you must run @code{Install fixincludes} on each. + +The C header files supplied with SVr4 versions of Unix depend on a +questionable interpretation of the @sc{ansi} C standard: they test for a +non-@sc{ansi} environment by checking whether @code{__STDC__} is defined +as zero. The @sc{ansi} standard actually only specifies that +@code{__STDC__} will be defined to 1; if it is defined to any other +value, the environment is not @sc{ansi} C compatible, and @sc{ansi} C +says nothing about what that value might be. + +@sc{gcc} defines @code{__STDC__} to 1 when running with @samp{-ansi}, +when it functions as an ``@sc{ansi} C superset'' compiler. (It also sets +@code{__STRICT_ANSI__} when it runs with the @samp{-pedantic} option.) +However, @sc{gcc} leaves @code{__STDC__} undefined when it is not +running as an @sc{ansi} C compiler. + +Unfortunately, the Solaris 2 header files follow the SVr4 choice. Since +@sc{gcc} never defines @code{__STDC__} as 0, the distributed header +files can leave out some declarations. (Look in @file{/usr/include/time.h}, +for example.) + +@samp{Install fixincludes} makes copies of the system include files, +which have these nonstandard features removed so that @sc{gcc} can +process them. These copies are placed in a new, @sc{gcc}-specific +include directory---@emph{your system's original header files are not +affected.} Once these fixed header files are created, @sc{gcc} finds and +uses them automatically. + +If you don't run @code{fixincludes}, the GNU C compiler can only use the +original system header files when you compile new C programs. @emph{In +some cases, the resulting programs will fail at run-time}. + +@node Running +@chapter Running the Programs +Anyone who wishes to run the Cygnus development tools will need to make +sure the @code{PATH} environment variable will find them. The simplest +thing is to include @samp{/opt/cygnus-sol2-||RELNO||/bin} in the +@code{PATH} variable. Since the directory name contains the release +number @samp{||RELNO||}, however, this approach will require changing +the paths explicitly for all users when you install a new release. + +Our installation procedures recommended creating a symbolic link like +this, to plan ahead for future releases: + +@example +@cartouche +eg$ @b{cd} @b{/opt} +eg$ @b{ln} @b{-s} @b{cygnus-sol2-||RELNO||} @b{cygnus} +@end cartouche +@end example + +Then people can use settings like these in initialization files: + +@example +@exdent For shells compatible with Bourne shell (@code{/bin/sh}, @code{bash}, or Korn shell): +@cartouche +@b{PATH=/opt/cygnus/bin:$PATH} +@b{export PATH} +@end cartouche +@end example + +@example +@exdent For C shell: +@cartouche +@b{set path=(/opt/cygnus/bin $path)} +@end cartouche +@end example + +@noindent +You can also ensure that the @code{man} command can pick up the +manual pages, using the @code{MANPATH} environment variable. + +@example +@exdent For Bourne-compatible shells: +@cartouche +@b{MANPATH=/opt/cygnus/man:$MANPATH} +@b{export MANPATH} +@end cartouche +@end example + +@example +@group +@exdent For C shell: +@cartouche +@b{setenv MANPATH /opt/cygnus/man:$MANPATH} +@end cartouche +@end group +@end example + +@node Paths +@chapter Changing the Paths +The binaries shipped by Cygnus are configured for installation under the +directory @file{/opt/cygnus-sol2-||RELNO||}. In particular, @code{gcc} +and the documentation browser @code{info} need to know the location of +the distribution. + +If you wish to run the tools after installing them in another location, +you can either: +@itemize @bullet +@item +use environment variables +to tell the tools where to find pieces of the installation; or + +@item +rebuild the tools from source, with your preferred paths built in. +See @ref{Rebuilding,,Rebuilding from Source}, if you want to take this +approach. +@end itemize + +In rare circumstances, the auxiliary installation script +@code{install_cid} will also require a workaround if you do not install +in @file{/opt/cygnus-sol2-||RELNO||}. + +@subheading GCC Paths +@c FIXME! Add something about specs file? +You can run the compiler @sc{gcc} without recompiling, even if you +install the distribution in an alternate location, by first setting the +environment variable @samp{GCC_EXEC_PREFIX}. This variable specifies +where to find the executables, libraries, and data files used by the +compiler. Its value will be different depending on which set of +binaries you need to run. For example, if you install the distribution +under @file{/local} (instead of the default @file{/opt}), you could set +@samp{GCC_EXEC_PREFIX} as follows. (You can type the first two lines as +a single line, if you like; the example is split using the line +continuation character @samp{\} only to make it fit in the space +available.) + +@cartouche +@example +@b{GCC_EXEC_PREFIX=/local/cygnus-sol2-||RELNO||/lib/gcc-lib/}\ +@b{||HOSTstr||/||GCCvn||/} +@b{export GCC_EXEC_PREFIX} +@end example +@end cartouche + +@noindent +The example assumes you use a shell compatible with the Bourne shell; if +you run the C shell, use the following instead. (Again, the line +continuation character @samp{\} is only used for convenience in the +example; feel free to use a single line.) + +@cartouche +@example +@b{setenv GCC_EXEC_PREFIX /local/cygnus-sol2-||RELNO||/lib/gcc-lib/}\ +@b{||HOSTstr||/||GCCvn||/} +@end example +@end cartouche + +@quotation +@emph{Warning: The trailing slash @samp{/} is important}. The @code{gcc} +program uses @samp{GCC_EXEC_PREFIX} simply as a prefix. If you omit the +slash (or make any other mistakes in specifying the prefix), @code{gcc} +will fail with a message beginning @samp{installation problem, cannot +exec@dots{}}. +@end quotation + +@subheading @code{info} Paths +The standalone documentation browser @code{info} also needs to know the +location of its documentation files in the distribution. The default +location, @file{/opt/cygnus-sol2-||RELNO||/info}, is compiled in. +If you install elsewhere, set the environment variable @code{INFOPATH} +to indicate the alternate location. + +For example, again assuming you installed under @file{/local}: + +@example +@exdent For shells compatible with Bourne shell (@code{/bin/sh}, @code{bash}, or Korn shell): +@cartouche +@b{INFOPATH=/local/cygnus-sol2-||RELNO||/info} +@b{export INFOPATH} +@end cartouche +@end example + +@example +@exdent For C shell: +@cartouche +@b{setenv INFOPATH /local/cygnus-sol2-||RELNO||/info} +@end cartouche +@end example + +@subheading @code{install_cid} Paths +The auxiliary script @code{install_cid} is provided as a convenience, to +fill in your site's customer ID as the default for your local version of +the Cygnus @code{send_pr} problem-reporting script. + +If you don't install in @file{/opt/cygnus-sol2-||RELNO||}, @samp{install_cid +@var{ID}} will still work correctly in most cases. However, +there is one situation where @code{install_cid} fails: + +@itemize @bullet +@item +@emph{if} your site already has a release tree for +@samp{/opt/cygnus-sol2-||RELNO||}, +@item +@emph{and} you run @code{Install} with an alternative installation +directory. +@end itemize + +@noindent +In this case, you must manually edit your customer ID into your site's +copy of @code{send_pr}. Please call the Cygnus hotline, +@w{+1 415 322 7836}, if you have any trouble with this. + +@node Trouble +@chapter Some Things that Might go Wrong + +We've tried to make the installation of your Developer's Kit as painless +as possible. Still, some complications may arise. Here are suggestions +for dealing with some of them. + +@ifclear FTPorCD +@menu +* No Drive:: No local ||MEDIUM|| drive +* Limited Space:: Not Enough Space +* No access:: No Access to @file{/opt} +* Install errors:: Error Messages from @code{Install} +@end menu +@end ifclear +@ifset FTPorCD +@menu +* No access:: No Access to @file{/opt} +* Install errors:: Error Messages from @code{Install} +@end menu +@end ifset + + +@ifclear FTPorCD +@node No Drive +@section No local ||MEDIUM|| drive +If your ||HOST|| doesn't have an appropriate ||MEDIUM|| drive, you may +still be able to install your software. Check with your system +administrator to see if another machine at your site has a drive +you can use. If so: +@table @emph +@item If a shared filesystem is available +between the two machines, and it has enough space, go ahead and run +@samp{Install extract -installdir=@var{shr}} from the machine with a +||MEDIUM|| drive, where @var{shr} is a directory visible to both +machines. Then create @samp{/opt/cygnus-sol2-||RELNO||} on your +||HOST|| (the one where you want to install this Solaris 2 Developer's +Kit) as a symbolic link to @file{@var{shr}/cygnus-sol2-||RELNO||}. +You'll have to run @samp{Install fixincludes} and @samp{Install test} +from your ||HOST|| afterwards; see @ref{cross-install,,Installing with +another machine's ||MEDIUM|| drive}. + +@item If some form of filetransfer is available +(such as @code{uucp}), read the ||MEDIUM|| using a system utility +(for instance, @code{dd} on Unix systems; see the system documentation for +the machine with a tape drive). + +There are two files on the distribution ||MEDIUM||; the first is +just the @code{Install} script, and the second is a compressed +@code{tar} format file containing the rest of the release. Read both of +these files, and transfer them to your own machine. Then run +@code{Install} as shown in @ref{local-install,,Installing with a local +||MEDIUM|| drive}, but use @samp{-tape=@var{tarfile}} to specify the name of +the installation file, instead of @samp{-tape=/dev/rmt/0ln} as shown in +the examples. In the simplest case, for example (starting after you've +transferred @code{Install} and the tar file to your system): + +@cartouche +@example +eg$ @b{./Install -tape=@var{tarfile}} +@end example +@end cartouche + +@end table + +@node Limited Space +@section Not Enough Space +If you don't have enough space to install all of the distribution, you +can instead extract only the compiled code, or only the source. + +The following table summarizes the approximate space (rounded up to the +next megabyte) needed for source and binaries. +There is a little overlap between the partial installations: the +documentation, and documentation tools, are always installed. + +@table @r +@item ||BD|| MB +||HOST|| binaries + +@item ||SD|| MB +source code for all programs + +@item ||DF|| MB +||HOST|| total +@end table + +You can easily extract these components independently of one another, by +using the @samp{source} or @samp{bin} arguments to the @code{Install} +script provided with your release. +See @ref{Install-Options,,Installation Options}. +@end ifclear + +@node No access +@section No Access to @file{/opt} + +If you don't have write access to @file{/opt}, first check whether +you're in the right group. The command @samp{ls -lLdg /opt} will show +you whether any group has write access to @file{/opt}, and the command +@code{groups} will show you what groups you're authorized to use. If +you're authorized to use a group with the right access, use @samp{newgrp +@var{groupname}} to switch to that group. + +Otherwise, you may be able to use @code{root} (if you have the password) +to give yourself temporary write access. There's no need to run the whole +installation procedure as @code{root}; just use @code{root} access +briefly like this--- + +@cartouche +@example +eg$ @b{su root} +password: @i{(enter root password)} +# @b{mkdir @var{shr}/cygnus-sol2-||RELNO||} @i{(ignore error if any)} +# @b{chmod 777 @var{shr}/cygnus-sol2-||RELNO||} +# @b{exit} @i{root access not needed beyond this} +@end example +@end cartouche + +@noindent +If you do set write permissions to @code{777} to run the installation +procedure, remember to remove public write access when you're done, to +avoid potential security problems. + +If none of these things help, and you can't get write access to +@file{/opt} or @file{/opt/cygnus-sol2-||RELNO||}, +@ifset TAPEinst +use the @samp{-installdir=@var{directory}} option to @code{Install} to +specify a different installation directory, where you @emph{can} write. +For example, if all the other installation defaults are right, you can +execute something like @samp{./Install -installdir=@var{mydir}}. +@end ifset +@ifset FTPorCD +use a different installation directory, where you @emph{can} write. +@end ifset +You will also have to either override default paths for the pre-compiled +tools, or else recompile the software. + +@quotation +@emph{WARNING:} If you can't install in +@file{/opt/cygnus-sol2-||RELNO||} (or link your installation directory +to that name), some of the defaults configured into the +cygnus-sol2-||RELNO|| distribution won't work. See @ref{Paths,,Changing +the Paths}, for information on overriding or reconfiguring these +defaults. +@end quotation + +@node Install errors +@section Error Messages from @code{Install} +The @code{Install} script checks for many errors and inconsistencies in +the way its arguments are used. The messages are meant to be +self-explanatory. + +@ifclear FTPorCD +Here is a list of a few messages where further information might be +useful: +@table @code +@item Cannot read from TAPE device @dots{} +The error message ends with the device or file @code{Install} was trying +to use. Please check that it is the device or file you intended; +possible causes of trouble might include leaving off the @samp{/dev/} +prefix at the front of a device name. A typo in the name might also +cause this problem. + +@ifset TAPEinst +If the problem is neither of these things, perhaps your tape device can't +read our tape; see @ref{No Drive,,No Local Tape Drive}, for a discussion +of how to use another machine's tape drive. +@end ifset + +@item @dots{} This is a problem. +@itemx Cannot cd to @var{installdir} +@itemx I do not know why I cannot create @var{installdir} +@itemx hello.c fails to run +@itemx test-ioctl.c fails to run +@itemx I do not know how to remove an arch called @dots{} +These errors (the first covers anything that ends in @samp{This is a +problem}) are from paranoia checks; they are issued for situations that +other checks should have covered, or for unlikely situations that +require further diagnosis. +@end table +@end ifclear + +If you get one of these messages, please +@itemize @bullet +@ifset CUSTOMER +@item +@strong{call the Cygnus hotline, +1 415 322 7836}, or +@end ifset +@item +send electronic mail to @samp{help@@cygnus.com}. +@end itemize + +@node Rebuilding +@chapter Rebuilding From Source + +@ifclear FTPsplit +All Cygnus products are free software; your Developer's Kit includes +complete source code for all programs. +@end ifclear +@ifset FTPsplit +All Cygnus products are free software. The source code for all programs +in your Developer's Kit is available from the same place as the precompiled +programs, in the file @file{@var{dist}/cygnus-sol2-||RELNO||.src.tar.Z}. +@end ifset + +Cygnus Support has implemented an automatic configuration scheme to +adapt the programs to different environments. + +Rebuilding the programs from source requires these steps: +@enumerate +@item +configuration +@item +compilation +@item +installation +@end enumerate + +For example, executing the following commands in sequence will rebuild +and install a ||HOST|| native version of all the tools in a nonstandard +directory: + +@cartouche +@example +eg$ @b{cd @var{installdir}/src} + +eg$ @b{./configure ||HOSTstr|| -prefix=/local/gnu} +Created "Makefile" in @var{installdir}/src + +eg$ @b{make clean all info install install-info} +@end example +@end cartouche + +@noindent +We discuss each step in detail in the following sections. + +@menu +* Configuration:: Configuration +* Config Names:: Specifying Names for Hosts and Targets +* configure Options:: @code{configure} Options +* Compilation:: Compilation +* Installation:: Installation +@end menu + +@node Configuration +@section Configuration + +You can configure the software in this release by using the shell +script called @code{configure}. The shell script requires one argument: +the host type. There are also several possible options, including a +@samp{-target=} option to configure for cross-system development. + +@node Config Names +@section Specifying Names for Hosts and Targets + +The specifications used for hosts and targets in the @code{configure} +script are based on a three-part naming scheme, but some short predefined +aliases are also supported. The full naming scheme encodes three pieces +of information in the following pattern: + +@example +@var{architecture}-@var{vendor}-@var{os} +@end example + +For example, you can use the alias @code{sun4sol2} as a @var{host} argument +or in a @samp{-target=@var{target}} option, but the equivalent full name +is @samp{sparc-sun-solaris2}. + +@quotation +@emph{Warning:} @code{configure} can represent a very large number of +combinations of architecture, vendor, and OS. There is by no means +support for all possible combinations! +@end quotation + +@node configure Options +@section @code{configure} Options + +This section summarizes the @code{configure} options and arguments. +Your Developer's Kit contains full online documentation for the Cygnus +configure system. @inforef{Using Configure,,configure.info}, to read +about @code{configure} in more detail, including information on how the +@code{configure} options relate to @file{Makefile} variables. + +@example +configure @r{[}-prefix=@var{dest}@r{]} + @r{[}-exec-prefix=@var{bindest}@r{]} + @r{[}-srcdir=@var{path}@r{]} + @r{[}-norecursion@r{]} + @r{[}-target=@var{target}@r{]} + @var{host} +@end example + +@noindent +The binaries in this release were configured using + +@cartouche +@example +configure -prefix /opt/cygnus-sol2-||RELNO|| ||HOSTstr|| +@end example +@end cartouche + +@table @code +@item -prefix=@var{dest} +@var{dest} is an installation directory @emph{path prefix}, the root for +the directories where @code{make install} will place things. After you +configure with this option, @samp{make install install-info} will +install info files in @file{@var{dest}/info}, man pages in +@file{@var{dest}/man}, and---unless you also use +@samp{-exec-prefix}---compiled programs in @file{@var{dest}/bin}, and +libraries in @file{@var{dest}/lib}. If you specify +@samp{-prefix=/local}, for example, @code{make install} puts the +development tools in @file{/local/bin}. + +@emph{WARNING:} the default @var{dest} path prefix in the source is not +the same as the prefix for the preconfigured binaries distributed by Cygnus. + +@samp{-prefix=/opt/cygnus-sol2-||RELNO||} was used to build the binaries in this +release. If you do not use @code{-prefix}, the installation directory +is @file{/usr/local}. + +@item -exec-prefix=@var{bindest} +@samp{-exec-prefix} serves the same purpose as @samp{-prefix}, but +affects only machine-dependent targets (compiled programs and +libraries). Specifying both @samp{-prefix} and @samp{-exec-prefix} +allows you to segregate machine-dependent files, so that +machine-independent files can be shared. + +@emph{WARNING:} the default @var{bindest} path prefix in the source is not +the same as the prefix for the preconfigured binaries distributed by Cygnus. + +No @samp{-exec-prefix} was used to build the binaries in this release. +If you do not use @samp{-exec-prefix}, the default directory for +machine-dependent targets is whatever was specified with @file{-prefix} +(by default, @file{/usr/local}; for the binaries in this release, +@file{/opt/cygnus-sol2-||RELNO||}). + +@item -srcdir=@var{path} +Use this option to make configurations in directories separate from the +source directories. @code{configure} writes configuration specific files +in the current directory, but arranges for them to use the source in the +directory @var{path}. @code{configure} will create directories under +the working directory in parallel to the source directories below +@var{path}. Among other things, you can use this to build (or maintain) +several configurations simultaneously, in separate directories. (This +option requires a @code{make} program with the @samp{VPATH} feature, +such as the one included with Solaris 2.) + +@item -norecursion +Configure only the directory level where @code{configure} is executed; do not +propagate configuration to subdirectories. + +@item -target=@var{target} +Configure the development tools for cross-development (compiling, +debugging, or other processing) of programs running on the specified +@var{target}. Without this option, programs are configured ``native'', +that is, for managing programs that run on the same machine (@var{host}) +as the development tools themselves. + +There is no convenient way to generate a list of all available targets. + +@item @var{host} @dots{} +Configure the development tools to run on the specified @var{host}. + +There is no convenient way to generate a list of all available hosts. +@end table + +The @samp{-prefix=@var{dest}} and @samp{-exec-prefix=@var{bindest}} +options are particularly important. If you don't specify a @var{dest} +or @var{bindest} directory, the @file{Makefile} installs binaries in +subdirectories of @file{/usr/local}. These options are important +because the @var{dest} and @var{bindest} directories are used for +several purposes: + +@enumerate +@item +@var{bindest} is the directory where binaries are installed. + +@item +@var{bindest} is built into the compiler itself for the +locations of @sc{gcc} specific include files, the locations of @sc{gcc} +subprograms, and the location of the @sc{gcc} specific library +@file{libgcc.a}. + +@item +@var{dest} is compiled into @code{info} as the default directory +for the documentation. + +@end enumerate + +@node Compilation +@section Compilation + +After you've run @code{configure} (which writes the final +@file{Makefile} in each directory), compilation is straightforward. +To compile all the programs in the Developer's Kit, run: + +@cartouche +@example +@b{make all info} +@end example +@end cartouche + +The @code{make} output is lengthy; consider redirecting it to a file. + +The overall @file{Makefile} propagates the value of the @code{CC} +variable explicitly, so that you can easily control the compiler used in +this step. @code{CFLAGS} is treated the same way. For instance, to +build the compiler a second time, using @sc{gcc} to compile itself +(after building and installing it in the alternate directory +@file{/local/gnu}), you might use + +@cartouche +@example +@b{make CC=/local/gnu/H-sun4/bin/gcc CFLAGS=-O all info} +@end example +@end cartouche + +The conventional targets @samp{all}, @samp{install}, and @samp{clean} +are supported at all levels of @file{Makefile}. Other targets are +supported as well, as appropriate in each directory; please read the +individual @file{Makefile} for details. Each @file{Makefile} in the +source directories includes ample comments to help you read it. If you +are not familiar with @code{make}, refer to @ref{Overview,,Overview of +@code{make}, make.info, GNU Make: A Program for Directing +Recompilation}. + +@node Installation +@section Installation + +Whether you configure an alternative path using @code{-prefix}, or you +use the default installation path @file{/usr/local}, you can install the +software by executing: + +@cartouche +@example +@b{make install install-info} +@end example +@end cartouche + +@ifclear FTPorCD +@node Removing +@chapter Removing Parts of the Developer's Kit +You can use the same @code{Install} script that was used to install the +Developer's Kit on your system, to remove parts of the release. +(Remember that the @code{Install} script was automatically saved for you +as @file{/opt/cygnus-sol2-||RELNO||/Install}.) + +To do this, decide what you want to remove; then call @code{Install} +with the option @samp{remove} on the command line, as well as all the +options that you would use to install that portion of the release +(@pxref{Install-Options,,Installation Options}). For example, suppose +you never look at the source, and are running short of disk +space; you can remove the source, while leaving the rest of +the release undisturbed, as follows: + +@cartouche +@example +eg$ @b{cd /opt/cygnus-sol2-||RELNO||} +eg$ @b{./Install remove source} +@end example +@end cartouche + +@noindent +You should see the following messages confirming the software was +removed: + +@cartouche +@example +Cygnus Support software distribution removed! +Done. +@end example +@end cartouche + +To remove the complete Solaris 2 Release of the Developer's Kit from +your system (if, eventually, you no longer want it), delete the +directory @file{/opt/cygnus-sol2-||RELNO||} and all its contents. +@end ifclear + +@node Cygnus-FSF +@chapter Cygnus Releases and the FSF + +Most of the tools in this Developer's Kit are originally from the Free +Software Foundation (FSF). You can get versions of all these tools from +the FSF as well as from Cygnus. In general, Cygnus releases add to FSF +software in the following ways: +@c UPDATE! more differences bet Cygnus/FSF releases? + +@itemize @bullet +@item +All programs are ready to run. We supply preconfigured and precompiled +binaries as well as the source code; you can start using the programs +right away. +@item +Commercial support is available. Cygnus adds value to FSF releases in +large measure by offering outstanding support services. +@item +Coordination. The tools in your Developer's Kit are certified to work +together; you need not worry about tools being out of step with each other. +@item +Bug fixes. A Cygnus release includes many fixes, already integrated +into the programs. Cygnus repairs bugs discovered during testing, and +also tracks and includes bug fixes developed for other Cygnus customers +or distributed over the Internet. +@item +Bug reporting. Cygnus releases include the tool @code{send_pr}, which +you can use to make sure your problem reports receive prompt attention, +and are also incorporated in our future tests. +@item +Documentation. Cygnus revises and adds to available FSF +documentation to give you better descriptions of all the software tools. +@item +Stability. Cygnus tests (and uses) all the programs it releases. +@end itemize + +This particular Cygnus Progressive release differs from the nearest +corresponding FSF distributions in one important detail: Solaris 2 is +supported. The FSF distributions will eventually include Solaris 2 +support, as the Cygnus changes are merged into the FSF source, and the +FSF makes new releases. + + +@node Cygnus-Support +@chapter 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 the software. + +We provide ``vintage'' releases---the most stable versions, which have +been though even more extensive use and testing---or up-to-the minute +``progressive'' releases, for those who need the very latest version. + +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 +hotline: +1 415 322 7836 +email: @code{info@@cygnus.com} +fax: +1 415 322 3270 +@end display + +@contents + +@bye diff --git a/sol-intro.texi b/sol-intro.texi new file mode 100644 index 00000000000..9b646fd14d5 --- /dev/null +++ b/sol-intro.texi @@ -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: + +>Organization: + + + +>Confidential: <[ yes | no ] (one line)> + +>Synopsis: + +>Severity: <[ non-critical | serious | critical ] (one line)> + +>Priority: <[ low | medium | high ] (one line)> + +>Category: + +>Class: <[ sw-bug | doc-bug | change-request | support ] (one line)> + +>Release: + +>Environment: + + + + +>Description: + + + + + + + +>How-To-Repeat: + +@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 diff --git a/sol-make-ftp b/sol-make-ftp new file mode 100644 index 00000000000..1953b9c82bd --- /dev/null +++ b/sol-make-ftp @@ -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} + diff --git a/sol-rel.texi b/sol-rel.texi new file mode 100644 index 00000000000..c73015abfa2 --- /dev/null +++ b/sol-rel.texi @@ -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 diff --git a/sol-subst-strings b/sol-subst-strings new file mode 100755 index 00000000000..672ba3d7163 --- /dev/null +++ b/sol-subst-strings @@ -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 diff --git a/sol-subst-strings-ftp b/sol-subst-strings-ftp new file mode 100755 index 00000000000..33830b8665c --- /dev/null +++ b/sol-subst-strings-ftp @@ -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 diff --git a/tape-labels-tex.in b/tape-labels-tex.in new file mode 100644 index 00000000000..194c34c306e --- /dev/null +++ b/tape-labels-tex.in @@ -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 + + +