#!/bin/csh
# INSTALL for 4_3 July 1996
# $Id: INSTALL,v 1.20 1999/09/14 15:15:34 rd Exp $
##########################################################################
#################      A C.elegans database    ###########################
#################   R.Durbin and J.Thierry-Mieg  #########################
#################                                #########################
#################   Installation script, june 91 #########################
##########################################################################
#
# To install ACeDB, this file and the appropriate distribution tar.Z files
# should be in the same directory. See the NOTES file to find out which
# distribution tar.Z files you need for your site. You must have write
# access in the directory to be able to run the INSTALL script.
#
# We can provide executables for most X11-Unix platforms, like SUN
# DEC stations, Next, Alliant, Silicon Graphics, IBM
# and for PC-compatibles running the freeware Unix-OS called LINUX
#
# Go to the directory and, omitting the leading #, type the command
#  source  INSTALL
#
###################################################################

echo ' '
echo ' ACEDB installation script'
echo ' '

if ($USER == "root") then
  echo ' You should not be root when installing ACEDB'
  echo ' su to some other user name and try again'
  exit
endif

echo -n " $USER"
echo ' will be known as the acedb-administrator'
echo ' '

echo ' We are going to install the acedb system in the present directory: '
echo -n "      "
pwd
echo ' This is your available disk space in this directory: '
df -k .
echo " The amount of space you need will depend on what data you are installing."
echo " For the source code and binary, you need around 15 Mb."
echo -n " Should we proceed?  Please answer yes/no : "

switch("$<")
case "yes":
case "y":
	breaksw
default:
	echo ' You did not answer yes, I quit'
        exit
        breaksw	
endsw

echo ' '
echo ' Starting the installation'

if (-e wspec/passwd.wrm ) then 
  echo ' I save the old wspec/passwd.wrm file as wspec/passwd.old'	
  \mv wspec/passwd.wrm  wspec/passwd.old
  echo ' '
endif

# next items fix problems in the tar.Z files
if (-d wdoc/code) then
  chmod 755 wdoc/code
endif
if (-d wmake/others) then
  chmod 755 wmake/others
endif

if (-d wspec) then	# save active database wspec
  if (-d wspec.save) then
    \rm -r wspec.save
  endif
  mv wspec wspec.save
endif

foreach i ( 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0b4 0 )
 foreach a ( m l k j i h g f e d c b a '')
  if (-e source.4_$i$a.tar.Z) then
    echo -n ' Restoring files from '
    echo source.4_$i$a.tar.Z
    zcat source.4_$i$a.tar.Z | tar xf -
    goto ok1;
  endif
 end
end

ok1:

chmod u+w w*/*		# in case w* comes from CVS without write access

if (-d wspec) then	# put wspec from source distribution into wspec.source
  if (-d wspec.source) then
    \rm -r wspec.source
  endif
  mv wspec wspec.source
endif

foreach i ( 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 )
  if (-e doc.4_$i.tar.Z) then
    echo -n ' Restoring files from '
    echo doc.4_$i.tar.Z
    zcat doc.4_$i.tar.Z | tar xf -
    break
  endif
end

chmod u+w w*/*		# in case w* comes from CVS without write access

setenv ace_version 4
foreach i ( 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0b4 0 )
  foreach a ( z y x w v u t s r q p o n m l k j i h g f e d c b a '')  
    foreach ff (`ls bin.*.4_$i$a.tar.Z |& grep -v match`)
      if (-e $ff) then   # use * to name all versions
        echo " Restoring files from $ff "
        if (-e bin) \rm -r bin
        zcat $ff | tar xf -
        setenv ace_version 4_$i$a
        goto ok2
      endif
    end
  end
end

ok2:

chmod u+w w*/*		# in case w* comes from CVS without write access

if (-d wspec) then	# put wspec from bin distribution into wspec.bin
  if (-d wspec.bin) then
    \rm -r wspec.bin
  endif
  mv wspec wspec.bin
endif

if (-d wspec.save) then	# restore active database wspec
  mv wspec.save wspec
endif

foreach i ( 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 \
		23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 )
  if (-e update.4-$i.tar.Z && ! -e rawdata/update.4-$i) then
    echo -n ' Restoring files from '
    echo update.4-$i.tar.Z
    ( zcat update.4-$i.tar.Z | tar xf - ) && \rm update.4-$i.tar.Z
  endif
  foreach a (WS12 WS11 WS10 WS9 WS8 WS7 WG6 WS6 WG5 WS5 WG4 WS4 WG3 WS3 )
    if (-e database.$a.4-$i.tar.Z && ! -e rawdata/update.$a.4-$i) then
      echo -n ' Restoring files from '
      echo database.$a.4-$i.tar.Z
      ( zcat database.$a.4-$i.tar.Z | tar xf - ) && \rm database.$a.4-$i.tar.Z
      goto ok3
    endif
    if (-e update.$a.4-$i.tar.Z && ! -e rawdata/update.$a.4-$i) then
      echo -n ' Restoring files from '
      echo update.$a.4-$i.tar.Z
      ( zcat update.$a.4-$i.tar.Z | tar xf - ) && \rm update.$a.4-$i.tar.Z
    endif
  end
ok3:
end

chmod u+w w*/*		# in case w* comes from CVS without write access

echo ' '
echo -n ' All files have been restored.  Hit return to proceed'
switch("$<")
default:
        breaksw	
endsw

### extra files, directories etc.

if (! -d database) mkdir database
touch database/log.wrm
echo -n "ACEDB installed " >> database/log.wrm
echo `date` >> database/log.wrm

if (-e 'wspec/passwd.old' ) then 
  echo ' '	
  echo ' I restore the old passwd file'
  \mv wspec/passwd.old wspec/passwd.wrm  
endif

# Add administrator to the passwd file

if (-e wspec/passwd.wrm) then
  setenv ADMIN `whoami`
  grep ^${ADMIN}$ wspec/passwd.wrm >! /dev/null
  if ($status) then
    echo ' '
    echo " I add $ADMIN to the password file"
    echo ' ' >> wspec/passwd.wrm
    echo -n $ADMIN >> wspec/passwd.wrm
    echo '  // Login name of the administrator installing acedb' >> wspec/passwd.wrm
  endif
endif

if (-d bin) chmod 755 bin
if (-d database) chmod 755 database
foreach i (w*)
  chmod 755 $i
end

# next lines remove SCCS stuff, and unlock any locked files
foreach i (w*)
  if (-e $i/SCCS) \rm -r $i/SCCS
  if (-e $i/CVS) \rm -r $i/CVS
end
foreach i (w*)		# by directory so glob list not too large
  if (-d $i) chmod u+w $i/*
end

# old possible subdirectories of w* (not in ace4)
if (-d wdoc/code) chmod 755 wdoc/code
if (-d wmake/others) chmod 755 wmake/others

if (-e 'bin/xace') chmod 755 bin/xace 
if (-e 'bin/tace') chmod 755 bin/tace 
if (-e 'bin/fetch') chmod 755 bin/fetch 
if (-d wscripts) chmod 755 wscripts/*
if (-e INSTALL) chmod 755 INSTALL

if (-e xace) \rm xace
if (-e tace) \rm tace
if (-e makefile) \rm makefile
if (-d wmake && -e wmake/makefile) ln -s wmake/makefile makefile

# Prepare shell scripts that should eventually be moved into /usr/local/bin

echo '#\!/bin/csh' >! acedb
echo "setenv ACEDB $cwd" >> acedb
echo "setenv DBDIR $cwd/database/" >> acedb
echo "set path = ($cwd/bin"' $path)' >> acedb
echo "xace" >> acedb
chmod 755 acedb

echo '#\!/bin/csh' >!  textace
echo "setenv ACEDB $cwd" >> textace
echo '$ACEDB/bin/tace' >> textace
chmod 755 textace

echo ' '
echo ' I have just created the files "acedb" and "textace" to run the'
echo ' graphical and command-line versions of acedb respectively.'
echo " These commands should be placed in each user's path.  To do this"
echo ' either the users can add the following to the end of their .cshrc file:'
echo -n '   set path = ($path '
echo "`pwd`)"
echo ' or preferably root should move them to /usr/local/bin by:'
echo '   mv acedb textace /usr/local/bin'
echo ' '
echo ' If you added update.* files, when you first run acedb you should choose the'
echo ' "Add Update" option from the main menu to load the updates into the database.'
echo ' '

if (-d wspec.source) then
  echo ' If you want to recompile you must set two environment variables:'
  echo -n "   setenv ACEDB_SRC "
  echo `pwd`
  echo '   setenv ACEDB_MACHINE one of SUN_4, SGI_4 etc, see wmake/truemake'
  echo ' then type "make all".  More details in the manual.'
endif
if (! -e 'bin/xace') then 
  echo " No executables - you will have to recompile." 
endif

echo ' '
echo ' If users other than yourself need write access, add their'
echo ' login names into wspec/passwd.wrm.'
echo ' '
echo ' For more information :'
echo '  a) Use the on-line help (help key or F1 or F10), while running acedb'
echo '  b) Read the manuals in directory doc if you have it'
echo '  c) Look at the WWW site: http://probe.nalusda.gov:8000/acedocs/.'
echo '  d) Use e-mail :  mieg@kaa.cnrs-mop.fr or rd@sanger.ac.uk'
echo ' '

## Report attempt to Acedb authors 

echo " If you do not object, a report of the installation will now be mailed"
echo ' to the developers of ACEDB.  This lets us track installations, which'
echo ' helps give you a better service.'
echo -n ' Should we mail this report (default yes)? '
switch("$<")
case "no":
case "n":
case "NO":
case "N":
	goto finis
	breaksw	
default:
        breaksw	
endsw

## did not go to finis - mail

echo "acedb $ace_version install attempt" > ! toto
echo `uname -a` >> toto
echo `date` >> toto
echo `whoami` >> toto
echo `pwd` >> toto
ls bin.*.Z source.*.Z update.*.Z >> toto

if (-x Mail) then
  Mail -s install.$ace_version  mieg@ncbi.nlm.nih.gov  < toto
  Mail -s install.$ace_version  rd@sanger.ac.uk  < toto
else
  mail -s install.$ace_version  mieg@ncbi.nlm.nih.gov  < toto
  mail -s install.$ace_version  rd@sanger.ac.uk  < toto
endif

echo 'This is an automatically generated report of the installation of'  >! toto1
echo 'the ACEDB database and software.' >> toto1
echo ' ' >> toto1

cat toto >> toto1

echo ' ' >> toto1
echo 'With the permission of the installer, this report was also sent to' >> toto1
echo 'the developers of ACEDB, so that they can track installations to help' >> toto1
echo 'support users.' >> toto1

mail root < toto1

\rm toto toto1

finis:

echo ' '
echo ' The installation is complete.'
echo ' After testing the program, you can archive and remove the tar.Z files.'
echo ' Please let us know if this installation script does not work.'
echo ' '
echo ' Au revoir'

## end of Installation script ##