diff options
Diffstat (limited to 'setup.sh')
-rwxr-xr-x | setup.sh | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/setup.sh b/setup.sh new file mode 100755 index 0000000..6899113 --- /dev/null +++ b/setup.sh @@ -0,0 +1,90 @@ +#!/bin/bash +# +# Setup RAPPOR analysis on Ubuntu Trusty (Google Cloud or otherwise). +# +# For the apps/api server, you need 'install-minimal'. For the regtest, and +# Shiny apps, we need a few more R packages (ggplot2, data.table, etc.). They +# cause versioning problems, so we keep them separate. +# +# Usage: +# ./setup.sh [function name] +# If run without specifing any function it will run: install-most +# which should cover all the packages needed to run the demo. + +set -o nounset +set -o pipefail +set -o errexit + +native-packages() { + sudo apt-get update + # - build-essential for gcc compilers, invoked while installing R packages. + # - gfortran Fortran compiler needed for glmnet. + # - libblas-dev needed for limSolve. + # - python-dev is for building the fastrand extension + # + # NOTE: we get R 3.0.2 on Trusty. + sudo apt-get install build-essential gfortran libblas-dev r-base python-dev graphviz +} + +r-packages() { + # Install as root so you can write to /usr/local/lib/R. + + # glmnet, limSolve: solvers for decode.R + # RJSONIO, optparse: for decode_dist.R + # RUnit: for unit tests + # abind: for decode_test only + sudo R -e \ + 'install.packages(c("glmnet", "optparse", "limSolve", "RUnit", "abind", "RJSONIO"), repos="http://cran.rstudio.com/")' +} + +# R 3.0.2 on Trusty is out of date with CRAN, so we need this workaround. +install-plyr-with-friends() { + mkdir -p _tmp + wget --directory _tmp \ + http://cran.r-project.org/src/contrib/Archive/Rcpp/Rcpp_0.11.4.tar.gz + wget --directory _tmp \ + http://cran.r-project.org/src/contrib/Archive/plyr/plyr_1.8.1.tar.gz + sudo R CMD INSTALL _tmp/Rcpp_0.11.4.tar.gz + sudo R CMD INSTALL _tmp/plyr_1.8.1.tar.gz + sudo R -e \ + 'install.packages(c("reshape2", "ggplot2", "data.table"), repos="http://cran.rstudio.com/")' +} + +# Keep Shiny separate, since it seems to install a lot of dependencies. +shiny() { + sudo R -e \ + 'install.packages(c("shiny"), repos="http://cran.rstudio.com/")' +} + +# +# Batch +# + +install-minimal() { + native-packages + r-packages +} + +# NOTE: hasn't yet been tested on a clean machine. +install-most() { + install-minimal + install-plyr-with-friends +} + +# +# Shiny Apps / API Server +# + +# After running one of the run_app.sh scripts, see if the app returns a page. +shiny-smoke-test() { + curl http://localhost:6789/ +} + +# Then set up a "firewall rule" in console.developers.google.com to open up +# "tcp:6789". Test it from the outside. + +if test $# -eq 0 ; then + install-most +else + "$@" +fi |