blob: 26836b38fe97e35c1b6915dc3a4c1fd97457b103 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
#!/bin/bash
#
# Copyright (c) 2014 ThoughtWorks, Inc.
#
# Pixelated is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Pixelated is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with Pixelated. If not, see <http://www.gnu.org/licenses/>.
# test dependencies
set -e
export NODE_PATH='/home/vagrant/boxed_node_modules/node_modules/'
if [ ! $USERNAME ]
then
export USERNAME=`whoami`
fi
usage() { echo "Usage: $0 [-v <virtualenv path>] [-n <custom node modules directory>]" 1>&2; exit 1; }
VIRTUALENV_PATH=".virtualenv"
CUSTOM_NODE_MODULES_LOCATION=""
while getopts "n:v:" OPT; do
case "${OPT}" in
v)
VIRTUALENV_PATH=${OPTARG}
;;
n) # custom node_modules installation
CUSTOM_NODE_MODULES_LOCATION=${OPTARG}
;;
*)
usage
;;
esac
done
shift $((OPTIND-1))
function check_installed() {
set +e
which $1
if [ $? -ne 0 ]; then
echo "## You must have ${1} installed and in the PATH to run Pixelated-User-Agent"
echo "## Check our wiki for more information on dependencies:"
echo "## https://github.com/pixelated-project/pixelated-user-agent/wiki/Installing-dependencies"
echo "## exiting..."
exit 1
fi
set -e
}
# The below is necessary to allow node to use enough memory
# so that installing phantomjs won't fail
mkdir -p /home/vagrant/bin
cat > /home/vagrant/bin/node <<EOF
#!/usr/bin/env bash
/usr/bin/node --max_old_space_size=2000 "\$@"
EOF
chmod +x /home/vagrant/bin/node
export PATH=/home/vagrant/bin:$PATH
function install_node_modules_at_custom_location() {
local LOCATION="$1"
local WEBUI_DIR=$(pwd)
if [ -e "$WEBUI_DIR/node_modules" ] ; then
echo "It seems there is already a node_modules folder" 1>&2
return
fi
if [ ! -e "$LOCATION" ] ; then
mkdir "$LOCATION"
pushd "$LOCATION"
ln -s "$WEBUI_DIR/package.json" package.json
npm install
popd
fi
if [ ! -h "node_modules" ] ; then
rm -Rf "node_modules"
ln -s "$LOCATION/node_modules" node_modules
fi
}
for dependency in node npm ruby virtualenv git gpg compass; do
check_installed $dependency
done
# install web-ui dependencies
cd web-ui
UIPATH=`pwd`
if [ -z "$CUSTOM_NODE_MODULES_LOCATION" ] ; then
npm install
else
install_node_modules_at_custom_location "$CUSTOM_NODE_MODULES_LOCATION"
fi
node_modules/bower/bin/bower -V install --config.interactive=false --allow-root
LC_ALL=en_US.UTF-8 ./go build
# install service dependencies
cd ..
rm -rf "$VIRTUALENV_PATH"
virtualenv "$VIRTUALENV_PATH"
source "$VIRTUALENV_PATH/bin/activate"
# they can't be on the same command because it breaks pip upgrade
pip install --upgrade pip
pip install --upgrade setuptools
make setup
pip uninstall -y enum34 && pip install enum34
pip uninstall -y pysqlcipher && pip install pysqlcipher # this is needed so pysqlcipher gets recompiled with the right version of glibc
# print usage
cat <<EOF
###############
## You will need an account in a LEAP provider with mail support. You can request an invite code for
## https://dev.pixelated-project.org, please refer to point 4) in the [Getting started guide](https://github.com/pixelated/pixelated-user-agent#getting-started).
## Once you are done, activate your virtual environment by running:
## source $VIRTUALENV_PATH/bin/activate
## The User agent will be available on http://localhost:3333 after running:
## pixelated-user-agent
EOF
|