2017-08-24 23:53:16 +08:00
|
|
|
#!/bin/bash -e
|
|
|
|
|
|
|
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
|
|
cd "$DIR"
|
2016-11-19 00:35:29 +08:00
|
|
|
|
2020-11-13 03:18:11 +08:00
|
|
|
source "$DIR/environment/util.sh"
|
|
|
|
|
2017-04-06 18:05:58 +08:00
|
|
|
function print_help () {
|
|
|
|
echo "Usage: $0 [OPTION]"
|
2020-11-13 03:18:11 +08:00
|
|
|
echo -e "Check for missing packages and setup the project.\n"
|
2017-04-06 18:05:58 +08:00
|
|
|
echo "Optional arguments:"
|
|
|
|
echo -e " -h\tdisplay this help and exit"
|
|
|
|
}
|
|
|
|
|
2017-08-24 23:53:16 +08:00
|
|
|
function setup_virtualenv () {
|
|
|
|
pushd $1 > /dev/null
|
|
|
|
echo "Setting up virtualenv for: $1"
|
2017-04-06 18:05:58 +08:00
|
|
|
|
2017-08-24 23:53:16 +08:00
|
|
|
# remove old virtualenv
|
|
|
|
if [ -d ve3 ]; then
|
|
|
|
rm -rf ve3
|
|
|
|
fi
|
2017-04-06 18:05:58 +08:00
|
|
|
|
2017-08-24 23:53:16 +08:00
|
|
|
# create new virtualenv
|
|
|
|
virtualenv -p python3 ve3 || exit 1
|
|
|
|
source ve3/bin/activate
|
2020-09-23 01:52:26 +08:00
|
|
|
pip --timeout 1000 install -r requirements.txt || exit 1
|
2017-08-24 23:53:16 +08:00
|
|
|
deactivate
|
|
|
|
|
|
|
|
popd > /dev/null
|
|
|
|
}
|
2017-04-06 18:05:58 +08:00
|
|
|
|
|
|
|
if [[ $# -gt 1 ]]; then
|
|
|
|
print_help
|
|
|
|
exit 1
|
|
|
|
elif [[ $# -eq 1 ]]; then
|
|
|
|
case "$1" in
|
|
|
|
-h)
|
|
|
|
print_help
|
|
|
|
exit 0
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
# unknown option
|
|
|
|
print_help
|
|
|
|
exit 1
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
fi
|
|
|
|
|
2020-11-13 03:18:11 +08:00
|
|
|
DISTRO=$(operating_system)
|
|
|
|
echo "ALL BUILD PACKAGES: $($DIR/environment/os/$DISTRO.sh list MEMGRAPH_BUILD_DEPS)"
|
|
|
|
$DIR/environment/os/$DISTRO.sh check MEMGRAPH_BUILD_DEPS
|
|
|
|
echo "All packages are in-place..."
|
2017-04-06 18:05:58 +08:00
|
|
|
|
2017-03-06 23:15:20 +08:00
|
|
|
# create a default build directory
|
|
|
|
mkdir -p ./build
|
|
|
|
|
Add Lisp C++ Preprocessing (LCP)
Summary:
In order to enhance C++ metaprogramming capabilities, a custom
preprocessing step is added before compilation. C++ code may be mixed
with Lisp code in order to generate a complete C++ source code. The
mechanism is hooked into cmake. To notify cmake of .lcp files, `add_lcp`
function in src/CMakeLists.txt needs to be invoked.
The main executable entry point is in tools/lcp, while the source code
is in src/lisp/lcp.lisp
The main goal of LCP is to auto generate class serialization code and
member variable getter functions. This should now be significantly less
error prone, since you cannot forget to serialize a member variable
through this mechanism. Future uses should be generating other repeating
code, such as `Clone` methods or perhaps some debug information.
.lcp files may contain mixed C++ code (enclosed in #>cpp ... cpp<#
blocks) with Common Lisp code.
NOTE: With great power comes great responsibility. Lisp metaprogramming
capabilities are incredibly powerful. To keep the sanity of the team
intact, use Lisp preprocessing only when *really* necessary.
Reviewers: buda, mferencevic, msantl, dgleich, ipaljak, mculinovic, mtomic
Reviewed By: mtomic
Subscribers: pullbot
Differential Revision: https://phabricator.memgraph.io/D1361
2018-04-27 21:48:30 +08:00
|
|
|
# quicklisp package manager for Common Lisp
|
|
|
|
quicklisp_install_dir="$HOME/quicklisp"
|
|
|
|
if [[ -v QUICKLISP_HOME ]]; then
|
|
|
|
quicklisp_install_dir="${QUICKLISP_HOME}"
|
|
|
|
fi
|
2018-10-15 17:01:57 +08:00
|
|
|
|
Add Lisp C++ Preprocessing (LCP)
Summary:
In order to enhance C++ metaprogramming capabilities, a custom
preprocessing step is added before compilation. C++ code may be mixed
with Lisp code in order to generate a complete C++ source code. The
mechanism is hooked into cmake. To notify cmake of .lcp files, `add_lcp`
function in src/CMakeLists.txt needs to be invoked.
The main executable entry point is in tools/lcp, while the source code
is in src/lisp/lcp.lisp
The main goal of LCP is to auto generate class serialization code and
member variable getter functions. This should now be significantly less
error prone, since you cannot forget to serialize a member variable
through this mechanism. Future uses should be generating other repeating
code, such as `Clone` methods or perhaps some debug information.
.lcp files may contain mixed C++ code (enclosed in #>cpp ... cpp<#
blocks) with Common Lisp code.
NOTE: With great power comes great responsibility. Lisp metaprogramming
capabilities are incredibly powerful. To keep the sanity of the team
intact, use Lisp preprocessing only when *really* necessary.
Reviewers: buda, mferencevic, msantl, dgleich, ipaljak, mculinovic, mtomic
Reviewed By: mtomic
Subscribers: pullbot
Differential Revision: https://phabricator.memgraph.io/D1361
2018-04-27 21:48:30 +08:00
|
|
|
if [[ ! -f "${quicklisp_install_dir}/setup.lisp" ]]; then
|
|
|
|
wget -nv https://beta.quicklisp.org/quicklisp.lisp -O quicklisp.lisp || exit 1
|
|
|
|
echo \
|
|
|
|
"
|
|
|
|
(load \"${DIR}/quicklisp.lisp\")
|
|
|
|
(quicklisp-quickstart:install :path \"${quicklisp_install_dir}\")
|
|
|
|
" | sbcl --script || exit 1
|
|
|
|
rm -rf quicklisp.lisp || exit 1
|
|
|
|
fi
|
2018-10-18 17:34:37 +08:00
|
|
|
ln -Tfs "$DIR/src/lisp" "${quicklisp_install_dir}/local-projects/lcp"
|
2019-05-09 20:57:02 +08:00
|
|
|
# Install LCP dependencies
|
|
|
|
# TODO: We should at some point cache or have a mirror of packages we use.
|
|
|
|
# TODO: move the installation of LCP's dependencies into ./setup.sh
|
|
|
|
echo \
|
|
|
|
"
|
|
|
|
(load \"${quicklisp_install_dir}/setup.lisp\")
|
|
|
|
(ql:quickload '(:lcp :lcp/test) :silent t)
|
|
|
|
" | sbcl --script
|
Add Lisp C++ Preprocessing (LCP)
Summary:
In order to enhance C++ metaprogramming capabilities, a custom
preprocessing step is added before compilation. C++ code may be mixed
with Lisp code in order to generate a complete C++ source code. The
mechanism is hooked into cmake. To notify cmake of .lcp files, `add_lcp`
function in src/CMakeLists.txt needs to be invoked.
The main executable entry point is in tools/lcp, while the source code
is in src/lisp/lcp.lisp
The main goal of LCP is to auto generate class serialization code and
member variable getter functions. This should now be significantly less
error prone, since you cannot forget to serialize a member variable
through this mechanism. Future uses should be generating other repeating
code, such as `Clone` methods or perhaps some debug information.
.lcp files may contain mixed C++ code (enclosed in #>cpp ... cpp<#
blocks) with Common Lisp code.
NOTE: With great power comes great responsibility. Lisp metaprogramming
capabilities are incredibly powerful. To keep the sanity of the team
intact, use Lisp preprocessing only when *really* necessary.
Reviewers: buda, mferencevic, msantl, dgleich, ipaljak, mculinovic, mtomic
Reviewed By: mtomic
Subscribers: pullbot
Differential Revision: https://phabricator.memgraph.io/D1361
2018-04-27 21:48:30 +08:00
|
|
|
|
2017-02-21 22:44:12 +08:00
|
|
|
# setup libs (download)
|
2016-11-19 00:35:29 +08:00
|
|
|
cd libs
|
2017-12-05 17:00:38 +08:00
|
|
|
./cleanup.sh
|
2016-11-19 00:35:29 +08:00
|
|
|
./setup.sh
|
|
|
|
cd ..
|
|
|
|
|
2020-11-24 20:09:14 +08:00
|
|
|
# setup gql_behave dependencies
|
|
|
|
setup_virtualenv tests/gql_behave
|
2017-07-21 19:09:22 +08:00
|
|
|
|
2017-08-02 16:48:33 +08:00
|
|
|
# setup stress dependencies
|
2017-08-24 23:53:16 +08:00
|
|
|
setup_virtualenv tests/stress
|
2017-08-02 16:48:33 +08:00
|
|
|
|
2019-09-11 22:39:35 +08:00
|
|
|
# setup integration/ldap dependencies
|
|
|
|
setup_virtualenv tests/integration/ldap
|
|
|
|
|
2017-04-06 18:05:58 +08:00
|
|
|
echo "Done installing dependencies for Memgraph"
|
2020-10-06 19:57:33 +08:00
|
|
|
|
|
|
|
echo "Linking git hooks"
|
|
|
|
for hook in $(find $DIR/.githooks -type f -printf "%f\n"); do
|
|
|
|
ln -s -f "$DIR/.githooks/$hook" "$DIR/.git/hooks/$hook"
|
|
|
|
echo "Added $hook hook"
|
|
|
|
done;
|