blob: 689911355c4e523463601d1d9cdcad45ed732c35 [file] [log] [blame]
#!/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