aboutsummaryrefslogtreecommitdiff
path: root/unix/hlib/install.csh
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
commitfa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch)
treebdda434976bc09c864f2e4fa6f16ba1952b1e555 /unix/hlib/install.csh
downloadiraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz
Initial commit
Diffstat (limited to 'unix/hlib/install.csh')
-rwxr-xr-xunix/hlib/install.csh3484
1 files changed, 3484 insertions, 0 deletions
diff --git a/unix/hlib/install.csh b/unix/hlib/install.csh
new file mode 100755
index 00000000..1aa08984
--- /dev/null
+++ b/unix/hlib/install.csh
@@ -0,0 +1,3484 @@
+#!/bin/csh
+#
+# INSTALL -- Install IRAF on a UNIX/IRAF host. May also be run after the
+# initial installation as a consistency check to verify that all the necessary
+# links and file permissions are still in place (e.g., after updating UNIX
+# itself).
+#
+# Installation:
+# This file should be installed in the $iraf directory, if it is being
+# installed as a patch to a distributed IRAF system the existing iraf$install
+# script should be backed up and then this file used to replace it. Once
+# in place the script may be made executable with the command
+#
+# % chmod 755 install
+#
+# Please consult the IRAF web pages for the latest information on bug fixes
+# to this script.
+#
+#
+# Usage: install [-n] [-r rootdir] [-i imdir] [-b localbindir] \
+# [-R oldroot] [-I oldimdir] [-u username (e.g., 'iraf')]
+# [-l locallibdir] [-m mach (e.g., 'sparc', 'ssun') ]
+# [-noedit]
+#
+# Example:
+# % su
+# % cd $hlib
+# % ./install -n
+# % ./install
+#
+# If run with no arguments, INSTALL will make an informed guess and prompt
+# with this value; type <return> to accept the value, or enter a new value.
+#
+# Use "install -n" to do a dry run to see what the would be done, without
+# actually modifying the host system and IRAF configuration files. To do the
+# actual installation one must be superuser, but anyone can run "install -n"
+# to see what it would do.
+#
+# ----------------------------------------------------------------------------
+
+
+unset noclobber
+onintr cleanup_
+unalias cd cp cmp echo ln mv rm sed set grep ls chmod chown pwd touch sort which
+
+setenv path "(/sbin /usr/sbin /bin /usr/bin /usr/5bin /usr/ucb /etc /usr/etc $path /usr/local/bin /opt/local/bin /local/bin /home/local/bin /usr/openwin/bin /usr/X11R6/bin /usr/X11/bin)"
+
+# set echo
+
+
+
+##############################################################################
+# START OF MACHDEP DEFINITIONS.
+##############################################################################
+
+# MACHDEP definitions which may be reset below.
+set LS = "/bin/ls" # [MACHDEP]
+set LSDF = "-lLtgs" # [MACHDEP]
+
+set VERSION = "V2.16"
+set V = `echo $VERSION | cut -c2-5`
+set hmach = "INDEF"
+set shlib = "no"
+set pciraf = 0
+set suniraf = 0
+set do_tapecaps = 0
+set do_tapes = 1
+set do_pipes = 0
+set has_pipes = 1
+set hilite = 1
+set no_edit = 0
+
+
+# Utility aliases.
+#alias PUT "mv -f \!*; chown $user \!$ " # [MACHDEP]
+alias PUT "cp -p \!*; chown $user \!$ " # [MACHDEP]
+alias BOLD_ON "(if ($hilite) tput bold)"
+alias BOLD_OFF "(if ($hilite) tput sgr0)"
+alias SO_ON "(if ($hilite) tput smso)"
+alias SO_OFF "(if ($hilite) tput sgr0)"
+
+alias DO_OK "(echo -n '[ '; BOLD_ON; echo -n ' OK '; BOLD_OFF; echo ' ]')"
+alias DO_WARN "(echo -n '[ '; BOLD_ON; echo -n 'WARN'; BOLD_OFF; echo ' ]')"
+alias DO_FAIL "(echo -n '[ '; SO_ON; echo -n 'FAIL'; SO_OFF; echo ' ]')"
+
+alias MSG "(echo -n ' ';BOLD_ON;echo -n '*** ';BOLD_OFF; echo \!*)"
+alias MSGB "(echo -n ' ';BOLD_ON;echo -n '*** ';echo \!*; BOLD_OFF)"
+alias MSGN "(echo -n ' ';BOLD_ON;echo -n '*** ';BOLD_OFF; echo -n \!*)"
+alias MSGBN "(echo -n ' ';BOLD_ON;echo -n '*** ';echo -n \!*; BOLD_OFF)"
+alias ERRMSG "(echo -n ' ';BOLD_ON;echo -n 'ERROR: ' ;BOLD_OFF; echo \!*)"
+alias WARNING "(echo -n ' ';BOLD_ON;echo -n 'WARNING: ';BOLD_OFF; echo \!*)"
+alias NEWLINE "(echo '')"
+
+alias PROMPT "(BOLD_ON; echo -n \!*; BOLD_OFF; echo -n ' (yes): ')"
+alias PROMPT_N "(BOLD_ON; echo -n \!*; BOLD_OFF; echo -n ' (no): ')"
+
+alias RM "rm -rf"
+alias LN "ln -s"
+
+
+#----------------------------------
+# Determine platform architecture.
+#----------------------------------
+
+set UNAME=""
+if (-e /usr/bin/uname) then
+ set uname_cmd = /usr/bin/uname
+ set UNAME=`/usr/bin/uname | tr '[A-Z]' '[a-z]'`
+else if (-e /bin/uname) then
+ set uname_cmd = /bin/uname
+ set UNAME=`/bin/uname | tr '[A-Z]' '[a-z]'`
+else
+ WARNING "No 'uname' command found to determine architecture."
+ exit 1
+endif
+
+set WHOAMI=`whoami`
+if (-e /usr/bin/whoami) then
+ set WHOAMI=`/usr/bin/whoami`
+else if (-e /usr/ucb/whoami) then
+ set WHOAMI=`/usr/ucb/whoami`
+else
+ WARNING "No 'whoami' command found for this architecture."
+ exit 1
+endif
+
+
+
+
+switch ($UNAME)
+ case sunos:
+ set do_tapecaps = 1
+ if (`$uname_cmd -m | cut -c2-` != "86pc") then
+ set suniraf = 1
+ setenv OSVERSION `$uname_cmd -r | cut -c1`
+ if ($OSVERSION == 5) then # Sparc Solaris
+ set mach = "ssun"
+ set hmach = "ssol"
+ set TAPES = "/dev/*st[0-7]*"
+ set shlib = "no"
+ set LIBFILES = ""
+ set LS = "/usr/ucb/ls"
+ else # Sparc SunOS 4.x
+ set mach = "sparc"
+ set hmach = "sparc"
+ set TAPES = "/dev/*st[0-7]*"
+ set shlib = "no"
+ set LIBFILES = ""
+ endif
+ else
+ set pciraf = 1
+ set mach = "sunos" # Intel Solaris
+ set hmach = "sunos"
+ set TAPES = "/dev/*st[0-7]*"
+ set shlib = "no"
+ set LIBFILES = ""
+ set LSDF = "-lLts"
+ endif
+ breaksw
+ case linux:
+ set pciraf = 1
+ set do_tapecaps = 1
+ if ($?IRAFARCH == 1) then
+ # Let IRAFARCH override the default for the machine.
+ set mach = "$IRAFARCH"
+ set hmach = "$IRAFARCH"
+ else if (`$uname_cmd -m` == "x86_64") then # Linux x86_64
+ set mach = "linux64"
+ set hmach = "linux64"
+ else if (`$uname_cmd -m` == "ppc") then # LinuxPPC
+ if (-f /etc/redhat-release) then
+ set mach = "linuxppc"
+ set hmach = "linuxppc"
+ endif
+ else
+ set mach = "linux"
+ set hmach = "linux"
+ endif
+ set TAPES = "/dev/*st[0-7]"
+ set shlib = "no"
+ set LIBFILES = ""
+ breaksw
+ case freebsd: # FreeBSD 4.0
+ set do_tapecaps = 1
+ setenv OSVERSION `$uname_cmd -r | cut -c1`
+ if ($OSVERSION == 5) then # Sparc Solaris
+ set has_pipes = 0
+ endif
+ set mach = "freebsd"
+ set hmach = "freebsd"
+ set TAPES = "/dev/*st[0-7]*"
+ set shlib = "no"
+ set LIBFILES = ""
+ set pciraf = 1
+ breaksw
+ case darwin: # Mac OS X
+ case macosx:
+ case macintel:
+ case ipad:
+ # Mac OS X doesn't appear to have tape support
+ # at this point.
+ set do_tapecaps = 0
+ set do_tapes = 0
+ set has_pipes = 0
+ if ($?IRAFARCH == 1) then
+ # Let IRAFARCH override the default for the machine.
+ set mach = "$IRAFARCH"
+ set hmach = "$IRAFARCH"
+ else if (`$uname_cmd -m` == "x86_64") then # 64-bit OSX
+ set mach = "macintel"
+ set hmach = "macintel"
+ else if (`$uname_cmd -m |cut -c1-4` == "iPad") then # iPad/iPod OSX
+ set mach = "ipad"
+ set hmach = "ipad"
+ else # 32-bit OSX
+ set mach = "macosx"
+ set hmach = "macosx"
+ endif
+ set TAPES = "/dev/*st[0-7]*"
+ set shlib = "no"
+ set LIBFILES = ""
+ set pciraf = 1
+ breaksw
+ case hp-ux: # HP/UX 10.20
+ set mach = "hp700"
+ set hmach = "hp700"
+ set TAPES = "/dev/*st[0-7]*"
+ set shlib = "no"
+ set LIBFILES = ""
+ set LSDF = "-lLts"
+
+ # reset for HP/UX
+ alias PUT 'mv -f \!*; chown $user \!$ '
+ breaksw
+ case irix: # IRIX 6.5
+ case irix64:
+ set mach = "irix"
+ set hmach = "irix"
+ set TAPES = "/dev/*st[0-7]*"
+ set shlib = "no"
+ set LIBFILES = ""
+ set LSDF = "-lLts"
+ breaksw
+ case aix: # AIX V4
+ set mach = "rs6000"
+ set hmach = "rs6000"
+ set TAPES = "/dev/*st[0-7]*"
+ set shlib = "no"
+ set LIBFILES = ""
+ set LSDF = "-lLts"
+ breaksw
+ case osf1: # Alpha OSF/1
+ set mach = "alpha"
+ set hmach = "alpha"
+ set TAPES = "/dev/*st[0-7]*"
+ set shlib = "yes"
+ set LIBFILES = "libiraf.so"
+ breaksw
+ case ultrix: # DEC Ultrix
+ set mach = "ultrix"
+ set hmach = "ultrix"
+ set TAPES = "/dev/*st[0-7]*"
+ set shlib = "no"
+ set LIBFILES = ""
+ breaksw
+
+ default:
+ # We don't want to be limited by the CYGWIN version numbering so
+ # look for a truncated match here before punting.
+ set os_mach = `echo $UNAME | cut -c1-6`
+ if ("$os_mach" == "cygwin") then
+ set mach = "cygwin"
+ set hmach = "cygwin"
+ set shlib = "no"
+ set LIBFILES = ""
+ set TAPES = "" # no tape support
+ set do_tapecaps = 0
+ set do_tapes = 0
+ set has_pipes = 0
+ breaksw
+
+ else
+ ERRMSG "Unable to determine platform architecture."
+ exit 1
+ endif
+endsw
+
+##############################################################################
+# END OF MACHDEP DEFINITIONS.
+##############################################################################
+
+
+#=============================================================================
+# Declarations and initializations.
+#=============================================================================
+
+set W = '\([ "]\)' # match a blank, tab, or quote
+set TEMP = "/tmp/iraf_install.$$"
+set exec = yes
+set user = iraf
+set port = 0
+
+set imdir = "" # Initialize paths
+set lbin = ""
+set llib = ""
+set cache = ""
+set o_iraf = ""
+set o_imdir = ""
+set o_cache = ""
+
+
+
+#=============================================================================
+# Initialize the path variables.
+#=============================================================================
+
+set valid_iraf = 1
+if ($?iraf == 1) then
+ if (! (-d $iraf) || ! (-r $iraf) || \
+ ("`$LS -lLd $iraf |& grep '.rw[xs]r.[xs]r.[xt]'`" == "") || \
+ ("`$LS -lLd $iraf/.. |& grep '.rw[xs]r.[xs]r.[xt]'`" == "")) then
+ set valid_iraf = 0
+ endif
+ if ($valid_iraf == 0) then
+ NEWLINE
+ BOLD_ON
+ echo -n ' ERROR: invalid $iraf value '
+ echo "($iraf)"
+ BOLD_OFF
+ NEWLINE
+ MSG ' The iraf directory tree set by your environment variable, $iraf'
+ MSG " is not generally readable. This will prevent most users from"
+ MSG " being able to read iraf files, especially the binaries! "
+ NEWLINE
+ MSG " Please reset the permissions on the tree and try again..."
+ NEWLINE
+ exit 1
+ endif
+ if (! -d $iraf) then
+ NEWLINE
+ WARNING "Env definition of iraf root is incorrect, resetting."
+ NEWLINE
+ setenv iraf ""
+ endif
+
+else
+ setenv iraf ""
+endif
+
+
+#=============================================================================
+# Process any command line arguments.
+#=============================================================================
+while ("$1" != "")
+ switch ("$1")
+ case -n: # no execute
+ alias PUT "diff \!$ \!^; rm -f $TEMP"
+ set exec = no
+ breaksw
+ case -noedit: # no-edit installations
+ set no_edit = 1
+ breaksw
+ case -port: # do a "port" install
+ set port = 1
+ breaksw
+ case -hl: # disable highlighting
+ set hilite = 0
+ alias BOLD_ON "(if ($hilite) tput bold)"
+ alias BOLD_OFF "(if ($hilite) tput sgr0)"
+ alias SO_ON "(if ($hilite) tput smso)"
+ alias SO_OFF "(if ($hilite) tput rmso)"
+ breaksw
+ case +hl: # enable highlighting
+ set hilite = 1
+ alias BOLD_ON "(if ($hilite) tput bold)"
+ alias BOLD_OFF "(if ($hilite) tput sgr0)"
+ alias SO_ON "(if ($hilite) tput smso)"
+ alias SO_OFF "(if ($hilite) tput rmso)"
+ breaksw
+ case -f: # create fifo pipes
+ set do_pipes = 1
+ breaksw
+ case -h: # print help summary
+ goto Usage
+ case -help: # print help summary
+ goto Usage
+ case --help: # print help summary
+ goto Usage
+ case -b: # set local bin directory
+ if ("$2" != "") then
+ shift
+ else
+ ERRMSG "missing argument to '-b <localbindir>' switch"
+ exit 1
+ endif
+ set lbin = "$1"
+ breaksw
+ case -l: # set local lib directory
+ if ("$shlib" == "yes") then
+ if ("$2" != "") then
+ shift
+ else
+ ERRMSG "missing argument to '-l <locallibdir>' switch"
+ exit 1
+ endif
+ set llib = "$1"
+ else
+ set llib = ""
+ shift
+ endif
+ breaksw
+ case -c: # set cache directory
+ if ("$2" != "") then
+ shift
+ else
+ ERRMSG "missing argument to '-c <cache>' switch"
+ exit 1
+ endif
+ set cache = "$1"
+ breaksw
+ case -i: # set imdir directory
+ if ("$2" != "") then
+ shift
+ else
+ ERRMSG "missing argument to '-i <imdir>' switch"
+ exit 1
+ endif
+ set imdir = "$1"
+ breaksw
+ case -m: # set machine type
+ if ("$2" != "") then
+ shift
+ else
+ ERRMSG "missing argument to '-m <mach>' switch"
+ exit 1
+ endif
+ set mach = "$1"
+ if ("$1" == "ssun") then
+ set hmach = "ssol"
+ else
+ set hmach = "$1"
+ endif
+ setenv IRAFARCH $mach
+ breaksw
+ case -r: # set root directory
+ if ("$2" != "") then
+ shift
+ else
+ ERRMSG "missing argument to '-r <irafdir>' switch"
+ exit 1
+ endif
+ setenv iraf "$1"
+ breaksw
+ case -C: # set old cache directory
+ if ("$2" != "") then
+ shift
+ else
+ ERRMSG "missing argument to '-C <o_cache>' switch"
+ exit 1
+ endif
+ set o_cache = "$1"
+ breaksw
+ case -I: # set old imdir directory
+ if ("$2" != "") then
+ shift
+ else
+ ERRMSG "missing argument to '-I <o_imdir>' switch"
+ exit 1
+ endif
+ set o_imdir = "$1"
+ breaksw
+ case -R: # set old root directory
+ if ("$2" != "") then
+ shift
+ else
+ ERRMSG "missing argument to '-R <o_iraf>' switch"
+ exit 1
+ endif
+ set o_iraf = "$1"
+ breaksw
+ case -u: # set user name for iraf, e.g, 'iraf'
+ if ("$2" != "") then
+ shift
+ else
+ ERRMSG "missing argument to '-u <irafowner>' switch"
+ exit 1
+ endif
+ set user = "$1"
+ breaksw
+ default:
+ ERRMSG "install: unknown argument $1"
+ goto Usage
+ breaksw
+ endsw
+
+ if ("$2" == "") then
+ break
+ else
+ shift
+ endif
+end
+
+
+
+#=============================================================================
+# See whether we're gonna work ...
+#=============================================================================
+if ($exec == yes && $WHOAMI != "root" && $mach != "cygwin") then
+ clear
+ NEWLINE
+ BOLD_ON
+ echo " IRAF "$VERSION" System Installation"
+ echo " ================================"
+ BOLD_OFF
+ NEWLINE ; NEWLINE
+ BOLD_ON
+ echo "======================================================================"
+ echo -n "WARNING"
+ BOLD_OFF
+ echo ": This script must be run as root for changes to take effect."
+ echo " If you decide to proceed, the 'no-op' flag will be enabled"
+ echo " by default. No changes will be made to the system files,"
+ echo " however you will be able to see what the script does."
+ BOLD_ON
+ echo "======================================================================"
+ BOLD_OFF
+ NEWLINE
+no_op_proc_:
+ PROMPT "Proceed with a no-op installation anyway? "
+ setenv ans "$<"
+ if ("$ans" == "n" || "$ans" == "N" || "$ans" == "no") then
+ exit 0
+ endif
+ if ("$ans" != "" && "$ans" != "y" && "$ans" != "Y" && "$ans" != "yes") then
+ echo "Huh?"
+ goto no_op_proc_
+ endif
+ alias PUT "diff \!$ \!^; rm -f $TEMP"
+ set exec = no
+endif
+
+
+#=============================================================================
+# Initialize the screen output.
+#=============================================================================
+clear
+NEWLINE
+BOLD_ON
+echo " IRAF "$VERSION" System Installation"
+echo " ================================"
+BOLD_OFF
+NEWLINE
+
+echo " Welcome to the IRAF installation script. This script will first"
+echo " prompt you for several needed path names. The system will be verified"
+echo " for proper structure before the actual install begins, all error must"
+echo " must be corrected before you will be allowed to continue. Recommend-"
+echo " ations for fixing problems will be made but no corrective action will"
+echo " be taken directly. Once properly installed, you will be allowed to"
+echo " do some minimal configuration."
+
+# Print a quick usage summary.
+NEWLINE
+echo -n " For each prompt: hit "
+BOLD_ON ; echo -n "<CR>"; BOLD_OFF;
+echo -n " to accept the default value, "
+BOLD_ON ; echo -n "'q'" ; BOLD_OFF
+echo ' to quit,'
+
+echo -n " or "
+BOLD_ON ; echo -n "'help'"; BOLD_OFF
+echo -n " or ";
+BOLD_ON ; echo -n "'?'"; BOLD_OFF
+echo -n " to print an explanation of the prompt."
+NEWLINE
+NEWLINE
+
+
+#=============================================================================
+# Prompt the user for needed paths.
+#=============================================================================
+
+NEWLINE
+BOLD_ON
+echo "========================================================================"
+echo "===================== Query for System Settings ======================"
+echo "========================================================================"
+BOLD_OFF
+NEWLINE
+
+
+#=============================================================================
+# Set $iraf, the new root directory for iraf. The system must already have
+# been read in at this directory (e.g., /iraf/iraf), but we assume that no
+# files have yet been modified.
+#=============================================================================
+
+if ("$iraf" == "") then
+
+ if (-e "IRAF.NET" && -e "IS.PORT.GEN") then
+ # Use the current directory.
+ set d_iraf = `pwd`
+
+ else
+ # Make a guess at what the new root directory is.
+ set d_iraf = ""
+ if (-d /iraf/iraf) then
+ set d_iraf = /iraf/iraf
+ else if (-d /iraf) then
+ set d_iraf = /iraf
+ else if (-d /usr/local/iraf) then
+ set d_iraf = /usr/local/iraf
+ else if (-d /usr/iraf) then
+ set d_iraf = /usr/iraf
+ else
+ # Search for an iraf directory.
+ set IDIRS = "/u* /local /home /opt /iraf* /"
+ foreach i ($IDIRS)
+ if (-d $i/iraf) then
+ set d_iraf = "$i/iraf"
+ break
+ endif
+ end
+ endif
+
+ if ("$d_iraf" == "") then
+ set d_iraf = /iraf/iraf
+ endif
+ endif
+else
+ set d_iraf = $iraf
+endif
+
+# If the given directory doesn't exist, compute the root directory relative
+# to $iraf/unix/hlib (our current directory, presumably).
+
+if (! -d $d_iraf) then
+ set d_iraf = `(cd ../..;pwd)`
+endif
+
+iraf_prompt:
+ set d_iraf = `echo $d_iraf | sed -e 's+/\(["]*\)$+\1+'`
+
+ BOLD_ON ; echo -n "New iraf root directory " ; BOLD_OFF
+ echo -n "($d_iraf): "
+ setenv iraf "$<"
+ if ("$iraf" == "") then
+ setenv iraf "$d_iraf"
+ else if ("$iraf" == "quit" || "$iraf" == "q") then
+ exit 0
+ else if ("$iraf" == "help" || "$iraf" == "h" || "$iraf" == "?") then
+ NEWLINE
+ MSG "The iraf root directory is the place where the AS distribution"
+ MSG "file was unpacked; it contains subdirectories such as 'dev',"
+ MSG "'local', 'noao', 'pkg', and the file IS.PORT.GEN."
+
+ set di = $d_iraf
+ if (((-d $di/dev) && (-d $di/pkg) && (-d $di/noao))) then
+ MSG ""
+ MSG "The default path '$d_iraf' appears to be correct ..."
+ else
+ MSG ""
+ MSG "The default path '$d_iraf' appears to be incorrect ..."
+ endif
+ NEWLINE
+
+ setenv iraf $d_iraf
+ goto iraf_prompt
+ endif
+
+
+# See whether this looks like a reasonable $iraf directory
+if (! (-e $iraf)) then
+ NEWLINE
+ MSG "The '$iraf' directory doesn't exist."
+ MSG "Please try again..."
+ NEWLINE
+ goto iraf_prompt
+
+else if (! (-r $iraf) || \
+ ("`$LS -lLd $iraf |& grep '.rw[xs]r.[xs]r.[xt]'`" == "") || \
+ ("`$LS -lLd $iraf/.. |& grep '.rw[xs]r.[xs]r.[xt]'`" == "")) then
+ NEWLINE
+ MSG "The iraf directory tree is not generally readable."
+ MSG "This will prevent most users from being able to read iraf"
+ MSG "files, especially the binaries\\! "
+ MSG "Please reset the permissions and try again..."
+ NEWLINE
+ exit 1
+
+else if (! ((-d $iraf/dev) && (-d $iraf/pkg) && (-d $iraf/noao))) then
+ NEWLINE
+ MSG "The definition of '$iraf' looks incorrect."
+ MSG ""
+ MSG "The iraf root directory is the place where the AS distribution"
+ MSG "file was unpacked; it contains subdirectories such as 'dev',"
+ MSG "'local', 'noao', 'pkg', and the file IS.PORT.GEN."
+ MSG ""
+ if (((-d $iraf/iraf/dev) && (-d $iraf/iraf/pkg) && (-d $iraf/iraf/noao))) then
+ MSG "The path '$iraf/iraf' appears to be correct ..."
+ set iraf = $iraf/iraf
+ else if (((-d $iraf/../dev) && (-d $iraf/../pkg) && (-d $iraf/../noao))) then
+ if (-d $iraf/..) then
+ pushd $iraf/.. >& /dev/null
+ setenv ip `echo $cwd`
+ MSG "The path '$ip' appears to be correct ..."
+ set iraf = $ip
+ popd >& /dev/null
+ endif
+ endif
+ MSG ""
+ MSG "Please verify your path and try again ..."
+ NEWLINE
+ goto iraf_prompt
+endif
+
+
+#=============================================================================
+# Get the values of o_iraf and o_imdir from the current mkiraf.csh file, if
+# not already otherwise defined.
+#=============================================================================
+
+cd $iraf/unix/hlib
+set WS = '[ ]'
+if ("$o_iraf" == "") then
+ set o_iraf =\
+ `grep "^set$WS*iraf" mkiraf.csh | sed -e "s+^.*=$WS*++" | sed -e 's+"++g'`
+endif
+if ("$o_imdir" == "") then
+ set o_imdir =\
+ `grep "^set$WS*imdir" mkiraf.csh | sed -e "s+^.*=$WS*++" | sed -e 's+"++g'`
+endif
+if ("$o_cache" == "") then
+ set o_cache =\
+ `grep "^set$WS*cachedir" mkiraf.csh | sed -e "s+^.*=$WS*++" | sed -e 's+"++g'`
+endif
+
+# Strip any trailing / in the pathname to be matched, so that the trailing /,
+# if present, will be LEFT in the occurrence of the path in the file.
+
+set o_iraf = `echo $o_iraf | sed -e 's+/\(["]*\)$+\1+'`
+set o_imdir = `echo $o_imdir | sed -e 's+/\(["]*\)$+\1+'`
+set o_cache = `echo $o_cache | sed -e 's+/\(["]*\)$+\1+'`
+
+
+#=============================================================================
+# Get the iraf parent directory to be used below.
+#=============================================================================
+pushd $iraf/.. >& /dev/null ; set iraf_p = `echo $cwd` ; popd >& /dev/null
+
+
+#=============================================================================
+# Set $imdir, the default user image storage root directory. Each user imdir
+# will be a subdirectory of this directory by default, when MKIRAF is run.
+# Since bulk image data can consume hundreds of megabytes of disk space, IRAF
+# likes to keep such data on a public scratch device, which is probably not
+# backed up, which has a short file expiration interval, and possibly which
+# has been configured (newfs/mkfs) with a large block size for fast seq. i/o.
+#=============================================================================
+
+if ("$imdir" == "") then
+
+ if (-d $o_imdir) then
+ set d_imdir = $o_imdir
+ else if (-d /iraf) then
+ set d_imdir = /iraf/imdirs
+ else if (-d /home/iraf) then
+ set d_imdir = /home/iraf/imdirs
+ else if (-d $iraf_p) then
+ set d_imdir = $iraf_p/imdirs
+ else if (-d /usr/local/iraf) then
+ set d_imdir = /usr/local/iraf/imdirs
+ else
+ set d_imdir = /tmp
+ endif
+
+imdir_prompt:
+ BOLD_ON ; echo -n "Default root image storage directory " ; BOLD_OFF
+ echo -n "($d_imdir): "
+ set imdir = "$<"
+ if ("$imdir" == "") then
+ set imdir = "$d_imdir"
+ else if ("$imdir" == "quit" || "$imdir" == "q") then
+ exit 0
+ else if ("$imdir" == "help" || "$imdir" == "h" || "$imdir" == "?") then
+ NEWLINE
+ MSG "The root imdir directory is the default image storage dir"
+ MSG 'for OIF images (i.e. the ".imh" format) used by all users on'
+ MSG "this system. Individual user dirs will be created as needed."
+ MSG "It should be some large data disk on the machine which has a"
+ MSG "regular backup, scratch or tmp disks should be avoided or data"
+ MSG "may be lost."
+ MSG ""
+ MSG 'The "HDR$" syntax should not be used at this stage, please'
+ MSG 'edit the hlib$mkiraf.csh script after installation if you wish'
+ MSG "to make this the default."
+ NEWLINE
+ setenv imdir $d_imdir
+ goto imdir_prompt
+ endif
+
+ # Cannot have iraf and imdir the same.
+ if ("$imdir" == "$iraf") then
+ NEWLINE
+ MSG "The definition of imdir cannot be the same as the iraf"
+ MSG "root, please choose a different directory. Ideally this"
+ MSG "should be some large data area on your system or a user"
+ MSG "data area such as /home, /users, /u1, etc."
+ NEWLINE
+ NEWLINE
+ goto imdir_prompt
+ endif
+endif
+
+
+#=============================================================================
+# Set $cache, the default user file cache root directory.
+#=============================================================================
+
+if ("$cache" == "") then
+
+ if (-d /iraf) then
+ set d_cache = /iraf/cache
+ else if (-d /home/iraf) then
+ set d_cache = /home/iraf/cache
+ else if (-d $iraf_p) then
+ set d_cache = $iraf_p/cache
+ else if (-d /usr/local/iraf) then
+ set d_cache = /usr/local/iraf/cache
+ else
+ set d_cache = /tmp
+ endif
+
+cache_prompt:
+ BOLD_ON ; echo -n "Default root cache directory " ; BOLD_OFF
+ echo -n "($d_cache): "
+ set cache = "$<"
+ if ("$cache" == "") then
+ set cache = "$d_cache"
+ else if ("$cache" == "quit" || "$cache" == "q") then
+ exit 0
+ else if ("$cache" == "help" || "$cache" == "h" || "$cache" == "?") then
+ NEWLINE
+ MSG "The root cache directory is the default storage directory for"
+ MSG "URL-referenced files. Individual user dirs will be created as"
+ MSG "needed. It should be some large data disk on the machine "
+ MSG "which has a regular backup, scratch or tmp disks should be"
+ MSG "avoided or data may be lost."
+ MSG ""
+ NEWLINE
+ setenv cache $d_cache
+ goto cache_prompt
+ endif
+
+ # Cannot have iraf and cache the same.
+ if ("$cache" == "$iraf") then
+ NEWLINE
+ MSG "The definition of cache cannot be the same as the iraf"
+ MSG "root, please choose a different directory. Ideally this"
+ MSG "should be some large data area on your system or a user"
+ MSG "data area such as /home, /users, /u1, etc."
+ NEWLINE
+ NEWLINE
+ goto cache_prompt
+ endif
+endif
+
+
+#=============================================================================
+# Get UNIX directory where HSI commands (links) are to be installed, if not
+# set on command line. IRAF will only install a very few new commands in this
+# directory. Ideally it should be a directory on the standard user $path,
+# so that users do not have to customize their . files just to run IRAF.
+#=============================================================================
+
+if ("$lbin" == "") then
+ # Look around and come up with a likely candidate directory.
+ if (-d /usr/local/bin) then
+ set d_lbin = /usr/local/bin
+ else if (-d /opt/local/bin) then
+ set d_lbin = /opt/local/bin
+ else if (-d /local/bin) then
+ set d_lbin = /local/bin
+ else
+ set d_lbin = /usr/bin
+ endif
+
+lbin_prompt:
+ BOLD_ON ; echo -n "Local unix commands directory " ; BOLD_OFF
+ echo -n "($d_lbin): "
+ set lbin = "$<"
+ if ("$lbin" == "") then
+ set lbin = "$d_lbin"
+ else if ("$lbin" == "quit" || "$lbin" == "q") then
+ exit 0
+ else if ("$lbin" == "help" || "$lbin" == "h" || "$lbin" == "?") then
+ NEWLINE
+ MSG "The local bin directory is the system directory into which the"
+ MSG "iraf commands (e.g. cl, mkiraf, mkpkg, etc) will be installed"
+ MSG "as symlinks to files in the iraf tree. This should be a common"
+ MSG "dir such as /usr/local/bin which will likely be found in every"
+ MSG "user's path."
+ NEWLINE
+ setenv lbin $d_lbin
+ goto lbin_prompt
+ endif
+
+ # Create the local bin directory if it doesn't exist?
+ if (! (-e $lbin)) then
+ PROMPT " Sorry, but $lbin does not exist, create it? "
+ set ans = "$<"
+ if ("$ans" == "" || "$ans" == "y" || "$ans" == "yes") then
+ echo " Creating directory $lbin..."
+ if ($exec == yes) then
+ mkdir $lbin
+ endif
+ if (! (-e $lbin) && $exec == yes) then
+ ERRMSG "Cannot create $lbin, please retry..."
+ setenv lbin $d_lbin
+ goto lbin_prompt
+ endif
+ else
+ goto lbin_prompt
+ endif
+ NEWLINE
+ endif
+endif
+
+
+
+#=============================================================================
+# Get UNIX directory where IRAF shared library should be installed.
+#=============================================================================
+
+if ("$shlib" == "yes") then
+ if ("$llib" == "") then
+ # Look around and come up with a likely candidate directory.
+ if (-d /usr/local/lib) then
+ set d_llib = /usr/local/lib
+ else if (-d /local/lib) then
+ set d_llib = /local/lib
+ else if (-d /usr/lib) then
+ set d_llib = /usr/lib
+ else if (-d /var/shlib) then
+ set d_llib = /var/shlib
+ else
+ set d_llib = /usr/shlib
+ endif
+
+llib_prompt:
+ BOLD_ON ; echo -n "Directory for local shared libraries " ; BOLD_OFF
+ echo -n "($d_llib): "
+ set llib = "$<"
+ if ("$llib" == "") then
+ set llib = "$d_llib"
+ else if ("$llib" == "quit" || "$llib" == "q") then
+ exit 0
+ else if ("$llib" == "help" || "$llib" == "h" || "llib" == "?") then
+ NEWLINE
+ MSG "The local lib directory is the system directory into which"
+ MSG "the IRAF shared library will be installed as a symlink to"
+ MSG "the library in the iraf tree. The default prompt dir is"
+ MSG "one which will be used on this system w/out special user"
+ MSG "setup, choose another one with care."
+ NEWLINE
+ setenv llib $d_llib
+ goto llib_prompt
+ endif
+
+ # Create the local lib directory if it doesn't exist?
+ if (! (-e $llib)) then
+ PROMPT " Sorry, but $llib does not exist, create it? "
+ set ans = "$<"
+ if ("$ans" == "" || "$ans" == "y" || "$ans" == "yes") then
+ echo " Creating directory $llib..."
+ if ($exec == yes) then
+ mkdir $llib
+ endif
+ if (! (-e $llib) && $exec == yes) then
+ ERRMSG "Cannot create $lbin, please retry..."
+ setenv llib $d_llib
+ goto llib_prompt
+ endif
+ else
+ goto llib_prompt
+ endif
+ NEWLINE
+ endif
+ endif
+endif
+
+
+
+##############################################################################
+#
+# Step 1: VERIFICATION
+#
+# Run some simple checks to be sure the system was unpacked correctly
+# and the settings used are correct. Verification tests include:
+#
+# o Verify the machine type and document settings.
+# o Check iraf root directory looks correct.
+# o Check iraf root and imdir aren't the same
+# o Check iraf user exists in passwd file/NIS.
+# o Check iraf user login path in passwd file is iraf$local.
+# o Check iraf tree for proper structure.
+# o Check binary dirs are both populated correctly.
+# o Check that the local bin directory exists.
+# o Check that the local lib directory exists.
+#
+# An error at this stage will cause the script to exit so we can reset
+# and try again.
+#
+##############################################################################
+
+set err_stat = 0 # initialize error stats
+set err_count = 0
+set warn_stat = 0 # initialize warning stats
+set warn_count = 0
+
+NEWLINE
+BOLD_ON
+echo "========================================================================"
+echo "===================== Verifying System Settings ======================"
+echo "========================================================================"
+BOLD_OFF
+
+
+# Verify the machine type and document the old root pathnames.
+NEWLINE
+BOLD_ON; echo -n "Hostname = "; \
+ BOLD_OFF; echo `hostname` | awk '{printf("%-20.20s ", $1)}'
+BOLD_ON; echo -n "OS version = "; \
+ BOLD_OFF; echo `$uname_cmd`" "`$uname_cmd -r`
+BOLD_ON; echo -n "Architecture = "; \
+ BOLD_OFF; echo $mach | awk '{printf("%-20s ", $1)}'
+BOLD_ON; echo -n "HSI arch = "; \
+ BOLD_OFF; echo $hmach | awk '{printf("%-20s\n", $1)}'
+BOLD_ON; echo -n "New iraf root = "; \
+ BOLD_OFF; echo $iraf | awk '{printf("%-20s ", $1)}'
+BOLD_ON; echo -n "Old iraf root = "; \
+ BOLD_OFF; echo $o_iraf | awk '{printf("%-20s\n", $1)}'
+BOLD_ON; echo -n "New imdir = "; \
+ BOLD_OFF; echo $imdir | awk '{printf("%-20s ", $1)}'
+BOLD_ON; echo -n "Old imdir = "; \
+ BOLD_OFF; echo $o_imdir | awk '{printf("%-20s\n", $1)}'
+BOLD_ON; echo -n "New cache = "; \
+ BOLD_OFF; echo $cache | awk '{printf("%-20s ", $1)}'
+BOLD_ON; echo -n "Old cache = "; \
+ BOLD_OFF; echo $o_cache | awk '{printf("%-20s\n", $1)}'
+BOLD_ON; echo -n "Local bin dir = "; \
+ BOLD_OFF; echo $lbin | awk '{printf("%-20s\n", $1)}'
+if ("$shlib" == "yes") then
+ BOLD_ON; echo -n "Local lib dir = "; \
+ BOLD_OFF; echo $llib | awk '{printf("%-20s\n", $1)}'
+endif
+NEWLINE ; NEWLINE
+
+
+# Check iraf root directory looks correct.
+echo -n "Checking definition of iraf root directory ... "
+if (! ((-d $iraf/dev) && (-d $iraf/pkg) && (-d $iraf/noao))) then
+ DO_FAIL ; set err_stat = 1 ; set iraf_root_ok = 0
+ NEWLINE
+ MSG "The definition of '$iraf' looks incorrect. The iraf root"
+ MSG "directory is the place where the AS distribution was unpacked,"
+ MSG "it contains subdirectories such as 'dev', 'local', 'noao', and"
+ MSG "'pkg' and the binary directory links."
+ MSG ""
+ if (((-d $iraf/iraf/dev) && (-d $iraf/iraf/pkg) && (-d $iraf/iraf/noao))) then
+ MSG "The path '$iraf/iraf' appears to be correct ..."
+ set iraf = $iraf/iraf
+ else if (((-d $iraf/../dev) && (-d $iraf/../pkg) && (-d $iraf/../noao))) then
+ if (-d $iraf/..) then
+ pushd $iraf/.. >& /dev/null
+ setenv ip `echo $cwd`
+ MSG "The path '$ip' appears to be correct ..."
+ set iraf = $ip
+ popd >& /dev/null
+ endif
+ endif
+ MSG "Please verify your path and try again ..."
+ NEWLINE
+ set err_count = `expr $err_count + 1`
+else
+ DO_OK ; set iraf_root_ok = 1
+endif
+
+
+# Cannot have iraf and imdir the same.
+echo -n "Checking iraf root and imdir directory ... "
+if ($iraf == $imdir) then
+ DO_FAIL ; set err_stat = 1
+ NEWLINE
+ MSG "The 'imdir' pixel storage directory cannot be the same as the"
+ MSG "iraf root directory. Please choose another directory."
+ NEWLINE
+ set err_count = `expr $err_count + 1`
+else
+ DO_OK
+endif
+
+# Cannot have iraf and cache the same.
+echo -n "Checking iraf root and cache directory ... "
+if ($iraf == $cache) then
+ DO_FAIL ; set err_stat = 1
+ NEWLINE
+ MSG "The 'cache' storage directory cannot be the same as the"
+ MSG "iraf root directory. Please choose another directory."
+ NEWLINE
+ set err_count = `expr $err_count + 1`
+else
+ DO_OK
+endif
+
+
+
+if ($no_edit == 0) then
+
+# Check for write permission on iraf directory...
+echo -n "Checking iraf directory write permissions ... "
+
+ set TEST = "_inst.check"
+ if ($exec == "yes") then
+ set back = $cwd/
+ chdir $iraf_p/iraf
+ touch $TEST >& /dev/null
+ if (-e $TEST) then
+ rm $TEST
+ DO_OK
+ else
+ DO_WARN ; set warn_stat = 1
+ NEWLINE
+ MSG "You do not have write permission on the iraf directory."
+ MSG "This will prevent the install script from modifying files"
+ MSG "in the tree needed to complete the setup. If this is an"
+ MSG "NFS disk there can be several explanations aside from just"
+ MSG "the usual permissions problems:"
+ MSG ""
+ MSG " 1) The NFS disk is mounted read-only"
+ MSG " 2) The NFS disk is mounted with the 'nosuid' option"
+ MSG " 3) The NFS disk is exported with the 'all_squash' option"
+ MSG " which remaps your userid to 'anonymous'"
+ MSG ""
+ MSG "The script can continue by installing the command links on"
+ MSG "the local machine, but will not edit the iraf path into the"
+ MSG "files. If you choose not to do this the verification stage"
+ MSG "will be completed but the installation will then abort."
+ MSG ""
+ MSG "In either case, you should verify the server iraf path is"
+ MSG "correct for this machine and rerun the install script or"
+ MSG "make the appropriate links as needed."
+ MSG ""
+ MSG ""
+
+ echo -n ' '
+ BOLD_ON
+ echo -n '*** Would you like to continue with a no-edit install? '
+ BOLD_OFF
+ echo -n "(yes) "
+
+ set ans = "$<"
+ if ("$ans" == "" || "$ans" == "y" || "$ans" == "yes") then
+ set no_edit = 1
+ else
+ set err_stat = 1
+ endif
+ NEWLINE
+ set warn_count = `expr $warn_count + 1`
+ endif
+ chdir $back
+ else
+ DO_OK
+ endif
+endif
+
+
+
+# Check iraf user.
+
+goto _no_user_check
+
+# Check for iraf user disabled for all platforms with v2.15
+if ($mach == "macosx" || $mach == "macintel" || $mach == "cygwin") then
+ goto _no_user_check
+endif
+
+echo -n "Checking for iraf user account ... "
+set pass = ""
+if (($pciraf && ($mach == "macosx" || $mach == "macintel" || $mach == "cygwin")) || (!(-r /etc/passwd)) ) then
+ # Special-case user info check for OS X and systems where the /etc/passwd
+ # file may not contain the user info or isn't readable.
+
+ set id_found = 0
+ foreach d ($path)
+ if (-e $d/id) then
+ set id_found = 1
+ break
+ endif
+ end
+ if ($id_found == 1) then
+ if (`id iraf |& grep -i 'no such user'` != "") then
+ DO_WARN ; set warn_stat = 1
+ NEWLINE
+ MSG "No 'iraf' user was found on the system. The iraf user should"
+ MSG "be created before installing the system to ensure all files"
+ MSG "are owned by the iraf user, and the have the proper environment"
+ MSG "defined for installation and maintanence."
+ NEWLINE
+
+ else
+ DO_OK
+
+ # Check iraf user login path and shell
+ echo -n "Checking iraf user login directory ... "
+
+ set v = `finger iraf |& egrep '^Directory'`
+ set ihome = `echo $v[2] | sed -e 's+/\(["]*\)$+\1+'`
+ set shel = `echo $v[4] | sed -e 's+/\(["]*\)$+\1+' | grep csh`
+ if ("$ihome" != "$iraf/local" && $shel == "") then
+ DO_FAIL ; set errstat = 1
+ NEWLINE
+ MSG "The iraf user login info appears to be incorrect. For the"
+ MSG "given iraf root this path should be '$iraf/local',"
+ MSG "please run the 'chpass' command to change this. The iraf"
+ MSG "user account should also be defined to use a C-shell."
+ if ("$iraf_root_ok" == 0) then
+ MSG "(This error may be related to the incorrect definition of"
+ MSG "the iraf root directory seen above.)"
+ endif
+ NEWLINE
+ else
+ DO_OK
+ endif
+
+ else
+
+ endif
+ endif
+
+else
+ set pass1 = "`grep ^iraf: /etc/passwd`"
+ set pass2 = "`ypcat passwd |& grep ^iraf:`"
+
+ if ("$pass1" == "" && "$pass2" == "") then
+ DO_WARN ; set warn_stat = 1
+ NEWLINE
+ MSG "No 'iraf' user was found in the /etc/passwd file. The iraf"
+ MSG "user should be created before installing the system to ensure"
+ MSG "all files are owned by the iraf user, and the have the proper"
+ MSG "environment defined for installation and maintanence."
+ NEWLINE
+ else
+ DO_OK
+
+ # Check iraf user login path in passwd file is iraf$local.
+ echo -n " Checking iraf user login directory ... "
+ if ("$pass1" != "") then
+ set pass = `grep ^iraf: /etc/passwd |sed -e 's/[ \*]/_/g' |sed -e 's/:/ /g'`
+ else
+ set pass = `ypcat passwd | grep ^iraf: |sed -e 's/[ \*]/_/g' |sed -e 's/:/ /g'`
+ endif
+
+ set c = `echo $pass | wc -w`
+ set indx = `expr $c - 1`
+
+ set ihome = `echo $pass[$indx] | sed -e 's+/\(["]*\)$+\1+'`
+ if ("$ihome" != "$iraf/local") then
+ DO_FAIL ; set errstat = 1
+ NEWLINE
+ MSG "The iraf user login directory appears to be incorrect."
+ MSG "For the given iraf root this path should be '$iraf/local',"
+ MSG "please edit the /etc/passwd file to change this."
+ if ("$iraf_root_ok" == 0) then
+ MSG "(This error may be related to the incorrect definition of"
+ MSG "the iraf root directory seen above.)"
+ endif
+ NEWLINE
+ else
+ DO_OK
+ endif
+
+ echo -n " Checking iraf user account shell ... "
+ set shel = `echo $pass[$c] | sed -e 's+/\(["]*\)$+\1+' | grep csh`
+ if ($shel == "") then
+ DO_FAIL ; set errstat = 1
+ NEWLINE
+ MSG "The iraf user login directory appears to be incorrect."
+ MSG "The account should be configured to use a C-shell in order"
+ MSG "to take advantage of a preconfigured environment which will"
+ MSG "make maintainence easier. Please edit the passwd file or"
+ MSG "use the 'chsh' command (if available) to change this."
+ NEWLINE
+ else
+ DO_OK
+ endif
+ endif
+endif
+
+_no_user_check:
+
+
+# Skip the ownership check on some platforms.
+if ($V != "2.15" && $V != "2.16") then
+ if ($mach != "cygwin" && $mach != "macosx" && $mach != "macintel") then
+
+ # Check file ownership.
+ if ($mach == "hp700" || $mach == "rs6000") then
+ set downr = `$LS -lLd $iraf_p/iraf | awk '{print ($4)}'`
+ set fownr = `$LS -lLd $iraf_p/iraf/mkpkg | awk '{print ($4)}'`
+ else
+ set downr = `$LS -lLd $iraf_p/iraf | awk '{print ($3)}'`
+ set fownr = `$LS -lLd $iraf_p/iraf/mkpkg | awk '{print ($3)}'`
+ endif
+ set dperm = `$LS -lLd $iraf_p/iraf | awk '{print ($1)}'`
+ set fperm = `$LS -lLd $iraf_p/iraf/mkpkg | awk '{print ($1)}'`
+
+
+ echo -n "Checking file ownerships ... "
+ if ("$downr" == "iraf" && "$fownr" == "iraf") then
+ DO_OK
+ else if ("$downr" == "tody" && "$fownr" == "tody") then
+ # Special exemption for NOAO installations.
+ DO_OK
+ else
+ DO_WARN ; set warn_stat = 1
+ NEWLINE
+ MSG "(root dir owned by $downr, iraf files owned by $fownr)"
+ MSG "The iraf tree should be owned by the iraf user so it can"
+ MSG "be updated and maintained properly."
+ MSG ""
+ MSG 'To fix this, login as root, set the iraf environment, and'
+ MSG 'issue the commands:'
+ MSG ""
+ MSG " cd " `echo $iraf_p`
+ MSG ' chown -R iraf . # change dir owner'
+ MSG ' cd $hbin # go to HSI bin dir'
+ MSG ' chown 0 alloc.e # fix alloc.e ownership'
+ MSG ' chmod 4755 alloc.e # fix permissions'
+ NEWLINE
+ set warn_count = `expr $warn_count + 1`
+ endif
+
+ endif
+
+# Check file/directory permissions.
+echo -n "Checking file permissions ... "
+
+set err_seen = 0
+foreach dir ($iraf_p $iraf_p/iraf $iraf_p/iraf/unix $iraf_p/iraf/unix/hlib)
+ if ("`$LS -lLd $dir | grep '.rw[xs]r.[xs]r.[xt]'`" == "") then
+ set err_seen = 1
+ break
+ endif
+end
+
+if ("$err_seen" == 0) then
+ DO_OK
+else
+ DO_FAIL ; set err_stat = 1
+ NEWLINE
+ MSG "The permissions on the iraf directory tree appear to be too"
+ MSG "restrictive to allow group or world user to access the file"
+ MSG "This may prevent users other than $downr from starting the system"
+ NEWLINE
+ set err_count = `expr $err_count + 1`
+endif
+
+endif
+
+
+# Check iraf tree for proper structure.
+set check_iraf_tree = 0 # for v214 and earlier
+
+set iraf_r = $iraf # iraf root directory
+set iraf_p = $iraf_r:h # iraf parent directory
+set iraf_b = $iraf_p/irafbin # irafbin directory
+set iraf_tree_ok = 1
+
+set iraf_ib = $iraf/bin.$mach # irafbin IB directory
+set iraf_nb = $iraf/noao/bin.$mach # irafbin NB directory
+
+
+if ($check_iraf_tree == 1) then
+
+set iraf_ib = $iraf_b/bin.$mach # irafbin IB directory
+set iraf_nb = $iraf_b/noao.bin.$mach # irafbin NB directory
+
+
+echo "Checking proper iraf tree structure in $iraf_p ..."
+
+echo -n " Checking for 'iraf' subdir ... "
+if (-d "$iraf_p/iraf") then
+ DO_OK
+else
+ DO_FAIL ; set err_stat = 1 ; set iraf_tree_ok = 0
+ set err_count = `expr $err_count + 1`
+endif
+
+echo -n " Checking for 'irafbin' subdir ... "
+if (-d "$iraf_p/irafbin") then
+ DO_OK
+else
+ set temp = $iraf_tree_ok
+ #echo -n "[ "; BOLD_ON; echo -n "Not Found" ; BOLD_OFF; echo " ]" ;
+ echo ""
+ set iraf_tree_ok = 0
+
+ # Look for a fallback to recover ...
+ echo -n " Checking for fallback tree structure ... "
+ set iraf_p = $iraf/../
+ set iraf_b = $iraf_p/irafbin # irafbin directory
+ set iraf_ib = $iraf_b/bin.$mach # irafbin IB directory
+ set iraf_nb = $iraf_b/noao.bin.$mach # irafbin NB directory
+ if (-d "$iraf_p/irafbin") then
+ echo -n " "; DO_OK ; set iraf_tree_ok = $temp
+ else
+ echo -n " "; DO_FAIL; set err_stat = 1 ; set iraf_tree_ok = 0
+ set err_count = `expr $err_count + 1`
+ endif
+endif
+
+
+echo "'irafbin/bin.$mach'" | \
+ awk '{ printf (" Checking for %s subdir ... \t", $1) }'
+if (-d "$iraf_p/irafbin/bin.$mach") then
+ echo -n " "; DO_OK
+else
+ echo -n " "; DO_FAIL; set err_stat = 1 ; set iraf_tree_ok = 0
+ set err_count = `expr $err_count + 1`
+endif
+
+echo "'irafbin/noao.bin.$mach'" | \
+ awk '{ printf (" Checking for %s subdir ...\t\t", $1) }'
+if (-d "$iraf_p/irafbin/noao.bin.$mach") then
+ DO_OK
+else
+ DO_FAIL ; set err_stat = 1 ; set iraf_tree_ok = 0
+ set err_count = `expr $err_count + 1`
+endif
+
+if ("$iraf_tree_ok" == 0) then
+ NEWLINE
+ MSG "An error was detected in the structure of the iraf tree."
+ MSG "Your directory tree should look something like:"
+ MSG ""
+ MSG " $iraf_p"
+ MSG " / \"
+ MSG " (AS) /iraf /irafbin"
+ MSG " / \"
+ MSG " (IB) bin.$mach noao.bin.$mach (NB)"
+ MSG ""
+ MSG "The AS, IB, and NB distribution files are shown where they"
+ MSG "should be unpacked. Please verify the structure and the"
+ MSG "system architecture."
+ NEWLINE
+endif
+
+endif # if (check_iraf_tree)
+
+
+
+
+# Check binary dirs are both populated correctly.
+echo -n "Checking Core system binary directory ... "
+if (! (-e "$iraf_ib/cl.e" && -e "$iraf_ib/x_system.e")) then
+ if ($port == 1) then
+ DO_WARN ; set warn_stat = 1
+ else
+ DO_FAIL ; set err_stat = 1
+ endif
+ NEWLINE
+ MSG "The core system binary directory, $iraf_ib, does"
+ MSG "not appear to contain the proper binaries."
+ NEWLINE
+ set err_count = `expr $err_count + 1`
+else
+ DO_OK
+endif
+
+echo -n "Checking NOAO package binary directory ... "
+if (! (-e "$iraf_nb/x_apphot.e" && -e "$iraf_nb/x_rv.e")) then
+ if ($port == 1) then
+ DO_WARN ; set warn_stat = 1
+ else
+ DO_FAIL ; set err_stat = 1
+ endif
+ if (-e "$iraf_ib/x_apphot.e" && -e "$iraf_ib/x_rv.e") then
+ NEWLINE
+ MSG "The NOAO package binary directory, $iraf_nb, is"
+ MSG "empty but the binaries appear to have been unpacked in the"
+ MSG "core system directory, $iraf_ib. These will need to be moved,"
+ MSG "please delete the binaries and start again, be sure to unpack"
+ MSG "the NB distribution files in the $iraf_nb directory,"
+ MSG "and the core system file in the $iraf_ib directory."
+ NEWLINE
+ else
+ NEWLINE
+ MSG "The NOAO package binary directory, $iraf_nb, does"
+ MSG "not appear to contain the proper files."
+ NEWLINE
+ endif
+ set err_count = `expr $err_count + 1`
+else
+ DO_OK
+endif
+
+
+# Check that the specified local bin directory exists.
+echo -n "Checking that local bin directory exists ... "
+if (-d "$lbin") then
+ DO_OK
+else
+ DO_FAIL ; set err_stat = 1
+ NEWLINE
+ MSG "The specified local bin directory does not exist. This"
+ MSG "directory should be a common local bin directory which "
+ MSG "is found in all user's paths, e.g. /usr/local/bin."
+ MSG "Please create the directory or else reset and try again."
+ NEWLINE
+ set err_count = `expr $err_count + 1`
+endif
+
+
+# Check that the specified local lib directory exists.
+if ("$shlib" == "yes") then
+ echo -n "Checking that local lib directory exists ... "
+ if (-d "$llib") then
+ DO_OK
+ else
+ DO_FAIL ; set err_stat = 1
+ NEWLINE
+ MSG "The specified local lib directory does not exist. This"
+ MSG "directory should be a common local lib directory which "
+ MSG "is found in all user's paths, e.g. /usr/local/lib."
+ MSG "This directory is required for the iraf shared library."
+ MSG "Please create the directory or else reset and try again."
+ NEWLINE
+ set err_count = `expr $err_count + 1`
+ endif
+endif
+
+
+# See if we're good to go ...
+if ("$err_stat" != "0") then
+ NEWLINE ; NEWLINE
+ BOLD_ON
+ echo "======================================================================"
+ echo "| An error occured during verification. Please take corrective |"
+ echo "| action before rerunning the install script. |"
+ echo "======================================================================"
+ BOLD_OFF
+ NEWLINE
+ exit $err_stat
+endif
+
+
+
+# ============================================
+# The following is partially system dependent.
+# ============================================
+
+# Set the BINDIRS pathnames - directories where the HSI executables go.
+set host = "$iraf/unix"
+set hbin = "$iraf/unix/bin.$hmach"
+set hlib = "$iraf/unix/hlib"
+set fbin = "$iraf/bin"
+
+# Replace any // by /.
+set host = `echo $host | sed -e "s+//+/+g"`
+set hbin = `echo $hbin | sed -e "s+//+/+g"`
+set fbin = `echo $fbin | sed -e "s+//+/+g"`
+set hlib = `echo $hlib | sed -e "s+//+/+g"`
+
+# Strip any trailing /.
+set host = `echo $host | sed -e 's+/\(["]*\)$+\1+'`
+set hbin = `echo $hbin | sed -e 's+/\(["]*\)$+\1+'`
+set fbin = `echo $fbin | sed -e 's+/\(["]*\)$+\1+'`
+set hlib = `echo $hlib | sed -e 's+/\(["]*\)$+\1+'`
+set BINDIRS = "$hbin $hlib $fbin $host"
+
+# The following file lists are partially system dependent.
+set PATHFILES = "mkiraf.csh libc/iraf.h cl.csh"
+set MODEFILES = "cl.csh fc.csh mkiraf.csh mkfloat.csh mkmlist.csh $host/reboot generic.e mkpkg.e rmbin.e rmfiles.e rpp.e rtar.e wtar.e xc.e xpp.e xyacc.e sgidispatch.e $hbin/sgi2*.e irafarch.csh"
+set LINKFILES = "ecl.e cl.e mkiraf.csh mkmlist.csh generic.e mkpkg.e rmbin.e rmfiles.e rtar.e sgidispatch.e wtar.e rpp.e xpp.e xyacc.e xc.e"
+set CMDLINKS = "ecl cl mkiraf mkmlist generic mkpkg rmbin rmfiles rtar sgidispatch wtar rpp xpp xyacc xc irafarch"
+
+
+#=============================================================================
+# See whether there is an existing commands dir we need to delete.
+#=============================================================================
+
+echo -n "Checking for existing commands directory... "
+set cl_found = 0
+set clpath = ""
+foreach d ($path)
+ if (-e $d/cl) then
+ set cl_found = 1
+ set clpath = $d/cl
+ break
+ endif
+end
+if ($cl_found == 1) then
+ set o_lbin = $clpath:h
+
+ if ("$o_lbin" != "$lbin") then
+ DO_WARN
+ NEWLINE
+ MSG "IRAF commands were found in the directory:"
+ MSG ""
+ MSG " $o_lbin"
+ MSG ""
+ MSG " These commands may conflict with the commands now being"
+ MSG "installed in: '$lbin'"
+ MSG ""
+del_cmd_:
+ PROMPT "Do you want to delete commands in the old directory? "
+ set ans = "$<"
+
+ if ("$ans" == "" || "$ans" == "y" || "$ans" == "yes") then
+ NEWLINE
+ foreach i ($CMDLINKS) # remove the iraf commands
+ set file = $o_lbin/$i
+ if (-e $file) then
+ MSG "Deleting command $file ..."
+ if ($exec == yes) then
+ RM $file
+ endif
+ endif
+ end
+ else if ("$ans" == "quit" || "$ans" == "q") then
+ exit 1
+ else if ("$ans" == "no" || "$ans" == "n") then
+ ; # fall through
+ else if ("$ans" == "help" || "$ans" == "h" || "$ans" == "?") then
+ NEWLINE
+ MSG "Multiple commands such as 'cl' or 'mkiraf' on a machine"
+ MSG "may cause errors (such as 'command not found' due to an"
+ MSG "invalid link), or confusions as to which version of iraf"
+ MSG "is being run if the old link is still valid. This is"
+ MSG "because the command being used depends on the order in"
+ MSG 'which the directories occur in the users "$path" environ-'
+ MSG "ment variable (which may vary by user)."
+ MSG ""
+ MSG "It is recommended there be only one iraf command directory"
+ MSG "on a given system, other methods can be used to start a"
+ MSG "different IRAF installation. This script will not auto-"
+ MSG "matically remove those links, and will only correct the"
+ MSG "path is the local bin directory is the same as before."
+ MSG ""
+ MSG "Type 'q' to quit and rerun the install script to specify"
+ MSG "a different local bin directory, 'yes' to remove the old"
+ MSG "links, and 'no' to leave the old commands around."
+ MSG ""
+ NEWLINE
+ goto del_cmd_
+ endif
+ NEWLINE
+ else
+ DO_OK
+ endif
+
+else
+ DO_OK
+endif
+
+
+#=============================================================================
+# Prompt for the go-ahead ...
+#=============================================================================
+NEWLINE
+proceed_:
+PROMPT "Proceed with installation? "
+set ans = "$<"
+if ("$ans" == "" || "$ans" == "y" || "$ans" == "yes") then
+ NEWLINE
+else if ("$ans" == "quit" || "$ans" == "q") then
+ exit 0
+else if ("$ans" == "no" || "$ans" == "n") then
+ exit 0
+else if ("$ans" == "help" || "$ans" == "h" || "$ans" == "?") then
+ NEWLINE
+ MSG "If you proceed, the system will be installed on this machine."
+ MSG "This means that command links will be placed in the local bin"
+ MSG "directory, needed system files will be created, and the iraf"
+ MSG "root path will be edited into key files. Stopping at this stage"
+ MSG "will have no side effects on your system or the iraf files."
+ MSG "Type <cr> to continue, or 'q' to quit to exit the installation."
+ NEWLINE
+ goto proceed_
+else
+ echo "Huh?"
+ goto proceed_
+endif
+
+
+##############################################################################
+#
+# Step 2: INSTALLATION
+#
+# Do the actual installation. This involves:
+#
+# 1) Editing the $iraf path into system files
+# 2) Creating the <iraf.h> link
+# 3) Creating the system command links
+# 4) Creating the image directory (imdir)
+# 5) Creating the cache directory (cache)
+# 6) Tape setup (modes on alloc.e and /dev tape devices)
+# 7) Graphics/Display file installation/setup
+#
+##############################################################################
+
+# Begin installation.
+# ------------------
+
+set err_seen = 0
+
+
+NEWLINE
+BOLD_ON
+echo "========================================================================"
+echo "========================= Begin Installation ========================="
+echo "========================================================================"
+BOLD_OFF
+
+# Skip ahead if we're not editing the files or touching the disk.
+if ($no_edit == 1) then
+ goto end_no_edit
+endif
+
+
+NEWLINE
+BOLD_ON
+echo " Editing Paths"
+echo " -------------"
+BOLD_OFF
+
+# Edit the $iraf pathname in the .login file for user 'iraf'.
+echo -n "Editing the iraf user .login/.cshrc paths ... "
+cd $iraf/local
+
+foreach file (.cshrc .login)
+ if (-e $file) then
+ RM $TEMP >& /dev/null
+ sed -e "s+$W$o_iraf+\1$iraf+" $file > $TEMP
+ cmp -s $file $TEMP
+ if ($status) then
+ PUT $TEMP $file
+ endif
+ RM $TEMP >& /dev/null
+ else
+ if ("$err_seen" == 0) then
+ DO_FAIL
+ set err_seen = 1
+ set err_count = `expr $err_count + 1`
+ endif
+ MSG "Cannot find the iraf $file file"
+ RM $TEMP >& /dev/null
+ endif
+end
+if ("$err_seen" == 0) then
+ DO_OK
+endif
+
+
+# If we're on a Mac OS X or Cygwin system the iraf login directory isn't easy
+# to change and as of OSX 10.1 the default is to create this in /Users/iraf.
+# If this is how things are set up then link the .login/.cshrc files in this
+# directory so the account has the proper environment.
+
+set err_seen = 0
+
+if ($V != "2.15" && $V != "2.16") then
+
+ if ($pciraf && ($mach == "macosx" || $mach == "macintel" || $mach == "cygwin")) then
+ echo -n "Creating iraf user .login/.cshrc links ... "
+
+ set v = `finger iraf |& egrep '^Directory'`
+ set ihome = `echo $v[2] | sed -e 's+/\(["]*\)$+\1+'`
+
+ if ("$ihome" != "$iraf/local") then
+ cd $ihome # go to account login dir
+
+ if (! (-e bugs.log)) then # make sure it's not iraf$local
+ foreach file (.cshrc .login)
+ if ($exec == yes) then
+ if (-e $file) then
+ RM $file >& /dev/null # remove old file
+ endif
+ ln -s $iraf/local/$file $file # make local link
+
+ if (! (-e $file) && $exec == yes) then
+ if ("$err_seen" == 0) then
+ DO_FAIL
+ set err_seen = 1
+ set err_count = `expr $err_count + 1`
+ endif
+ MSG "Cannot find the iraf $file file in $ihome"
+ RM $TEMP >& /dev/null
+ endif
+
+ endif
+ end
+ endif
+ cd $iraf/local
+
+ else
+ DO_OK
+ endif
+
+ if ("$err_seen" == 0) then
+ DO_OK
+ endif
+ endif
+
+endif
+
+
+# Edit the $iraf and $imdir paths in mkiraf.csh, cl.csh, and libc/iraf.h files.
+
+echo -n "Editing iraf/imdir paths into system files ... "
+cd $iraf/unix/hlib
+
+set err_seen = 0
+foreach i ($PATHFILES)
+ if (-e $i) then
+ RM $TEMP >& /dev/null
+ sed -e "s+$W$o_iraf+\1$iraf+" $i |\
+ sed -e "s+$W$o_cache+\1$cache+" | \
+ sed -e "s+$W$o_imdir+\1$imdir+" > $TEMP
+ cmp -s $i $TEMP
+ if ($status) then
+ if ($exec == yes) then
+ PUT $TEMP $i
+ chmod 755 $i
+ endif
+ endif
+ RM $TEMP >& /dev/null
+ else
+ if ("$err_seen" == 0) then
+ DO_FAIL
+ set err_seen = 1
+ set err_count = `expr $err_count + 1`
+ endif
+ MSG "File $i not found."
+ RM $TEMP >& /dev/null
+ endif
+end
+if ("$err_seen" == 0) then
+ DO_OK
+endif
+
+
+
+NEWLINE
+BOLD_ON
+echo " Checking File Permissions"
+echo " -------------------------"
+BOLD_OFF
+
+# Set default file permissions for the executable files in the BINDIRS,
+# in case the file mode has somehow been changed, e.g., in a file restore
+# or copy.
+
+echo -n "Checking iraf file permissions ... "
+
+set err_seen = 0
+foreach i ($MODEFILES)
+ set file = $i
+ if (! -e $file) then
+ foreach j ($BINDIRS)
+ if (-e $j/$i) then
+ set file = $j/$i
+ break
+ endif
+ end
+ endif
+
+ if (-e $file) then
+ if ("`$LS -l $file | grep '^.rw[xs]r.[xs]r.[xt]'`" == "") then
+ if ("$err_seen" == 0) then
+ DO_WARN
+ set err_seen = 1
+ set err_count = `expr $err_count + 1`
+ endif
+ MSG "Setting $file:t to mode 0755."
+ if ($exec == yes) then
+ chmod 755 $file
+ endif
+ endif
+ else
+ if ("$err_seen" == 0) then
+ DO_FAIL
+ set err_seen = 1
+ set err_count = `expr $err_count + 1`
+ endif
+ MSG "File $file:t not found."
+ endif
+end
+if ("$err_seen" == 0) then
+ DO_OK
+endif
+
+
+# Create the root imdir as a public scratch directory, if not already created.
+set err_seen = 0
+if (-d $imdir) then
+ if ("`$LS -ld $imdir | grep '^.rw[xs]r.[xs]r.[xt]'`" != "") then
+ echo -n 'Checking imdir permissions ...'
+ echo -n ' '
+ else
+ echo -n 'Setting mode for $imdir to 0777 '
+ if ($exec == yes) then
+ chmod 777 $imdir
+ endif
+ endif
+else
+ echo -n "Creating root imdir at $imdir ... "
+ if ($exec == yes) then
+ mkdir $imdir; chmod 777 $imdir
+ endif
+endif
+if ("$err_seen" == 0) then
+ DO_OK
+endif
+
+
+# Create the root cache as a public scratch directory, if not already created.
+set err_seen = 0
+if (-d $cache) then
+ if ("`$LS -ld $cache | grep '^.rw[xs]r.[xs]r.[xt]'`" != "") then
+ echo -n 'Checking cache permissions ...'
+ echo -n ' '
+ else
+ echo -n 'Setting mode for $cache to 0777 '
+ if ($exec == yes) then
+ chmod 777 $cache
+ endif
+ endif
+else
+ echo -n "Creating root cache at $cache ... "
+ if ($exec == yes) then
+ mkdir $cache; chmod 777 $cache
+ endif
+endif
+if ("$err_seen" == 0) then
+ DO_OK
+endif
+
+
+
+# Allow deletion of files in /tmp - needed for multiuser tape allocation.
+echo -n "Reset /tmp sticky bit setting ... "
+if ($exec == yes) then
+ chmod -t /tmp
+endif
+DO_OK
+
+# Initialize permissions of tape devices.
+if ($do_tapes) then
+echo -n "Setting tape device permissions ... "
+ if ($exec == yes) then
+ chmod 666 $TAPES >& /dev/null
+ chown root $TAPES >& /dev/null
+ endif
+ DO_OK
+endif
+
+
+
+# Set owner=root for the device allocation task, alloc.e.
+
+echo -n "Checking alloc.e permissions ... "
+
+set err_seen = 0
+foreach i ($BINDIRS)
+ if (-e $i/alloc.e) then
+ if ("`$LS -l $i/alloc.e | grep 'rwsr-.*root'`" == "") then
+ if ($exec == yes) then
+ chown 0 $i/alloc.e
+ chmod u+s $i/alloc.e
+ endif
+ endif
+ break
+ else
+ if ("$err_seen" == 0) then
+ DO_FAIL
+ set err_seen = 1
+ set err_count = `expr $err_count + 1`
+ endif
+ MSG "Cannot find alloc.e executable."
+ endif
+end
+if ("$err_seen" == 0) then
+ DO_OK
+endif
+
+
+# Target for no-edit install.
+end_no_edit:
+
+
+NEWLINE
+BOLD_ON
+echo " Creating File Links"
+echo " -------------------"
+BOLD_OFF
+
+
+# Create a /iraf symlink on the system to establish a /iraf/iraf root
+# path regardless of the actual root dir. We only do this if there is
+# no /iraf on the system already.
+
+echo -n "Checking for /iraf symlink ... "
+if (! -e /iraf) then
+ if ($exec == yes) then
+ ln -s $iraf_p /iraf
+ endif
+ if ($exec == no || -e /iraf/iraf ) then
+ DO_OK
+ else
+ DO_FAIL
+ set err_count = `expr $err_count + 1`
+ endif
+else
+ DO_OK
+endif
+
+
+# Link $hlib/libc/iraf.h to <iraf.h>. This is needed not only to compile C
+# source files in iraf, but also to define $iraf, $host, etc. for iraf tasks.
+
+# Verify we have a /usr/include directory (some MacOSX systems won't)
+echo -n "Checking /usr/include directory ... "
+if (! -e /usr/include) then
+ if ($exec == yes) then
+ mkdir /usr/include
+ if (-d /usr/include) then
+ DO_OK
+ else
+ DO_FAIL
+ set err_count = `expr $err_count + 1`
+ endif
+ else
+ DO_OK
+ endif
+else
+ DO_OK
+endif
+
+
+echo -n "Creating <iraf.h> symlink ... "
+set file1 = /usr/include/iraf.h
+set file2 = $iraf/unix/hlib/libc/iraf.h
+
+set err_seen = 0
+if (-e $file1) then
+ if ("`$LS -l $file1 | grep $file2`" == "") then
+ if ($exec == yes) then
+ RM $file1
+ endif
+ if ($exec == yes) then
+ ln -s $file2 $file1
+ endif
+ endif
+else
+ if ($exec == yes) then
+ ln -s $file2 $file1
+ endif
+endif
+if (("$err_seen" == 0 && -e $file1) || $exec == "no") then
+ DO_OK
+else
+ DO_FAIL
+ set err_count = `expr $err_count + 1`
+endif
+
+
+# Establish the remaining symbolic links to HSI tasks.
+echo -n "Creating iraf command links in local bin dir ... "
+cd $lbin
+
+set err_seen = 0
+foreach i ($LINKFILES)
+ # Locate the file to be linked to.
+ set file1 = $i:r
+ foreach j ($BINDIRS)
+ set file2 = $j/$file1.csh
+ if (-e $file2) then
+ break
+ endif
+ set file2 = $j/$i
+ if (-e $file2) then
+ break
+ endif
+ end
+
+ # Verify or set the link.
+ if (-e $file1) then
+ if ("`$LS -l $file1 | grep $file2`" == "") then
+ if ($exec == yes) then
+ RM $file1
+ endif
+ if ($exec == yes) then
+ ln -s $file2 $file1
+ endif
+ endif
+ else
+ if ($exec == yes) then
+ RM $file1
+ ln -s $file2 $file1
+ endif
+ endif
+
+ if (! (-e $file1) && "$exec" == "yes") then
+ if ("$err_seen" == 0) then
+ DO_FAIL
+ endif
+ MSG "Could not make link $file1 -> $file2"
+ set err_seen = 1
+ set err_count = `expr $err_count + 1`
+ endif
+end
+if ("$err_seen" == 0) then
+ DO_OK
+endif
+
+
+# Establish the remaining symbolic links to shared libraries.
+if ("$shlib" == "yes") then
+ echo -n "Creating iraf library links in local lib dir ... "
+ cd $llib
+
+ set err_seen = 0
+ foreach i ($LIBFILES)
+ # Locate the file to be linked to.
+ set file1 = $i
+ foreach j ($iraf/bin.$mach $iraf/bin.$hmach)
+ set file2 = $j/$i
+ if (-e $file2) then
+ break
+ endif
+ end
+
+ # Verify or set the link.
+ if (-e $file1) then
+ if ("`$LS -l $file1 | grep $file2`" == "") then
+ if ($exec == yes) then
+ RM $file1
+ endif
+ if ($exec == yes) then
+ ln -s $file2 $file1
+ endif
+ endif
+ else
+ if ($exec == yes) then
+ RM $file1
+ ln -s $file2 $file1
+ endif
+ endif
+
+ if (! (-e $file1) && "$exec" == "yes") then
+ if ("$err_seen" == 0) then
+ DO_FAIL
+ endif
+ MSG "Could not make link $file1 -> $file2"
+ set err_seen = 1
+ set err_count = `expr $err_count + 1`
+ endif
+ end
+ if ("$err_seen" == 0) then
+ DO_OK
+ endif
+endif
+
+
+# Mark the system update time.
+if ($no_edit == 0) then
+ echo -n 'Marking system update time hlib$utime ... '
+ if ($exec == yes) then
+ touch $hlib/utime
+ endif
+ DO_OK
+endif
+
+
+#=============================================================================
+# Install the VOClient Daemon code.
+#=============================================================================
+
+NEWLINE
+BOLD_ON
+echo " Installing VOClient Code"
+echo " ------------------------"
+BOLD_OFF
+
+
+echo -n "Creating 'voclientd' symlink ... "
+set file1 = $lbin/voclientd
+set file2 = $iraf/vo/java/voclientd
+
+set err_seen = 0
+if (-e $file1) then
+ if ("`$LS -l $file1 | grep $file2`" == "") then
+ if ($exec == yes) then
+ RM $file1
+ endif
+ if ($exec == yes) then
+ ln -s $file2 $file1
+ endif
+ endif
+else
+ if ($exec == yes) then
+ ln -s $file2 $file1
+ endif
+endif
+if (("$err_seen" == 0 && -e $file1) || $exec == "no") then
+ DO_OK
+else
+ DO_FAIL
+ set err_count = `expr $err_count + 1`
+endif
+
+
+echo -n "Creating 'voclient.jar' symlink ... "
+set file1 = $lbin/voclient.jar
+set file2 = $iraf/vo/java/voclient.jar
+
+set err_seen = 0
+if (-e $file1) then
+ if ("`$LS -l $file1 | grep $file2`" == "") then
+ if ($exec == yes) then
+ RM $file1
+ endif
+ if ($exec == yes) then
+ ln -s $file2 $file1
+ endif
+ endif
+else
+ if ($exec == yes) then
+ ln -s $file2 $file1
+ endif
+endif
+if (("$err_seen" == 0 && -e $file1) || $exec == "no") then
+ DO_OK
+else
+ DO_FAIL
+ set err_count = `expr $err_count + 1`
+endif
+
+
+
+#=============================================================================
+# Common code for XGTERM/XIMTOOL installation.
+#=============================================================================
+
+NEWLINE
+BOLD_ON
+echo " Creating Graphics Device Files"
+echo " ------------------------------"
+BOLD_OFF
+
+if ($do_pipes == 0 || $has_pipes == 0) then
+ goto _no_pipes
+endif
+
+# Make sure special device entries for the display servers exist in /dev.
+echo -n "Creating /dev/imt1 fifo pipes for image display ... "
+
+set err_seen = 0
+foreach i (/dev/imt1i /dev/imt1o)
+ if (-e $i) then
+ # Check the file permissions.
+ if ("`$LS -l $i | grep '^.rwxrwxrwx'`" == "") then
+ if ($exec == yes) then
+ chmod 777 $i
+ endif
+ endif
+ else
+ if ($exec == yes) then
+ set mkfifo_found = 0
+ foreach d ($path)
+ if (-e $d/mkfifo) then
+ set mkfifo_found = 1
+ break
+ endif
+ end
+ if ($mkfifo_found == 1) then
+ mkfifo $i
+ else
+ mknod $i p
+ endif
+ chmod 777 $i
+ endif
+ endif
+
+ if (! (-e $i) && $exec == "yes") then
+ if ("$err_seen" == 0) then
+ DO_FAIL
+ endif
+ MSG "Could not create fifo $i"
+ set err_seen = 1
+ set err_count = `expr $err_count + 1`
+ endif
+end
+if ("$err_seen" == 0) then
+ DO_OK
+endif
+
+
+# The old /dev/imt1 entry is now just a link to /dev/imt1o.
+echo -n "Creating /dev/imt fifo pipes link ... "
+set file = /dev/imt1
+
+set err_seen = 0
+if (-e $file) then
+ if ("`$LS -l $file | grep imt1o`" == "") then
+ if ($exec == yes) then
+ RM $file
+ ln -s /dev/imt1o $file
+ endif
+ endif
+else
+ if ($exec == yes) then
+ ln -s /dev/imt1o $file
+ endif
+endif
+if (("$err_seen" == 0 && -e $file) || $exec == "no") then
+ DO_OK
+else
+ DO_FAIL
+ set err_count = `expr $err_count + 1`
+endif
+
+_no_pipes:
+
+if ($mach == "cygwin") then
+ echo -n "Creating special graphcap file ... "
+ cp $iraf/dev/graphcap.inet $iraf/dev/graphcap
+ DO_OK
+endif
+
+#=============================================================================
+# Install the default IMTOOLRC frame buffer configuration file. The path
+# /usr/local/lib path hardwired in to imtool and cannot easily be changed, but
+# if installation of the default imtoolrc in this directory is not possible,
+# the file can be installed in each imtool user's login directory as .imtoolrc,
+# or the environment variable IMTOOLRC can be defined in each imtool user's
+# .login or .cshrc to define the path to the file.
+#=============================================================================
+
+# Verify imtoolrc link.
+echo -n "Checking /usr/local/lib directory ... "
+if (! -e /usr/local/lib) then
+ if ($exec == yes) then
+ if (! -e /usr/local) then
+ mkdir /usr/local
+ endif
+ mkdir /usr/local/lib
+ if (-d /usr/local/lib) then
+ DO_OK
+ else
+ DO_FAIL
+ set err_count = `expr $err_count + 1`
+ endif
+ else
+ DO_OK
+ endif
+else
+ DO_OK
+endif
+
+
+# Verify or set the IMTOOLRC link.
+if ($exec == yes) then
+ cd /usr/local/lib
+endif
+set file1 = imtoolrc
+set file2 = $iraf/dev/imtoolrc
+
+echo -n "Creating /usr/local/lib/imtoolrc link ... "
+
+set err_seen = 0
+if (-e $file1) then
+ if ("`$LS $file1`" == "$file1") then
+ if ("`$LS -l $file1 | grep $file2`" == "") then
+ if ($exec == yes) then
+ RM $file1
+ ln -s $file2 $file1
+ endif
+ endif
+ endif
+else
+ if ($exec == yes) then
+ ln -s $file2 $file1
+ endif
+endif
+if (("$err_seen" == 0 && -e $file1) || $exec == "no") then
+ DO_OK
+else
+ DO_FAIL
+ set err_count = `expr $err_count + 1`
+endif
+
+
+#=============================================================================
+# Make sure there are entries in the the termcap and graphcap files for xgterm
+# and imtool. This is almost a no-op however we check in case there's an
+# ancient local version which may have been replaced repeatedly rather than
+# diff/merged over time.
+#=============================================================================
+
+echo -n "Checking if termcap file contains an XGterm entry ... "
+set temp = `grep -l xgterm $iraf/dev/termcap | grep -v '^#'`
+if ("$temp" == "") then
+ DO_FAIL
+ set err_count = `expr $err_count + 1`
+else
+ DO_OK
+endif
+
+echo -n "Checking graphcap file for XGterm/imtool entries ... "
+set gcok = yes
+foreach i (xgterm imtool)
+ set temp = `grep -l $i $iraf/dev/graphcap | grep -v '^#'`
+ if ("$temp" == "" && "$gcok" == "yes") then
+ DO_FAIL
+ set err_count = `expr $err_count + 1`
+ set gcok = no
+ endif
+end
+if ($gcok == yes) then
+ DO_OK
+endif
+
+if ("$err_count" > 0) then
+ goto fini_
+endif
+
+
+
+##############################################################################
+#
+# Step 3: POST-INSTALL CONFIGURATION
+#
+# Do some of the post-installation config required of all systems.
+# This involves:
+#
+# 1) Creating a dev$tapecap for this system
+# 2) Adding machine to dev$hosts file
+# 3) Check for display servers
+# 4) Check for graphics terminals
+# 5) Delete unused HSI binaries
+# 6) Strip system sources
+#
+##############################################################################
+
+# Begin configuration.
+# --------------------
+
+set err_seen = 0
+
+NEWLINE ; NEWLINE
+BOLD_ON
+echo "========================================================================"
+echo "===================== Post-Install Configuration ====================="
+echo "========================================================================"
+BOLD_OFF
+NEWLINE
+
+
+echo " The system should be fully functional at this point however some"
+echo "post-install configuration may be required to make use of all the"
+echo "features such as networking or tape access. Additional software such"
+echo "as external packages or display servers will need to be installed"
+echo "separately. Some minimal configuration can be accomplished now but"
+echo -n "you should consult the "
+BOLD_ON
+echo -n "IRAF Site Manager's Guide"
+BOLD_OFF
+echo " for a more complete"
+echo "discussion of IRAF system management, configuration of printers, etc."
+
+NEWLINE
+post_install_:
+PROMPT "Proceed to post-install configuration stage? "
+set ans = "$<"
+if ("$ans" == "" || "$ans" == "y") then
+ NEWLINE
+ BOLD_ON
+ echo "------------------------------------------------------------------------"
+ BOLD_OFF
+else if ("$ans" == "help" || "$ans" == "h" || "$ans" == "?") then
+ NEWLINE
+ MSG " If you continue, some minimal configuration of the IRAF net-"
+ MSG "working and tapecap file will be performed. Additional checks"
+ MSG "on the availability of display servers and graphics terminals will"
+ MSG "also be done."
+ NEWLINE
+ goto post_install_
+else if ("$ans" == "no" || "$ans" == "n") then
+ NEWLINE; NEWLINE
+ goto fini_
+else if ("$ans" == "q" || "$ans" == "quit") then
+ exit 0
+else
+ echo "Huh?"
+ goto post_install_
+endif
+
+
+#==============================================================================
+# Set up the dev$hosts file to enable iraf networking on this system.
+#==============================================================================
+
+
+# Get the networking values.
+set hname = "`hostname`"
+set lhost_abbr = `hostname | awk '{printf ("%16.16s\n", $1 ) }'`
+set ihosts = $iraf/dev/hosts
+set tmp_host = /tmp/_host$$
+
+
+if (`echo $hname | grep "\."` != "") then
+ # When using FQDN lnode may not be set....
+ set is_fqdn = yes
+ set domain = "`hostname | sed -e 's/^[a-zA-Z0-9_\-]*\.//g'`"
+ set lhost = "`hostname | sed -e 's/\.[a-zA-Z0-9]*//g'`"
+else
+ set is_fqdn = no
+ set domain = "<unknown>"
+ set lhost = $hname
+endif
+set nnode = "`hostname`"
+
+# Compute the recommended hosts entry.
+set irafks = $iraf/bin.$mach/irafks.e
+set bang = '\\!'
+if ("$is_fqdn" == "no") then
+ set rec = `echo $lhost " : " ${hname}${bang}${irafks}`
+else
+ set rec = `echo $lhost $lhost_abbr " : " ${nnode}${bang}${irafks}`
+endif
+
+
+
+NEWLINE
+BOLD_ON
+echo " IRAF Networking Config"
+echo " ----------------------"
+BOLD_OFF
+NEWLINE
+
+echo " IRAF Networking can be used to access a remote image, tape device,"
+echo "display server, or other network service. It's configuration is not"
+echo "a requirement for normal IRAF operations and it can be updated at any"
+echo 'time by editing the IRAF dev$hosts file with new entries.'
+NEWLINE
+echo " In this stage we will add an entry for the current platform to the"
+echo "hosts file. In a local network installation this script should be run"
+echo "on each system to add a networking entry as well as to install other"
+echo "system files needed by IRAF."
+
+net_conf_:
+NEWLINE
+PROMPT "Configure IRAF Networking on this machine? "
+set ans = "$<"
+if ("$ans" == "" || "$ans" == "y") then
+
+ # Check to see if the current machine is already in the hosts file.
+ set overwrite = 0
+ set have_entry = 0
+ grep $lhost $ihosts >& /dev/null
+ if ($status == 0) then
+ # Compare the recommended entry with the one already in the file.
+ echo $rec >& /tmp/_net_rec.$$
+ grep $lhost $ihosts >& /tmp/_net_exists.$$
+ diff -bitw /tmp/_net_rec.$$ /tmp/_net_exists.$$ >& /dev/null
+ if ($status == 0) then
+ RM /tmp/_net_*.$$
+ set have_entry = 1
+ NEWLINE
+ echo "Host '$lhost' exists with recommended entry in $ihosts."
+ NEWLINE
+ goto net_proc_
+
+ else
+ RM /tmp/_net_*.$$
+ NEWLINE
+ echo "Host '$lhost' exists with entry in $ihosts other than what"
+ echo "would be computed by this script:"
+ NEWLINE
+ echo ' Recommended dev$hosts file entry used for this machine: '
+ NEWLINE
+ if ("$is_fqdn" == "no") then
+ echo " "$lhost " : "$hname"\!"$irafks
+ else
+ echo " "$lhost $lhost_abbr " : " $nnode"\!"$irafks
+ endif
+ NEWLINE
+ echo ' Existing entry found in the dev$hosts file: '
+ NEWLINE
+ echo -n " "; grep $lhost $ihosts
+ NEWLINE
+
+net_overwrite_:
+ NEWLINE
+ PROMPT_N "Overwrite the existing entry with recommended one?"
+ set ans = "$<"
+ if ("$ans" == "" || "$ans" == "no" || "$ans" == "n") then
+ set overwrite = 0
+ goto net_check_
+ else if ("$ans" == "y" || "$ans" == "yes") then
+ set overwrite = 1
+ # fall through
+ else if ("$ans" == "help" || "$ans" == "h" || "$ans" == "?") then
+ NEWLINE
+ MSG "Answering 'yes' will replace the entry in the file"
+ MSG "with the one created by this script, answering 'no'"
+ MSG "will leave the current entry (which may be correct)"
+ MSG "intact."
+ NEWLINE
+ goto net_overwrite_
+ else if ("$ans" == "q" || "$ans" == "quit") then
+ exit 0
+ else
+ echo "Huh? "
+ goto net_overwrite_
+ endif
+
+ endif
+
+ else
+ # This host isn't currently in the file.
+net_rec_:
+ NEWLINE
+ echo 'Recommended dev$hosts file entry used for this machine: '
+ NEWLINE
+ if ("$is_fqdn" == "no") then
+ echo " "$lhost " : "$hname"\!"$irafks
+ else
+ echo " "$lhost $lhost_abbr " : " $nnode"\!"$irafks
+ endif
+ NEWLINE
+
+net_proc_:
+ PROMPT "Proceed with this entry? "
+ set ans = "$<"
+ if ("$ans" == "" || "$ans" == "y") then
+ ;
+ else if ("$ans" == "help" || "$ans" == "h" || "$ans" == "?") then
+ NEWLINE
+ MSG 'If you continue the recommended entry will be added to the'
+ MSG "IRAF dev$hosts file as is, otherwise you will be asked if"
+ MSG "you wish to edit the file manually."
+ NEWLINE
+ goto net_proc_
+
+ else if ("$ans" == "q" || "$ans" == "quit") then
+ exit 0
+ else if ("$ans" == "no" || "$ans" == "n") then
+net_edit_:
+ PROMPT 'Do you wish to edit the dev$hosts file manually? '
+ set ans = "$<"
+
+ if ("$ans" == "" || "$ans" == "y") then
+ if ($?EDITOR) then
+ $EDITOR $ihosts
+ else
+ vi $ihosts
+ endif
+ goto net_check_
+ else if ("$ans" == "no" || "$ans" == "n") then
+ MSG "Skipping network configuration."
+ goto net_check_
+ else if ("$ans" == "q" || "$ans" == "quit") then
+ exit 0
+ else if ("$ans" == "help" || "$ans" == "h" || "$ans" == "?") then
+ NEWLINE
+ MSG 'If you say yes you will be allowed to edit the dev$hosts'
+ MSG "file manually. You should use the existing entries as a"
+ MSG "template. Be sure the host name and iraf path are correct"
+ MSG "for this machine."
+ NEWLINE
+ goto net_edit_
+ else
+ echo "Huh? "
+ goto net_edit_
+ endif
+ else
+ echo "Huh?"
+ goto net_proc_
+ endif
+
+ endif
+
+ # If we have an entry already in the file skip ahead to the check.
+ if ($have_entry == 1) then
+ goto net_check_
+ endif
+
+ # When exported to other sites the default dev$hosts file is the one
+ # configured for the NOAO network. Check to see whether we really *are*
+ # running at NOAO so we don't wipe this out assuming it's a fresh install
+ # and we can treat the file as an existing installation (i.e. append to
+ # the hosts file).
+ set is_noao = 0
+ ifconfig -a |& grep 140.252 >& /dev/null
+ if ($status == 0) then
+ set is_noao = 1
+ endif
+
+ grep kpno.noao.edu $ihosts >& /dev/null
+ if ($status == 0 && $is_noao == 0) then
+ # If we're here then the hosts file is the NOAO default, but we are
+ # not running on an NOAO network machine. So, we want to initialize
+ # the hosts file by getting rid of the NOAO hosts, adding a standard
+ # "header" and adding the current platform.
+
+ NEWLINE
+ echo 'Creating backup of default dev$hosts file...'
+ if ($exec == yes) then
+ cp $iraf/dev/hosts $iraf/dev/hosts.ORIG
+ endif
+
+ echo 'Initializing dev$hosts file ...'
+
+
+ echo "# HOSTS -- IRAF local network host table." > $tmp_host
+ echo "" >> $tmp_host
+ echo -n "# Logical nodes (lpnode = line printer" >> $tmp_host
+ echo "output, plnode = plotter output)." >> $tmp_host
+ echo "#lpnode : @ursa" >> $tmp_host
+ echo "#plnode : @ursa" >> $tmp_host
+ echo "" >> $tmp_host
+ echo "# Host table." >> $tmp_host
+ echo "" >> $tmp_host
+
+ if ("$is_fqdn" == "no") then
+ echo $lhost $hname $iraf/bin.$mach/irafks.e | \
+ awk '{printf("%-16s\t: %s\!%s\n",$1,$2,$3)}' >> $tmp_host
+ else
+ echo $lhost $lhost_abbr $hname $iraf/bin.$mach/irafks.e | \
+ awk '{printf("%-16s %s\t: %s\!%s\n",$1,$2,$3,$4)}' >> $tmp_host
+ endif
+
+ # Copy the header to the file
+ if ($exec == yes) then
+ cp $tmp_host $ihosts
+ else
+ cat $tmp_host
+ endif
+
+ RM $tmp_host
+ echo "Host '$hname' has been added to the network configuration file..."
+
+ else
+ # If we get to this point we're appending a hosts file that is
+ # correct for the current network, NOAO or not.
+
+
+ # Pull off the file "header" and "data" to separate segments.
+ head -7 $ihosts >& /tmp/_hhdr$$
+ if ($overwrite == 1) then
+ more +8 $ihosts | grep -v $lhost >& /tmp/_hdat$$
+ else
+ more +8 $ihosts >& /tmp/_hdat$$
+ endif
+
+ if ("$is_fqdn" == "no") then
+ echo $lhost $hname $iraf/bin.$mach/irafks.e | \
+ awk '{printf("%-16s\t: %s\!%s\n",$1,$2,$3)}' >> /tmp/_hdat$$
+ else
+ echo $lhost $lhost_abbr $hname $iraf/bin.$mach/irafks.e | \
+ awk '{printf("%-16s %s\t: %s\!%s\n",$1,$2,$3,$4)}' >> /tmp/_hdat$$
+ endif
+
+net_sort_:
+ # See if we want to sort the file.
+ PROMPT "Do you want to sort the hosts file by node name? "
+ set ans = "$<"
+ if ("$ans" == "" || "$ans" == "y" || "$ans" == "yes") then
+ sort /tmp/_hdat$$ >& /tmp/_hsdat$$
+ else if ("$ans" == "no" || "$ans" == "n") then
+ cp /tmp/_hdat$$ /tmp/_hsdat$$
+ else if ("$ans" == "help" || "$ans" == "h" || "$ans" == "?") then
+ NEWLINE
+ MSG "Answering 'yes' will sort the hosts file."
+ NEWLINE
+ goto net_sort_
+ else if ("$ans" == "quit" || "$ans" == "q") then
+ exit 0
+ else
+ echo "Huh? "
+ goto net_sort_
+ endif
+
+ # Finally, put together the hosts file.
+ cat /tmp/_hhdr$$ /tmp/_hsdat$$ >& $tmp_host
+
+ # Copy the header to the file
+ if ($exec == yes) then
+ cp $tmp_host $ihosts
+ else
+ cat $tmp_host
+ endif
+
+ RM $tmp_host /tmp/_hhdr$$ /tmp/_hdat$$ /tmp/_hsdat$$
+ endif
+
+
+ # Host should be added to the dev$hosts file, let's check to see that
+ # it actually works...
+
+ # See what NETSTATUS says about this setup.
+net_check_:
+ NEWLINE
+ echo -n "Checking that iraf networking is properly enabled ... "
+ echo -n " "
+ set system = $iraf/bin.$mach/x_system.e
+ setenv iraf $iraf/
+ set errstat = 0
+ if (-e $system) then
+ set net = `$system netstatus | grep -i "interface disabled"`
+ if ("$net" == "") then
+ DO_OK
+ else
+ DO_FAIL ; set errstat = 1
+ NEWLINE
+ MSG "The NETSTATUS task claims that networking is disabled."
+ MSG "Please contact http://iraf.net with questions or check"
+ MSG "the Site Manager's Guide for details on how to properly"
+ MSG "configure networking."
+ NEWLINE
+ endif
+ else
+ DO_FAIL ; set errstat = 1
+ NEWLINE
+ MSG "The NETSTATUS task binary could not be executed or does not"
+ MSG "exist. Please contact http://iraf.net with questions or"
+ MSG "check the Site Manager's Guide for details on how to properly"
+ MSG "configure networking."
+ NEWLINE
+ endif
+
+net_restart_:
+ if ($errstat == 1) then
+ PROMPT "Would you like to return to networking setup? "
+ set ans = "$<"
+ if ("$ans" == "" || "$ans" == "y" || "$ans" == "yes") then
+ goto net_conf_
+ else if ("$ans" == "n" || "$ans" == "no") then
+ ; # fall through
+ else if ("$ans" == "h" || "$ans" == "help" || "$ans" == "?") then
+ NEWLINE
+ MSG "Answering 'yes' will return you to the top of the networking"
+ MSG "configuration where you can make changes. Answering 'no'"
+ MSG "will leave the current (unworking) configuration in place."
+ NEWLINE
+ goto net_restart_
+ else if ("$ans" == "q" || "$ans" == "quit") then
+ exit 1
+ else
+ echo "Huh? "
+ goto net_restart_
+ endif
+ endif
+
+else if ("$ans" == "help" || "$ans" == "h" || "$ans" == "?") then
+ NEWLINE
+ MSG 'If you continue a recommended entry can be added to the'
+ MSG 'IRAF dev$hosts file, otherwise you will be asked if'
+ MSG "you wish to edit the file manually."
+ NEWLINE
+ goto net_conf_
+else if ("$ans" == "q" || "$ans" == "quit") then
+ exit 0
+else if ("$ans" == "no" || "$ans" == "n") then
+ NEWLINE
+ goto end_net_
+else
+ echo "Huh?"
+ goto net_conf_
+endif
+
+end_net_:
+BOLD_ON
+echo "------------------------------------------------------------------------"
+BOLD_OFF
+
+NEWLINE
+
+
+#==============================================================================
+# Set up the default tapecap file for the machine.
+#==============================================================================
+
+# Skip the configuration if the system already has a default dev$tapecap
+# file. We only need to do this for e.g. PC-IRAF systems where we need
+# to create a default based on the OS version.
+
+if (! $do_tapecaps ) then
+ goto skip_tape_
+endif
+
+
+NEWLINE
+BOLD_ON
+echo " Tapecap Device File Config"
+echo " --------------------------"
+BOLD_OFF
+NEWLINE
+
+echo ' By default IRAF will search for a dev$tapecap.<node> file (where'
+echo "<node> is the system name) when looking for a tape configuration file."
+echo "Platforms such as PC-IRAF and Sun/IRAF support multiple OS versions"
+echo "and so the proper template file must be used. This configuration will"
+echo "allow you to setup a default tapecap for this system, it may be skipped"
+echo "if this machine has no tape drive attached."
+NEWLINE
+
+tape_conf_:
+PROMPT "Create a default tapecap file? "
+set ans = "$<"
+if ("$ans" == "" || "$ans" == "y") then
+
+ # Figure out what the template should be.
+ if ($pciraf == 1) then
+ if ("$UNAME" == "linux") then
+ set tapefile = "tapecap.linux"
+ else if ("$UNAME" == "sunos") then
+ set tapefile = "tapecap.solaris"
+ else if ("$UNAME" == "freebsd") then
+ set tapefile = "tapecap.freebsd"
+ endif
+ else if ($suniraf == 1) then
+ setenv OSVERSION `$uname_cmd -r | cut -c1`
+ if ($OSVERSION == 5) then
+ set tapefile = "tapecap.solaris"
+ else
+ set tapefile = "tapecap.sunos"
+ endif
+ else
+ set tapefile = tapecap.$UNAME
+ endif
+
+ # Get the (possibly abbreviated) local host name.
+ set lhost = `hostname | awk '{printf ("%16.16s\n", $1 ) }'`
+
+ set file1 = $iraf/dev/tapecap.$lhost
+ set file2 = $tapefile
+ if (! -e $file1) then
+tape_link1_:
+ echo "Creating default file 'tapecap.$lhost' from $tapefile..."
+ if ($exec == yes) then
+ chdir $iraf/dev
+ if (-e $file1) then
+ # Remove the link in case it exists but points to a file
+ # which doesn't.
+ RM tapecap.$lhost >& /dev/null
+ endif
+ ln -s $tapefile tapecap.$lhost
+ endif
+ else
+ if ("`$LS -l $file1 | grep $file2`" != "") then
+ echo "Tapecap symlink 'tapecap.$lhost' exists and is ok."
+ else
+ echo "Tapecap symlink 'tapecap.$lhost' exists but is invalid...."
+ echo "Deleting invalid link...."
+ if ($exec == yes) then
+ RM $file1 >& /dev/null
+ endif
+ goto tape_link1_
+ endif
+ endif
+
+
+ # See if we want to make this the dev$tapecap default.
+ NEWLINE ; NEWLINE
+ echo ' In the event a dev$tapecap.<node> file is not found on this'
+ echo 'system IRAF will fallback to use just dev$tapecap. In cases where'
+ echo 'the node name changes, this installation is shared with another'
+ echo 'machine or in a local network, or any case where a tapecap.<node>'
+ echo 'is not found, the dev$tapecap file will be the default tapecap used'
+ echo "for all IRAF systems."
+ echo ""
+
+
+tape_def_:
+ PROMPT 'Do you wish to create a default dev$tapecap link? '
+ set ans = "$<"
+ if ("$ans" == "" || "$ans" == "y") then
+
+ set file1 = $iraf/dev/tapecap
+ if (! -e $file1) then
+tape_link2_:
+ echo -n 'Creating default dev$tapecap link to dev$'
+ echo "$tapefile..."
+ if ($exec == yes) then
+ chdir $iraf/dev
+ if (-e $file1) then
+ # Remove the link in case it exists but points to a file
+ # which doesn't.
+ RM tapecap >& /dev/null
+ endif
+ ln -s $tapefile tapecap
+ endif
+ else
+ if ("`$LS -l $file1 | grep $tapefile`" != "") then
+ echo "Tapecap symlink 'tapecap' exists and is ok."
+ else
+ echo "Tapecap symlink 'tapecap' exists but is invalid...."
+ echo "Deleting invalid link...."
+ if ($exec == yes) then
+ RM $file1 >& /dev/null
+ endif
+ goto tape_link2_
+ endif
+ endif
+
+ else if ("$ans" == "no" || "$ans" == "n") then
+ ;
+ else if ("$ans" == "q" || "$ans" == "quit") then
+ exit 0
+ else if ("$ans" == "help" || "$ans" == "h" || "$ans" == "?") then
+ NEWLINE
+ MSG 'A dev$tapecap file is the fallback file used if there is no'
+ MSG "tapecap.<node> file found. If you continue a link will be made"
+ MSG "to the template file appropriate for this machine."
+ NEWLINE
+ goto tape_def_
+ else
+ echo "Huh?"
+ goto tape_def_
+ endif
+
+else if ("$ans" == "q" || "$ans" == "quit") then
+ exit 0
+else if ("$ans" == "no" || "$ans" == "n") then
+ NEWLINE
+ goto end_tape_
+else if ("$ans" == "help" || "$ans" == "h" || "$ans" == "?") then
+ NEWLINE
+ MSG "If you continue a default tapecap appropriate for this system"
+ MSG 'will be created in the $iraf/dev directory'
+ NEWLINE
+ goto tape_conf_
+else
+ echo "Huh?"
+ goto tape_conf_
+endif
+
+end_tape_:
+BOLD_ON
+echo "------------------------------------------------------------------------"
+BOLD_OFF
+
+NEWLINE
+skip_tape_:
+
+
+
+#==============================================================================
+# Delete the unused HSI binaries in the system to recover disk space.
+#==============================================================================
+
+if ($pciraf == 0 && $suniraf == 0) then
+ goto skip_hsi_del_
+endif
+
+
+# Get the set of currently installed system binaries.
+set archs = ""
+foreach i ($iraf/bin.*)
+ set dir = $i:t
+ if ($dir:r == "bin") then
+ set sz = `(chdir $i ; du -s | awk '{printf ("%d", $1)}')`
+ if (`$LS -lL $i | wc -l` > 1) then
+ if (-e "$i/cl.e" && -e "$i/x_system.e") then
+ # Save the list of installed binaries, allow for changes between
+ # the binary arch and HSI arch here (e.g. ssun->ssol).
+ if ("$dir:e" == "ssun") then
+ set archs = `echo $archs ssol`
+ else
+ set archs = `echo $archs $dir:e`
+ endif
+ endif
+ endif
+ endif
+end
+
+
+
+# Check for HSI bin directories.
+set delete_bin = ""
+set empty_bin = ""
+foreach i ($iraf_p/iraf/unix/bin.*)
+ set dir = $i:t
+ if ($dir:r == "bin") then
+ set sz = `(chdir $i ; du -s | awk '{printf ("%d", $1)}')`
+ if (`$LS -lL $i | wc -l` > 1) then
+ set d = `$LS $LSDF $i/* | head -2 | tail -1`
+ if ("`echo $archs | grep $dir:e`" == "") then
+ set delete_bin = `echo $delete_bin $dir`
+ endif
+ else
+ if ($sz > 8 && "`echo $archs | grep $dir:e`" == "") then
+ set delete_bin = `echo $delete_bin $dir`
+ endif
+ endif
+ else
+ continue
+ endif
+end
+
+# If there were no unused bin directories found then skip this section.
+if ("$delete_bin" == "") then
+ goto end_hsi_del_
+endif
+
+
+
+NEWLINE
+BOLD_ON
+echo " Delete Unneeded HSI Binaries"
+echo " ----------------------------"
+BOLD_OFF
+NEWLINE
+
+echo ' The following bin directories in the iraf$unix directories were'
+echo "found to be unused on this machine:"
+NEWLINE
+set tot = 0
+foreach i ($delete_bin)
+ set p = `echo $iraf/unix/$i | sed -e 's://:/:g'`
+ set sz = `du -s $p`
+ set tot = `expr $tot + $sz[1]`
+ echo $sz[1] $p | awk '{printf ("\t (%5d Kb)\t%s\n", $1, $2)}'
+end
+set tot = `expr $tot / 1000`
+NEWLINE
+echo "The contents of these directories may be safely deleted to reclaim"
+echo "about $tot Mb of disk space without affecting the IRAF runtime system."
+NEWLINE
+
+
+hsi_del_:
+PROMPT "Do you wish to delete these unused HSI binaries? "
+set ans = "$<"
+if ("$ans" == "" || "$ans" == "y") then
+ NEWLINE
+ chdir $iraf/unix
+ foreach i ($delete_bin)
+ echo -n "Delete HSI binaries in $i ... "
+ if ($exec == yes) then
+ if (-e $i) then
+ rm -rf $i/*
+ DO_OK
+ else
+ DO_FAIL
+ NEWLINE
+ MSG "Hmm, I can't find '$i' in '$cwd', skipping..."
+ NEWLINE
+ endif
+ else
+ # No-op okay
+ DO_OK
+ endif
+ end
+else if ("$ans" == "q" || "$ans" == "quit") then
+ exit 0
+else if ("$ans" == "no" || "$ans" == "n") then
+ NEWLINE
+ goto end_hsi_del_
+else if ("$ans" == "help" || "$ans" == "h" || "$ans" == "?") then
+ NEWLINE
+ MSG "This system contains binaries needed for multi-architecture"
+ MSG "support, however you do not appear to need all of the binaries"
+ MSG "supplied. Removing uneeded binaries can recover some disk"
+ MSG "space that could be used for data."
+ NEWLINE
+ goto hsi_del_
+else
+ echo "Huh?"
+ goto hsi_del_
+endif
+
+end_hsi_del_:
+BOLD_ON
+echo "------------------------------------------------------------------------"
+BOLD_OFF
+
+NEWLINE
+skip_hsi_del_:
+
+
+#==============================================================================
+# Strip the system sources.
+#==============================================================================
+
+NEWLINE
+BOLD_ON
+echo " Strip IRAF System Sources"
+echo " -------------------------"
+BOLD_OFF
+NEWLINE
+
+echo " Source code for all IRAF tasks and interfaces is included with this"
+echo "installation, but is strictly only required if you plan to develop this"
+echo "code. The sources may be deleted from the system without affecting the"
+echo "runtime environment (including help pages, compilation of external pack-"
+echo "ages or local task development) allowing you to reclaim 50-60Mb of disk"
+echo "space for the system. Stripping sources is recommended for systems very"
+echo "short on space, leaving it on the system will allow IRAF site support to"
+echo "send code fixes and compilation instructions as needed to fix problems"
+echo "which have no other workaround."
+NEWLINE
+
+strip_:
+PROMPT_N "Do you wish to strip the system of sources? "
+set ans = "$<"
+if ("$ans" == "y" || "$ans" == "yes") then
+ NEWLINE
+ echo -n "Stripping core system sources ... "
+ if ($exec == yes) then
+ cd $iraf
+ $lbin/mkpkg strip
+ endif
+ DO_OK
+ echo -n "Stripping NOAO package sources ... "
+ if ($exec == yes) then
+ cd $iraf/noao
+ $lbin/mkpkg -p noao strip
+ endif
+ DO_OK
+else if ("$ans" == "q" || "$ans" == "quit") then
+ exit 0
+else if ("$ans" == "" || "$ans" == "no" || "$ans" == "n") then
+ NEWLINE
+ goto end_strip_
+else if ("$ans" == "help" || "$ans" == "h" || "$ans" == "?") then
+ NEWLINE
+ MSG "Stripping system sources can recover considerable amounts of"
+ MSG "disk space while leaving a full runtime system. Sources should"
+ MSG "be stripp if there is insufficient room and you do not plan to"
+ MSG "do any development of the Core system or NOAO package."
+ NEWLINE
+ goto strip_
+else
+ echo "Huh?"
+ goto strip_
+endif
+
+#BOLD_ON
+#echo "------------------------------------------------------------------------"
+#BOLD_OFF
+
+end_strip_:
+NEWLINE
+
+
+
+#==============================================================================
+# Post-Install Verification
+#==============================================================================
+
+NEWLINE
+BOLD_ON
+echo "========================================================================"
+echo "===================== Post-Install Verification ======================"
+echo "========================================================================"
+BOLD_OFF
+NEWLINE
+
+
+#==============================================================================
+# Check for available display servers on this system.
+#==============================================================================
+
+NEWLINE
+BOLD_ON
+echo " Display Server Availability"
+echo " ---------------------------"
+BOLD_OFF
+NEWLINE
+
+set DISPLAY_SERVERS = "ximtool ximtool-alt saoimage ds9 saotng"
+
+echo "Display Servers Found on This Machine:"
+NEWLINE
+
+set found = 0
+foreach i ($DISPLAY_SERVERS)
+ set p = `which $i |& grep -i "^\/"`
+ if ($status == 0) then
+ set d = `$LS $LSDF $p | head -2 | tail -1`
+ echo $d | awk '{printf (" ( Date: %3s %2s %-5s ) ", $7, $8, $9) }'
+ echo " "`which $i`
+ set found = 1
+ endif
+end
+if ($found == 0) then
+ BOLD_ON
+ echo " No Display Servers Found"
+ BOLD_OFF
+ NEWLINE
+ MSG "No display servers were found on this machine or in the user"
+ MSG "path. A display server such as XImtool/SAOimage/SAOtng/DS9"
+ MSG "is required to be running on the local machine before an iraf"
+ MSG "display command (e.g. DISPLAY/TVMARK/IMEXAMINE) will work."
+ MSG ""
+ MSG "Remote displays (i.e. the server on one machine and IRAF on"
+ MSG "another) require either iraf networking be enabled or the X"
+ MSG "'DISPLAY' variable be set so the server appears on the remote"
+ MSG "machine."
+ MSG ""
+ MSG " XImtool can be downloaded as part of X11IRAF from:"
+ MSG ""
+ MSG " http://iraf.net/ftp/iraf/x11iraf"
+ MSG ""
+ MSG "or it's mirror sites."
+ MSG " For information on DS9 please see"
+ MSG ""
+ MSG " http://hea-www.harvard.edu/RD/ds9/"
+ MSG ""
+ MSG "Please contact http://iraf.net with questions."
+endif
+NEWLINE
+
+BOLD_ON
+echo "------------------------------------------------------------------------"
+BOLD_OFF
+
+end_servers_:
+
+
+
+#==============================================================================
+# Check for available graphics terminals on this system.
+#==============================================================================
+
+NEWLINE
+BOLD_ON
+echo " Graphics Terminal Availability"
+echo " ------------------------------"
+BOLD_OFF
+NEWLINE
+
+set GRAPHICS_TERMS = "xgterm xterm"
+
+echo "Graphics Terminals Found on This Machine:"
+NEWLINE
+
+set found = 0
+foreach i ($GRAPHICS_TERMS)
+ set p = `which $i |& grep "^\/"`
+ if ($status == 0) then
+ set d = `$LS $LSDF $p | head -2 | tail -1`
+ echo $d | awk '{printf (" ( Date: %3s %2s %-5s ) ", $7, $8, $9) }'
+ echo " "`which $i`
+ set found = 1
+ endif
+end
+if ($found == 0) then
+ BOLD_ON
+ echo " No Suitable Graphics Terminals Found"
+ BOLD_OFF
+ NEWLINE
+ MSG "No 'xterm' or 'xgterm' binary was found on this systen or"
+ MSG "in the user path. IRAF graphics require some form of "
+ MSG "graphics-enabled terminal window to be running or else"
+ MSG "garbarge characters will appear on the screen. Windows"
+ MSG "such as 'cmdtool', 'rxvt', 'aixterm', 'hpterm', 'decterm'"
+ MSG "do not support graphics and should not be used for IRAF."
+ MSG ""
+ MSG "The default terminal type is set in the login.cl when"
+ MSG "a user runs MKIRAF, this is the type of window they should"
+ MSG "be running when starting IRAF. Users can use the 'show"
+ MSG "terminal' command to see the current setting, or 'stty"
+ MSG "xterm' or 'stty xgterm' command (or rerun MKIRAF and reset"
+ MSG "the default terminal type) to change the default iraf terminal."
+ MSG ""
+ MSG "XGterm can be downloaded as part of X11IRAF from"
+ MSG ""
+ MSG " http://iraf.net/ftp/iraf/x11iraf"
+ MSG ""
+ MSG "or it's mirror sites. Xterm will normally be a part of the"
+ MSG "system, if not found please check your path."
+ MSG ""
+endif
+NEWLINE
+
+#BOLD_ON
+#echo "------------------------------------------------------------------------"
+#BOLD_OFF
+
+end_terms_:
+
+
+
+#=============================================================================
+# Finish up and set the exit status.
+#=============================================================================
+fini_:
+
+NEWLINE ; NEWLINE
+if ("$err_count" > 0) then
+ BOLD_ON
+ echo "========================================================================"
+ echo "================= Installation Completed With Errors ================="
+ echo "========================================================================"
+ BOLD_OFF
+ NEWLINE
+ exit 1
+else
+ BOLD_ON
+ echo "========================================================================"
+ echo -n "Congratulations! "
+ BOLD_OFF
+ echo "IRAF has been successfully installed on this system."
+ BOLD_ON
+ echo "========================================================================"
+ BOLD_OFF
+ NEWLINE
+ echo " To begin using the system simply log in as any user and from the"
+ echo "directory you wish to use as your iraf login directory type:"
+ echo ""
+ echo -n ' % ';
+ BOLD_ON; echo -n 'mkiraf'; BOLD_OFF
+ echo ' # create a login.cl file'
+ echo -n ' % ';
+ BOLD_ON; echo -n 'cl'; BOLD_OFF
+ echo ' # start IRAF'
+ echo ""
+ echo "The 'iraf' user is already configured with a login.cl file so a simple"
+ echo "'cl' command is sufficient to start the system."
+ NEWLINE
+ echo "Additional information can be found at the IRAF.NET web site:"
+ NEWLINE
+ BOLD_ON ; echo " http://iraf.net" ; BOLD_OFF
+ NEWLINE
+ echo "Please contact http://iraf.net with any questions or problems."
+ NEWLINE
+ NEWLINE
+
+ BOLD_ON
+ echo "========================================================================"
+ echo "================ Installation Completed With No Errors ==============="
+ echo "========================================================================"
+ BOLD_OFF
+ NEWLINE
+ exit 0
+endif
+
+cleanup_:
+ exit 0
+
+
+
+# Print usage information. We will not get here unless the "-help" flag
+# was issued.
+
+Usage:
+ echo "Usage: install [-n] [-h] [-hl] [-f] [-r rootdir] [-i imdir]"
+ echo " [-b localbindir] [-R oldroot] [-I oldimdir]"
+ echo " [-u username ] [-l locallibdir] [-m mach ]"
+ echo " [-noedit]"
+ echo ""
+ echo " where -n # no execute"
+ echo " -h # print this help summary"
+ echo " +hl # enable highlighted text"
+ echo " -hl # disable highlighted text"
+ echo " -f # create fifo pipes (if supported)"
+ echo " -r # set iraf root directory"
+ echo " -c # set cache directory"
+ echo " -i # set imdir directory"
+ echo " -b # set local bin directory"
+ echo " -l # set local lib directory"
+ echo " -R # set old iraf root directory"
+ echo " -I # set old imdir directory"
+ echo " -u # set username to own files"
+ echo " -m # set machine type (ssun, linux, etc)"
+ echo " -noedit # install but don't edit pathnames"
+ exit 0