1*2abb3134SXin Li#!/bin/bash 2*2abb3134SXin Li# 3*2abb3134SXin Li# Setup RAPPOR analysis on Ubuntu Trusty (Google Cloud or otherwise). 4*2abb3134SXin Li# 5*2abb3134SXin Li# For the apps/api server, you need 'install-minimal'. For the regtest, and 6*2abb3134SXin Li# Shiny apps, we need a few more R packages (ggplot2, data.table, etc.). They 7*2abb3134SXin Li# cause versioning problems, so we keep them separate. 8*2abb3134SXin Li# 9*2abb3134SXin Li# Usage: 10*2abb3134SXin Li# ./setup.sh [function name] 11*2abb3134SXin Li# If run without specifing any function it will run: install-most 12*2abb3134SXin Li# which should cover all the packages needed to run the demo. 13*2abb3134SXin Li 14*2abb3134SXin Liset -o nounset 15*2abb3134SXin Liset -o pipefail 16*2abb3134SXin Liset -o errexit 17*2abb3134SXin Li 18*2abb3134SXin Linative-packages() { 19*2abb3134SXin Li sudo apt-get update 20*2abb3134SXin Li # - build-essential for gcc compilers, invoked while installing R packages. 21*2abb3134SXin Li # - gfortran Fortran compiler needed for glmnet. 22*2abb3134SXin Li # - libblas-dev needed for limSolve. 23*2abb3134SXin Li # - python-dev is for building the fastrand extension 24*2abb3134SXin Li # 25*2abb3134SXin Li # NOTE: we get R 3.0.2 on Trusty. 26*2abb3134SXin Li sudo apt-get install build-essential gfortran libblas-dev r-base python-dev graphviz 27*2abb3134SXin Li} 28*2abb3134SXin Li 29*2abb3134SXin Lir-packages() { 30*2abb3134SXin Li # Install as root so you can write to /usr/local/lib/R. 31*2abb3134SXin Li 32*2abb3134SXin Li # glmnet, limSolve: solvers for decode.R 33*2abb3134SXin Li # RJSONIO, optparse: for decode_dist.R 34*2abb3134SXin Li # RUnit: for unit tests 35*2abb3134SXin Li # abind: for decode_test only 36*2abb3134SXin Li sudo R -e \ 37*2abb3134SXin Li 'install.packages(c("glmnet", "optparse", "limSolve", "RUnit", "abind", "RJSONIO"), repos="http://cran.rstudio.com/")' 38*2abb3134SXin Li} 39*2abb3134SXin Li 40*2abb3134SXin Li# R 3.0.2 on Trusty is out of date with CRAN, so we need this workaround. 41*2abb3134SXin Liinstall-plyr-with-friends() { 42*2abb3134SXin Li mkdir -p _tmp 43*2abb3134SXin Li wget --directory _tmp \ 44*2abb3134SXin Li http://cran.r-project.org/src/contrib/Archive/Rcpp/Rcpp_0.11.4.tar.gz 45*2abb3134SXin Li wget --directory _tmp \ 46*2abb3134SXin Li http://cran.r-project.org/src/contrib/Archive/plyr/plyr_1.8.1.tar.gz 47*2abb3134SXin Li sudo R CMD INSTALL _tmp/Rcpp_0.11.4.tar.gz 48*2abb3134SXin Li sudo R CMD INSTALL _tmp/plyr_1.8.1.tar.gz 49*2abb3134SXin Li sudo R -e \ 50*2abb3134SXin Li 'install.packages(c("reshape2", "ggplot2", "data.table"), repos="http://cran.rstudio.com/")' 51*2abb3134SXin Li} 52*2abb3134SXin Li 53*2abb3134SXin Li# Keep Shiny separate, since it seems to install a lot of dependencies. 54*2abb3134SXin Lishiny() { 55*2abb3134SXin Li sudo R -e \ 56*2abb3134SXin Li 'install.packages(c("shiny"), repos="http://cran.rstudio.com/")' 57*2abb3134SXin Li} 58*2abb3134SXin Li 59*2abb3134SXin Li# 60*2abb3134SXin Li# Batch 61*2abb3134SXin Li# 62*2abb3134SXin Li 63*2abb3134SXin Liinstall-minimal() { 64*2abb3134SXin Li native-packages 65*2abb3134SXin Li r-packages 66*2abb3134SXin Li} 67*2abb3134SXin Li 68*2abb3134SXin Li# NOTE: hasn't yet been tested on a clean machine. 69*2abb3134SXin Liinstall-most() { 70*2abb3134SXin Li install-minimal 71*2abb3134SXin Li install-plyr-with-friends 72*2abb3134SXin Li} 73*2abb3134SXin Li 74*2abb3134SXin Li# 75*2abb3134SXin Li# Shiny Apps / API Server 76*2abb3134SXin Li# 77*2abb3134SXin Li 78*2abb3134SXin Li# After running one of the run_app.sh scripts, see if the app returns a page. 79*2abb3134SXin Lishiny-smoke-test() { 80*2abb3134SXin Li curl http://localhost:6789/ 81*2abb3134SXin Li} 82*2abb3134SXin Li 83*2abb3134SXin Li# Then set up a "firewall rule" in console.developers.google.com to open up 84*2abb3134SXin Li# "tcp:6789". Test it from the outside. 85*2abb3134SXin Li 86*2abb3134SXin Liif test $# -eq 0 ; then 87*2abb3134SXin Li install-most 88*2abb3134SXin Lielse 89*2abb3134SXin Li "$@" 90*2abb3134SXin Lifi 91