[go: up one dir, main page]

Menu

[r1181]: / trunk / src / etc / fricas  Maximize  Restore  History

Download this file

237 lines (192 with data), 6.1 kB

#!/bin/sh

# Start everything for Axiom.
#
# axiom
#      [-ht   |-noht]	    whether to use HyperDoc
#      [-gr   |-nogr]	    whether to use Graphics
#      [-clef |-noclef]	    whether to use Clef
#      [-nag |-nonag]	    whether to use NAG
#      [-iw   |-noiw]	    start in interpreter window
#      [-ihere|-noihere]    start an interpreter buffer in the original window
#      [-nox]		    don't use X Windows
#      [-go  |-nogo]	    whether to start system
#      [-ws wsname]	    use named workspace
#      [-list]		    list workspaces only
#      [-grprog fname]	    use named program for Graphics
#      [-nagprog fname]	    use named program for Nag
#      [-htprog fname]	    use named program for HyperDoc
#      [-clefprog fname]    use named program for Clef
#      [-sessionprog fname] use named program for session
#      [-clientprog fname]  use named program for spadclient
#      [-h]		    show usage
#      [-eval code]         evaluate specified code at start
#      [-texmacs]           setup Fricas for communication in TeXmacs protocol
#
#

MALLOCTYPE=3.1
export MALLOCTYPE

# NAGMAN needs to know the hostname
HOST=`hostname`
export HOST

# 0. Basic utilities

ciao() {
	echo "Goodbye."
	exit 1
}

needsubopt () {
	echo "The $1 option requires an argument."
	ciao
}


showuse() {
echo "fricas"
echo "     [-nosman]            use plain command line interface (disables other options)"
echo "     [-ht   |-noht]       whether to use HyperDoc"
echo "     [-gr   |-nogr]       whether to use Graphics"
echo "     [-clef |-noclef]     whether to use Clef"
echo "     [-nag |-nonag]       whether to use NAG"
echo "     [-iw   |-noiw]       start in interpreter window"
echo "     [-ihere|-noihere]    start an interpreter buffer in the original window."
echo "     [-nox]               don't use X Windows"
echo "     [-go  |-nogo]        whether to start system"
echo "     [-ws wsname]         use named workspace"
echo "     [-list]              list workspaces only"
#echo "     [-grprog fname]      use named program for Graphics"
#echo "     [-nagprog fname]      use named program for Nag"
#echo "     [-htprog fname]      use named program for HyperDoc"
#echo "     [-clefprog fname]    use named program for Clef"
#echo "     [-sessionprog fname] use named program for session"
#echo "     [-clientprog fname]  use named program for spadclient"
echo "     [-h]                 show usage"
echo "     [-eval code]         evaluate specified code at start"
echo "     [-texmacs]           setup Fricas for communication in TeXmacs protocol"
}

# 1. Ensure the environment is set.

# Just process '-h'

if [ "$*" = "-h" ] ; then
     showuse
fi
SPADDEFAULT=/axiom/mnt/linux

if [ "$SPAD" = "" ] ; then
  if [ "$AXIOM" = "" ] ; then
    SPAD=$SPADDEFAULT
    echo "AXIOM variable is not set"
    echo "assuming AXIOM = $SPAD"
    AXIOM=$SPAD
    export AXIOM
  else
    SPAD=$AXIOM
  fi
  export SPAD
else
  if [ "$AXIOM" = "" ] ; then
    echo "AXIOM variable is not set"
    echo "but SPAD = $SPAD"
    echo "Using AXIOM = $SPAD"
    AXIOM=$SPAD
    export AXIOM
  else
    if [ ! "$SPAD" = "$AXIOM" ] ; then
       echo "ignoring SPAD variable"
       SPAD=$AXIOM
    fi
  fi
fi

if [ "$AXIOMXLROOT" = "" ] ; then 
AXIOMXLROOT=${AXIOM}/compiler
fi
export AXIOMXLROOT
PATH=$AXIOM/bin:$AXIOMXLROOT/bin:${PATH}
export PATH



if [ ! -d "$SPAD" ] ; then
  echo "The directory for Axiom, $SPAD, does not exist."
  ciao
fi

# Name the workspace directories.
rootwsdir=$SPAD/bin

# 2. Process command line arguments.
algebra_off=')set output algebra off'
texmacs_on=')set output texmacs on'
markers=")lisp (setf |\$ioHook| (lambda (x &optional args) (cond ((eq x '|startPrompt|) (princ (concat (code-char 2) \"prompt\#\") ))  ((eq x '|endOfTeXmacsOutput|) (princ (concat (code-char 5) (code-char 10)))) ((eq x '|startTeXmacsOutput|) (princ (code-char 2)))  ((eq x '|startKeyedMsg|)  (princ (concat (code-char 2) \"verbatim:\")))  ((eq x '|endOfKeyedMsg|)  (princ (code-char 5)))  ((eq x '|endOfPrompt|) (princ (code-char 5) ))  )))"


if [ "$*" = "-texmacs" ] ; then
    exec "$SPAD/bin/AXIOMsys" -- -eval "$algebra_off" -eval "$markers" -eval "$texmacs_on"
fi


if [ "$*" = "-nosman" ] ; then
    exec "$SPAD/bin/AXIOMsys"
    exit 1
fi


# Defaults for command-line arguments.
list=no
go=yes
wsname=AXIOMsys

otheropts=""

if [ ! -f $SPAD/lib/viewman ] ; then
    echo "viewman not present, disabling graphics"
    otheropts="-nogr"
fi


while [ "$*" != "" ] ; do

	case $1 in
        -list)  list=yes
                go=no;;
	-go)	go=yes ;;
	-nogo)	go=no ;;

	-ws)
		if [ "$2" = "" ] ; then needsubopt "$1" ; fi
		shift
		wsname="$1"
		;;

	-nagprog|-grprog|-htprog|-clefprog|-sessionprog|-clientprog|-paste|-rm|-rv)
		if [ "$2" = "" ] ; then needsubopt "$1" ; fi
		otheropts="$otheropts  $1 $2"
		shift
		;;
	-clef|-noclef|-gr|-nogr|-ht|-noht|-iw|-noiw|-ihere|-noihere|-nox|-nag|-nonag)
		otheropts="$otheropts $1"
		;;

	-h)
		go=no
		;;

	-eval)
                shift
                if [ -z "$*" ] ; then
                    echo "Parameter -eval must be provided with a value"
                    ciao
                else
                    patt='s,[^A-Za-z0-9],\\&,g'
                    npar=`echo "$1" | sed $patt`
                    otheropts="$otheropts -eval $npar"
                fi
                ;;

	*)	echo "Unknown option: $1"
		echo "To use a specific workspace use, e.g.: spad -ws $1"
		ciao
		;;
	esac

	shift
done

# 3. List the available workspaces, if asked

listwspaces()
{
        echo "$1"
        ls -l $2 | grep "sys$"
        echo ""
}

if [ $list = yes ] ; then
          listwspaces "AXIOM workspaces in \$AXIOM/bin = $rootwsdir: " $rootwsdir
fi

# 5. Try to ensure a suitable workspace on this host.

if [ `expr $wsname : '.*/.*'` = 0 ] ; then
	serverws=$rootwsdir/$wsname
else
	serverws=$wsname
fi

if [ ! -f $serverws ] ; then
	showuse
	ciao
fi

# 6. Start processes

if [ $go = no ] ; then
	echo "Would now start the processes."
	echo "exec $SPAD/bin/sman $otheropts -ws $serverws"
	exit 0
fi

eval "exec $SPAD/bin/sman $otheropts -ws $serverws"