Binary Fork Template
Some programs that need to be run are compiled binaries.
Unfortunately, this is not straightforward, because we need to use a shared file system to provide executable utilities for both Solaris and Linux systems.
Because of this, we need another intermediate symlinked script between
ISGScriptStartTemplate and the binary itself to ensure the correct executable is selected.
A precondition for this script is that
setup
has already been run properly, likely via
start_template
.
This simplifies the operation of
binary_fork_template
as it can assume it already has a sensible path.
There is a helper program that tries to report a helpful error message if the binary cannot be executed.
This could happen, for example, if the user had permission to execute
binary_fork_template
(which all users do out of necessity),
but the binaries are restricted to course accounts.
execute () {
if [ ! -x "$(new-which "$1")" ]; then
echo "Error: Cannot execute the binary for $progname ($1)" >&2
exit -1
fi
exec "$@"
}
Then, all the program has to do otherwise is determine what architecture it is running on.
To do this, it can make use of
uname
.
readonly progname="$(basename "$0" _impl)"
if [ "$(uname -s)" = "SunOS" ]; then
execute "${progname}_solaris" "$@"
else
execute "${progname}_linux" "$@"
fi
Because we know
setup
has already been run,
the only requirement is that the
_solaris
and
_linux
executables exist somewhere in the subdirectories of
~isg/bin
.