#!/bin/csh -f # # INSTALL -- Install the X11IRAF files and binaries. # # #============================================================================ unset noclobber onintr x11iraf_cleanup_ unalias cd cp cmp echo ln mv rm sed set grep ls chmod chown pwd touch sort set path = (/sbin /usr/sbin /bin /usr/bin /usr/ucb /etc /usr/etc $path /usr /local/bin /opt/local/bin /local/bin /home/local/bin ) #============================================================================ # Global Variables. #============================================================================ set hilite = 1 #============================================================================ # Utility aliases. #============================================================================ alias PUT "mv -f \!*; 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 rmso)" 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 MSGN "(echo -n ' ';BOLD_ON;echo -n '*** ';BOLD_OFF; echo -n \!*)" alias MSGB "(echo -n ' ';BOLD_ON;echo -n '*** ';echo \!*; BOLD_OFF)" 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): ')" #============================================================================ # Get the current 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 set UNAME = "INDEF" endif switch ($UNAME) case sunos: if (`$uname_cmd -m | cut -c2-` == "86pc") then set arch = "sunos" else setenv OSVERSION `uname -r | cut -c1` if ($OSVERSION == 5) then set arch = "ssun" else set arch = "sparc" endif endif breaksw case linux: if (`$uname_cmd -m` == "ppc") then if (-f /etc/redhat-release) then set arch = "linuxppc" else set arch = "mklinux" endif else if (-f /etc/redhat-release) then set arch = "redhat" else if (-f /etc/SuSE-release) then set arch = "suse" else set arch = "linux" endif endif breaksw case darwin: set arch = "macosx" breaksw case freebsd: set arch = "freebsd" breaksw case hp-ux: set arch = "hp700" breaksw case irix: set arch = "irix" breaksw case irix64: set arch = "irix" breaksw case aix: set arch = "rs6000" breaksw case osf1: set arch = "alpha" breaksw case ultrix: set arch = "ultrix" breaksw default: echo "ERROR: No 'uname' command found to determine architecture." bad_arch: NEWLINE echo -n "Enter architecture name: " set arch = "$<" if (! -e bin.$arch) then echo -n "Invalid architecture, try again..." goto bad_arch endif breaksw endsw ############################################################################# # Process command line options. ############################################################################# set exec = yes while ("$1" != "") switch ("$1") case -n: # no execute set exec = no 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 -h: # print help summary goto Usage default: echo "install: unknown argument $1" breaksw endsw if ("$2" == "") then break else shift endif end ############################################################################# # Check that we're running as 'root' ############################################################################# if (-e /usr/bin/whoami) then set WHOAMI = `/usr/bin/whoami` else if (-e /usr/ucb/whoami) then set WHOAMI = `/usr/ucb/whoami` else if (-e /bin/whoami) then set WHOAMI = `/bin/whoami` endif if ($WHOAMI != "root" && $exec == "yes") then clear 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? " set ans = "$<" if ("$ans" != "") then if ($ans == 'n' || $ans == 'N' || $ans == 'no' || $ans == 'NO') then exit 0 endif endif NEWLINE set exec = no endif ############################################################################# # Print the banner message. ############################################################################# clear NEWLINE BOLD_ON echo " X11IRAF V1.3 Installation" echo " =========================" BOLD_OFF NEWLINE ############################################################################# # Get the X11IRAF distribution file directory, assume it's the local # directory but prompt if we don't find the files we expect. ############################################################################# set xroot = "./" do_root: if (!(-e "$xroot/bin.$arch" && \ -e "$xroot/lib.$arch" && \ -e "$xroot/app-defaults")) then echo -n "Directory containing the X11IRAF distribution files ($xroot): " set xroot = "$<" if ("$xroot" != "") then if (! (-d "$xroot")) then echo "Directory $xroot not found." NEWLINE goto do_root endif else if (! (-e "$xroot/bin.$arch" && \ -e "$xroot/lib.$arch" && \ -e "$xroot/app-defaults")) then echo " *** This directory doesn't appear to contains all the" echo " *** X11IRAF distribution files for this platform." NEWLINE set xroot = "./" goto do_root endif endif ############################################################################# # Install the binaries. ############################################################################# set xgt = `which xgterm |& grep -i "^\/"` if ($status == 0) then set d_xbin = $xgt:h else set d_xbin = /usr/local/bin endif set BINFILES = \ "ism_wcspix.e obmsh resize vximtool xgterm ximtool ximtool-alt xtapemon" NEWLINE ; BOLD_ON echo "Binary Installation:" echo "--------------------" NEWLINE ; BOLD_OFF echo " The local commands directory is the place where the commands" echo " such as 'xgterm' and 'ximtool' will be installed. This should" echo " be a directory in a common search path such as /usr/local/bin." if ("$WHOAMI" != "root") then echo " Since you are not running as the root user the files may be" echo " installed in a personal directory such as $HOME/bin" endif do_bin: NEWLINE echo -n " Local commands directory ($d_xbin): " set xbin = "$<" if ("$xbin" == "") then set xbin = $d_xbin endif # Check whether we're going to replace the existing binary or change # the directory. Use only xgterm as the test. set xgt = `which xgterm |& grep -i "^\/"` if ($status == 0) then if ("$xgt" != $xbin/xgterm) then NEWLINE echo " *** Some X11IRAF commands are already installed at a" echo " *** different location, e.g. $xgt" NEWLINE db_pr: echo -n " *** Would you like to delete these first (yes/no)? " set c = "$<" if ("$c" != "") then if ($c == 'y' || $c == 'Y' || $c == 'yes' || $c == 'YES') then NEWLINE set xgt_root = $xgt:h echo -n " Removing old binaries from $xgt_root ... " if ($exec == "yes") then foreach i ($BINFILES) /bin/rm -f $xgt_root/$i end endif echo -n " " DO_OK else NEWLINE ; NEWLINE endif else goto db_pr endif endif endif # Create the bin directory if needed. if (! -e $xbin && "$exec" == "yes") then mkdir $xbin if ($status != 0) then goto do_bin endif endif # Copy the bin files to the new directory. NEWLINE set errstat = 0 if (-e bin.$arch) then chdir bin.$arch echo -n " Installing new binaries in $xbin ..." if ("$exec" == "yes") then foreach i (*) cp $i $xbin >& /dev/null if ($status == 1) then DO_FAIL ERRMSG "Cannot copy '$i' to $xbin" set errstat = 1 break endif end endif if ($errstat == 0) then DO_OK endif chdir .. else echo " *** No bin.$arch directory found, skipping installation." endif ############################################################################# # Install the man pages. ############################################################################# if (-e /usr/local/man/man1) then set d_xman = /usr/local/man/man1 else if (-e /opt/local/man/man1) then set d_xman = /opt/local/man/man1 else if (-e /usr/man/man1) then set d_xman = /usr/man/man1 else if (-e /share/man/man1) then set d_xman = /share/man/man1 else if (-e /usr/share/man/man1) then set d_xman = /usr/share/man/man1 else set d_xman = "none found" endif NEWLINE ; NEWLINE BOLD_ON echo "Manual Page Installation:" echo "-------------------------" BOLD_OFF NEWLINE if ("$WHOAMI" != "root") then echo " Since you are not running as the root user you cannot install" echo " the manual pages for the X11IRAF tasks. These can still be" echo " read by either formatting the pages yourself with a command" echo " such as " echo " % nroff -man -tbl xgterm.1 " NEWLINE echo " or you can define the MANPATH environment variable to search" echo " this directory. For example," NEWLINE echo ' setenv MANPATH $MANPATH'":$cwd/man " else echo " Man pages are available for each of the X11IRAF tasks, some" echo " tasks will also provide online documentation. Manual pages" echo " may be installed either in the main system directory or in " echo " a local directory as long as that is accessible through a" echo " MANPATH environment variable." endif do_man: NEWLINE echo -n " Local man page directory ($d_xman): " set xman = "$<" if ("$xman" == "") then set xman = $d_xman endif # Create the man directory if needed. if (! -e $xman && "$exec" == "yes") then mkdir $xman if ($status != 0) then goto do_man endif endif # Copy the man pages to the new directory. NEWLINE set errstat = 0 if (-e man) then chdir man echo -n " Installing man pages at $xman ..." if ("$exec" == "yes") then foreach i (*) cp $i $xman >& /dev/null if ($status == 1) then DO_FAIL ERRMSG "Cannot copy '$i' to $xman" set errstat = 1 break endif end endif if ($errstat == 0) then DO_OK endif chdir .. else echo " *** No 'man' directory found, skipping installation." endif ############################################################################# # Install the app-defaults files. ############################################################################# if (-d /usr/lib/X11/app-defaults) then set d_xapp = /usr/lib/X11/app-defaults else if (-d /etc/X11/app-defaults) then set d_xapp = /usr/lib/app-defaults else if (-d /usr/X11R6/lib/app-defaults) then set d_xapp = /usr/X11R6/lib/app-defaults else if (-d /usr/X11R6/etc/app-defaults) then set d_xapp = /usr/X11R6/etc/app-defaults else if (-d /usr/openwin/lib/app-defaults) then set d_xapp = /usr/openwin/lib/app-defaults else if (-d /usr/lib/app-defaults) then set d_xapp = /usr/lib/app-defaults else set d_xapp = "none found" endif NEWLINE ; NEWLINE BOLD_ON echo "Application Default Resource Installation:" echo "------------------------------------------" BOLD_OFF NEWLINE echo " The app-defaults directory contains the default X resources for" echo " the XGterm task. This is not required for the program to work" echo " but provides for more readable menu entries, fonts, etc." echo " The directory is normally part of the X11 tree but may be any " echo " directory specified in an XFILESEARCHPATH environment variable." do_app: NEWLINE echo -n " System app-defaults directory ($d_xapp): " set xapp = "$<" if ("$xapp" == "") then set xapp = $d_xapp endif # Create the app-defaults directory if needed. if (! -e $xapp && "$exec" == "yes") then mkdir $xapp if ($status != 0) then goto do_app endif endif # Copy the app-defaults files to the new directory. NEWLINE set errstat = 0 if (-e app-defaults) then chdir app-defaults echo -n " Installing app-defaults in $xapp ..." if ("$exec" == "yes") then foreach i (*) cp $i $xapp >& /dev/null if ($status == 1) then DO_FAIL ERRMSG "Cannot copy '$i' to $xapp" set errstat = 1 break endif end endif if ($errstat == 0) then DO_OK endif chdir .. else echo " *** No 'app-defaults' directory found, skipping installation." endif ############################################################################# # Install the (optional) CDL library. ############################################################################# set d_xlib = /usr/local/lib set d_xinc = /usr/local/include NEWLINE ; NEWLINE BOLD_ON echo "Client Display Library (CDL) Installation:" echo "------------------------------------------" BOLD_OFF NEWLINE echo " The CDL is an interface for C/Fortran programs to display images" echo " to XImtool and compatible display servers. This library is not" echo " required in the runtime system for XImtool but can be useful for" echo " developing local applications needing a display capability." echo " The local lib directory is the place where the CDL library file " echo " will be installed, the local include directory is where the needed" echo " nclude files for the library will be installed." do_lib: NEWLINE echo -n " Would you like to install this library? (yes): " set ans = "$<" set ans = `echo $ans | tr A-Z a-z` if ("$ans" != "n" && "$ans" != "no") then NEWLINE echo -n " Local lib directory ($d_xlib): " set xlib = "$<" if ("$xlib" == "") then set xlib = $d_xlib endif # Create the local lib directory if needed. if (! -e $xlib && "$exec" == "yes") then mkdir $xlib if ($status != 0) then goto do_lib endif endif # Copy the library files to the new directory. NEWLINE set errstat = 0 if (-e lib.$arch) then chdir lib.$arch echo -n " Installing CDL libraries in $xlib ..." if ("$exec" == "yes") then foreach i (libcdl.a) cp $i $xlib >& /dev/null if ($status == 1) then DO_FAIL ERRMSG "Cannot copy '$i' to $xlib" set errstat = 1 break endif end endif if ($errstat == 0) then DO_OK endif chdir .. else echo " *** No lib.$arch directory found, skipping installation." endif # Install the include files. do_inc: NEWLINE echo -n " Local include directory ($d_xinc): " set xinc = "$<" if ("$xinc" == "") then set xinc = $d_xinc endif # Create the local lib directory if needed. if (! -e $xinc && "$exec" == "yes") then mkdir $xinc if ($status != 0) then goto do_inc endif endif # Copy the include files to the new directory. NEWLINE set errstat = 0 if (-e include) then chdir include echo -n " Installing include files in $xinc ..." if ("$exec" == "yes") then foreach i (cdl*) cp $i $xinc >& /dev/null if ($status == 1) then DO_FAIL ERRMSG "Cannot copy '$i' to $xlib" set errstat = 1 break endif end endif if ($errstat == 0) then DO_OK endif chdir .. else echo " *** No 'include' directory found, skipping installation." endif else echo " Skipping CDL library installation." endif NEWLINE echo "Installation complete." NEWLINE x11iraf_cleanup_: # Normal exit. exit 0 Usage: echo "Usage: install [-n] [-h] [-hl]" echo "" echo " where -n # no execute" echo " -h # print this help summary" echo " +hl # enable highlighted text" echo " -hl # disable highlighted text" exit 0