xref: /aosp_15_r20/external/rappor/setup.sh (revision 2abb31345f6c95944768b5222a9a5ed3fc68cc00)
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