diff options
author | Tayane Fernandes <tayane.rmf@gmail.com> | 2017-06-02 10:57:16 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-02 10:57:16 -0300 |
commit | 72af667b0b9d2383ed42688f4cf11075a85c81e2 (patch) | |
tree | 661b3fdc57835f746732b3011fb46124d413013d | |
parent | 377ffe8bc17bbcf00b6342428bb91eb3f2e41a20 (diff) | |
parent | 8659b2e6f9b405e2d763fc1fa3d3afc47d8e44ea (diff) |
Merge pull request #1078 from pixelated/fix-vagrant
Reverted code that broke vagrant configurations
-rwxr-xr-x | install-pixelated.sh | 139 | ||||
-rw-r--r-- | provisioning/modules/pixelated/files/.bashrc | 124 | ||||
-rwxr-xr-x | provisioning/modules/pixelated/files/activate_custom_node_modules.sh | 37 | ||||
-rw-r--r-- | provisioning/modules/pixelated/manifests/source/install_useragent.pp | 28 | ||||
-rwxr-xr-x | service/go | 7 | ||||
-rw-r--r-- | try.alice.ini | 7 | ||||
-rw-r--r-- | try.bob.ini | 7 |
7 files changed, 219 insertions, 130 deletions
diff --git a/install-pixelated.sh b/install-pixelated.sh new file mode 100755 index 00000000..7008063e --- /dev/null +++ b/install-pixelated.sh @@ -0,0 +1,139 @@ +#!/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. +## 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 diff --git a/provisioning/modules/pixelated/files/.bashrc b/provisioning/modules/pixelated/files/.bashrc deleted file mode 100644 index 25a940ba..00000000 --- a/provisioning/modules/pixelated/files/.bashrc +++ /dev/null @@ -1,124 +0,0 @@ -# ~/.bashrc: executed by bash(1) for non-login shells. -# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) -# for examples - -# If not running interactively, don't do anything -case $- in - *i*) ;; - *) return;; -esac - -# don't put duplicate lines or lines starting with space in the history. -# See bash(1) for more options -HISTCONTROL=ignoreboth - -# append to the history file, don't overwrite it -shopt -s histappend - -# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) -HISTSIZE=1000 -HISTFILESIZE=2000 - -# check the window size after each command and, if necessary, -# update the values of LINES and COLUMNS. -shopt -s checkwinsize - -# If set, the pattern "**" used in a pathname expansion context will -# match all files and zero or more directories and subdirectories. -#shopt -s globstar - -# make less more friendly for non-text input files, see lesspipe(1) -[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" - -# set variable identifying the chroot you work in (used in the prompt below) -if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then - debian_chroot=$(cat /etc/debian_chroot) -fi - -# set a fancy prompt (non-color, unless we know we "want" color) -case "$TERM" in - xterm-color|*-256color) color_prompt=yes;; -esac - -# uncomment for a colored prompt, if the terminal has the capability; turned -# off by default to not distract the user: the focus in a terminal window -# should be on the output of commands, not on the prompt -#force_color_prompt=yes - -if [ -n "$force_color_prompt" ]; then - if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then - # We have color support; assume it's compliant with Ecma-48 - # (ISO/IEC-6429). (Lack of such support is extremely rare, and such - # a case would tend to support setf rather than setaf.) - color_prompt=yes - else - color_prompt= - fi -fi - -if [ "$color_prompt" = yes ]; then - PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' -else - PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' -fi -unset color_prompt force_color_prompt - -# If this is an xterm set the title to user@host:dir -case "$TERM" in -xterm*|rxvt*) - PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" - ;; -*) - ;; -esac - -# enable color support of ls and also add handy aliases -if [ -x /usr/bin/dircolors ]; then - test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" - alias ls='ls --color=auto' - #alias dir='dir --color=auto' - #alias vdir='vdir --color=auto' - - alias grep='grep --color=auto' - alias fgrep='fgrep --color=auto' - alias egrep='egrep --color=auto' -fi - -# colored GCC warnings and errors -#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' - -# some more ls aliases -alias ll='ls -alF' -alias la='ls -A' -alias l='ls -CF' - -# Add an "alert" alias for long running commands. Use like so: -# sleep 10; alert -alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' - -# Alias definitions. -# You may want to put all your additions into a separate file like -# ~/.bash_aliases, instead of adding them here directly. -# See /usr/share/doc/bash-doc/examples in the bash-doc package. - -if [ -f ~/.bash_aliases ]; then - . ~/.bash_aliases -fi - -# enable programmable completion features (you don't need to enable -# this, if it's already enabled in /etc/bash.bashrc and /etc/profile -# sources /etc/bash.bashrc). -if ! shopt -oq posix; then - if [ -f /usr/share/bash-completion/bash_completion ]; then - . /usr/share/bash-completion/bash_completion - elif [ -f /etc/bash_completion ]; then - . /etc/bash_completion - fi -fi - - -# Pixelated - -cd /vagrant || exit -# shellcheck disable=SC1091 -source /home/vagrant/.venvs/pixua/bin/activate diff --git a/provisioning/modules/pixelated/files/activate_custom_node_modules.sh b/provisioning/modules/pixelated/files/activate_custom_node_modules.sh new file mode 100755 index 00000000..d63b8d35 --- /dev/null +++ b/provisioning/modules/pixelated/files/activate_custom_node_modules.sh @@ -0,0 +1,37 @@ +#!/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/>. + +CUSTOM_NODE_MODULES_LOCATION="$HOME/boxed_node_modules" +VAGRANT_NODE_MODULES="/vagrant/web-ui/node_modules" +export PATH="$PATH:$CUSTOM_NODE_MODULES_LOCATION/node_modules/.bin" + +export NODE_PATH="$CUSTOM_NODE_MODULES_LOCATION/node_modules" + +if [ ! -e $VAGRANT_NODE_MODULES ] ; then + ln -s $CUSTOM_NODE_MODULES_LOCATION $VAGRANT_NODE_MODULES +fi + +source /home/vagrant/user-agent-venv/bin/activate + +pip install --upgrade pip +pip install --upgrade setuptools + +cd /vagrant/service +echo "running python setup" +./go setuppy > /dev/null +echo "running js setup" +./go setupjs > /dev/null diff --git a/provisioning/modules/pixelated/manifests/source/install_useragent.pp b/provisioning/modules/pixelated/manifests/source/install_useragent.pp index d79d4144..8afbac0c 100644 --- a/provisioning/modules/pixelated/manifests/source/install_useragent.pp +++ b/provisioning/modules/pixelated/manifests/source/install_useragent.pp @@ -1,4 +1,4 @@ -# install useragent in a virtualenv +# install useragent in a virtualenv, deploy helper script # and make sure venv is activated on login class pixelated::source::install_useragent { @@ -9,18 +9,34 @@ class pixelated::source::install_useragent { # see https://projects.puppetlabs.com/issues/23053 # therefore we need to explicitily set them here environment => [ 'USERNAME=vagrant', 'HOME=/home/vagrant' ], - command => '/usr/bin/make install', + command => "/vagrant/install-pixelated.sh -v \"${virtualenv_path}\" -n /home/vagrant/boxed_node_modules", cwd => '/vagrant', user => 'vagrant', # to debug use this - logoutput => true, + # logoutput => true, timeout => 0 } - file { '/home/vagrant/.bashrc': + file { '/home/vagrant/activate_custom_node_modules.sh': owner => 'vagrant', - mode => '0644', - source => 'puppet:///modules/pixelated/.bashrc', + mode => '0755', + source => 'puppet:///modules/pixelated/activate_custom_node_modules.sh', } + exec { 'add_custom_node_modules_to_bashrc': + command => "/bin/bash -c 'echo \"source ${virtualenv_path}/bin/activate\" >> /home/vagrant/.bashrc'", + unless => "/bin/grep \"source ${virtualenv_path}/bin/activate\" /home/vagrant/.bashrc", + user => 'vagrant', + require => [Exec['install-pixelated'], File['/home/vagrant/activate_custom_node_modules.sh']] + } + exec { 'add_custom_node_path_to_bashrc': + command => "/bin/bash -c 'echo NODE_PATH=/home/vagrant/boxed_node_modules/node_modules/ >> /home/vagrant/.bashrc'", + unless => '/bin/grep NODE_PATH /home/vagrant/.bashrc', + user => 'vagrant', + } + exec { 'add_rule_to_change_to_vagrant_folder_on_login': + command => "/bin/echo 'cd /vagrant' >> /home/vagrant/.bashrc", + unless => "/bin/grep 'cd /vagrant' /home/vagrant/.bashrc", + user => 'vagrant', + } } diff --git a/service/go b/service/go new file mode 100755 index 00000000..25661508 --- /dev/null +++ b/service/go @@ -0,0 +1,7 @@ +#!/bin/bash + +type -t deactivate && deactivate +set -e +pushd .. +make $* +popd diff --git a/try.alice.ini b/try.alice.ini new file mode 100644 index 00000000..57ef892c --- /dev/null +++ b/try.alice.ini @@ -0,0 +1,7 @@ +[pixelated] +HOST=0.0.0.0 +PORT=8080 +LEAP_SERVER_NAME=try.pixelated-project.org +LEAP_USERNAME=alice +LEAP_PASSWORD=WuSh3ohse4 + diff --git a/try.bob.ini b/try.bob.ini new file mode 100644 index 00000000..4c169c04 --- /dev/null +++ b/try.bob.ini @@ -0,0 +1,7 @@ +[pixelated] +HOST=0.0.0.0 +PORT=8080 +LEAP_SERVER_NAME=try.pixelated-project.org +LEAP_USERNAME=bob +LEAP_PASSWORD=quuojoo1Su + |