aboutsummaryrefslogtreecommitdiff
path: root/setup.sh
diff options
context:
space:
mode:
Diffstat (limited to 'setup.sh')
-rwxr-xr-xsetup.sh90
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