8dcd8e1012
Summary: Since libs/setup tries to preserve any local additions to libs directory, any failure in doing that would cause the init script to be left in an unfinished state. This could cause problems when rerunning the init. In such cases, we want to completely cleanup the libs directory and start again. Anyone who wishes only to update the libs and preserve local additions should manually run libs/setup. Reviewers: mferencevic Reviewed By: mferencevic Subscribers: pullbot Differential Revision: https://phabricator.memgraph.io/D1026
118 lines
2.8 KiB
Bash
Executable File
118 lines
2.8 KiB
Bash
Executable File
#!/bin/bash -e
|
|
|
|
required_pkgs=(git arcanist # source code control
|
|
cmake clang-3.8 llvm-3.8 pkg-config # build system
|
|
curl wget # for downloading libs
|
|
uuid-dev default-jre-headless # required by antlr
|
|
libreadline-dev # for memgraph console
|
|
python3 python-virtualenv python3-pip # for qa, macro_benchmark and stress tests
|
|
)
|
|
|
|
optional_pkgs=(clang-format # source code formatting
|
|
doxygen graphviz # source documentation generators
|
|
php-cli # for user technical documentation generators
|
|
)
|
|
|
|
use_sudo=0
|
|
|
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
cd "$DIR"
|
|
|
|
function print_help () {
|
|
echo "Usage: $0 [OPTION]"
|
|
echo -e "Check for missing packages and install them if possible.\n"
|
|
echo "Optional arguments:"
|
|
echo -e " -s\tuse sudo apt-get for installing packages"
|
|
echo -e " -h\tdisplay this help and exit"
|
|
}
|
|
|
|
function setup_virtualenv () {
|
|
pushd $1 > /dev/null
|
|
echo "Setting up virtualenv for: $1"
|
|
|
|
# remove old virtualenv
|
|
if [ -d ve3 ]; then
|
|
rm -rf ve3
|
|
fi
|
|
|
|
# create new virtualenv
|
|
virtualenv -p python3 ve3 || exit 1
|
|
source ve3/bin/activate
|
|
pip install -i http://deps.memgraph.io:3141/root/pypi \
|
|
--trusted-host deps.memgraph.io -r requirements.txt || exit 1
|
|
deactivate
|
|
|
|
popd > /dev/null
|
|
}
|
|
|
|
if [[ $# -gt 1 ]]; then
|
|
print_help
|
|
exit 1
|
|
elif [[ $# -eq 1 ]]; then
|
|
case "$1" in
|
|
-s)
|
|
use_sudo=1
|
|
;;
|
|
-h)
|
|
print_help
|
|
exit 0
|
|
;;
|
|
*)
|
|
# unknown option
|
|
print_help
|
|
exit 1
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
echo "Started installing dependencies for Memgraph"
|
|
|
|
required_missing=0
|
|
|
|
# install all dependencies on debian based operating systems
|
|
for pkg in ${required_pkgs[@]}; do
|
|
if dpkg -s $pkg 2>/dev/null >/dev/null; then
|
|
echo "Found $pkg"
|
|
elif (( $use_sudo )); then
|
|
echo "Installing $pkg"
|
|
if [[ ! `sudo apt-get -y install $pkg` ]]; then
|
|
echo "Didn't install $pkg [required]"
|
|
required_missing=1
|
|
fi
|
|
else
|
|
echo "Missing $pkg [required]"
|
|
required_missing=1
|
|
fi
|
|
done
|
|
|
|
for pkg in ${optional_pkgs[@]}; do
|
|
if dpkg -s $pkg 2>/dev/null >/dev/null; then
|
|
echo "Found $pkg [optional]"
|
|
else
|
|
echo "Missing $pkg [optional]"
|
|
fi
|
|
done
|
|
|
|
if (( $required_missing )); then
|
|
echo "Missing required packages. EXITING!"
|
|
echo "Please, install required packages and rerun $0 again."
|
|
exit 2
|
|
fi
|
|
|
|
# create a default build directory
|
|
mkdir -p ./build
|
|
|
|
# setup libs (download)
|
|
cd libs
|
|
./cleanup.sh
|
|
./setup.sh
|
|
cd ..
|
|
|
|
# setup qa dependencies
|
|
setup_virtualenv tests/qa
|
|
|
|
# setup stress dependencies
|
|
setup_virtualenv tests/stress
|
|
|
|
echo "Done installing dependencies for Memgraph"
|