| #!/usr/bin/env bash |
| # |
| # Copyright (c) 2015 Google Inc. |
| # Kevin Klues <klueska@cs.berkeley.edu> |
| # See LICENSE for details. |
| |
| function short_description() { |
| echo "Launch a Go 9pserver for Akaros" |
| } |
| |
| function usage() { |
| echo "Usage:" |
| echo " ${cmd} -h | --help" |
| echo " ${cmd} [ --gopath=<gp> ]" |
| echo " ${cmd//?/ } [ --akaros-9p-root=<mnt> ]" |
| echo " ${cmd//?/ } [ --ufs-port=<port> ]" |
| echo " ${cmd//?/ } [ --clear-mount ]" |
| echo " ${cmd//?/ } [ --rebuild-server ]" |
| echo "" |
| echo "Options:" |
| echo " -h --help Display this screen and exit" |
| echo " --gopath=<gp> The path to the go workspace" |
| echo " [default: \$GOPATH]" |
| echo " --akaros-9p-root=<mnt> The location of the akaros 9p mount point" |
| echo " [default: \$AKAROS_9P_ROOT]" |
| echo " --ufs-port=<port> Port to connect the server on" |
| echo " [default: 1025]" |
| echo " --clear-mount Clear the 9p mount folder before mounting" |
| echo " --rebuild-server Download and rebuild the 9pserver" |
| } |
| |
| function main() { |
| # Check the sanity of our incoming variables |
| check_vars gopath akaros_9p_root ufs_port clear_mount rebuild_server |
| check_dirs gopath akaros_9p_root |
| |
| # Set up the go environment variables |
| eval $(go env) |
| |
| # If we don't have a server at all, force a rebuild |
| if [ ! -f ${gopath}/bin/ufs ]; then |
| rebuild_server=true |
| fi |
| |
| # Get the latest 9p server which supports akaros |
| if [ ${rebuild_server} = true ]; then |
| echo "Downloading and installing the latest supported 9p server" |
| export GOOS=${GOHOSTOS} |
| export GOARCH=${GOHOSTARCH} |
| go get -d -u github.com/rminnich/go9p |
| go get -d -u github.com/rminnich/go9p/ufs |
| go install github.com/rminnich/go9p/ufs |
| fi |
| |
| # Clear out the ${akaros_9p_root} directory |
| if [ ${clear_mount} = true ]; then |
| echo "Clearing out ${akaros_9p_root}" |
| rm -rf ${akaros_9p_root} |
| fi |
| mkdir -p ${akaros_9p_root} |
| |
| # Kill any old instances of the ufs server on ${ufs_port} |
| ak kill-9pserver --ufs-port="${ufs_port}" |
| |
| # Start a new ufs instance on ${ufs_port} |
| nohup ${gopath}/bin/ufs -akaros=true -addr=:${ufs_port} \ |
| -root=${akaros_9p_root} >/dev/null 2>&1 & |
| echo "Started 9p server port=${ufs_port} root=${akaros_9p_root} (pid ${!})" |
| } |