-
Notifications
You must be signed in to change notification settings - Fork 402
/
Copy pathinstall_gtsam.sh
executable file
·98 lines (81 loc) · 3.65 KB
/
install_gtsam.sh
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
#!/usr/bin/env bash
# Author: Luigi Freda
# Author: Luigi Freda
# This file is part of https://github.com/luigifreda/pyslam
#set -e
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) # get script dir
SCRIPT_DIR=$(readlink -f $SCRIPT_DIR) # this reads the actual path if a symbolic directory is used
ROOT_DIR="$SCRIPT_DIR"
# ====================================================
# import the bash utils
. "$ROOT_DIR"/bash_utils.sh
# ====================================================
STARTING_DIR=`pwd`
cd "$ROOT_DIR"
print_blue '================================================'
print_blue "Installing gtsam from source"
print_blue '================================================'
PYTHON_VERSION=$(python -c "import sys; print(f\"{sys.version_info.major}.{sys.version_info.minor}\")")
cd thirdparty
if [ ! -d gtsam ]; then
git clone https://github.com/borglab/gtsam.git gtsam
#git fetch --all --tags # to fetch tags
cd gtsam
git checkout tags/4.2a9
git apply ../gtsam.patch
cd ..
fi
cd gtsam
make_buid_dir
TARGET_GTSAM_LIB="install/lib/libgtsam.so"
if [[ "$OSTYPE" == "darwin"* ]]; then
TARGET_GTSAM_LIB="install/lib/libgtsam.dylib"
fi
if [[ ! -f "$TARGET_GTSAM_LIB" ]]; then
cd build
# NOTE: gtsam has some issues when compiling with march=native option!
# https://groups.google.com/g/gtsam-users/c/jdySXchYVQg
# https://bitbucket.org/gtborg/gtsam/issues/414/compiling-with-march-native-results-in
GTSAM_OPTIONS="-DGTSAM_USE_SYSTEM_EIGEN=ON -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF -DGTSAM_BUILD_PYTHON=ON -DGTSAM_BUILD_TESTS=OFF -DGTSAM_BUILD_EXAMPLES=OFF"
GTSAM_OPTIONS+=" -DGTSAM_THROW_CHEIRALITY_EXCEPTION=OFF -DCMAKE_PYTHON_EXECUTABLE=$(which python) -DGTSAM_PYTHON_VERSION=$PYTHON_VERSION"
if [[ "$OSTYPE" == "darwin"* ]]; then
GTSAM_OPTIONS+=" -DGTSAM_WITH_TBB=OFF"
fi
echo GTSAM_OPTIONS: $GTSAM_OPTIONS
cmake .. -DCMAKE_INSTALL_PREFIX="`pwd`/../install" -DCMAKE_BUILD_TYPE=Release $GTSAM_OPTIONS $EXTERNAL_OPTION
make -j $(nproc)
make install
fi
echo current folder: $(pwd)
echo "deploying built gtsam module"
PYTHON_VERSION=$(python -c "import sys; print(f\"{sys.version_info.major}.{sys.version_info.minor}\")")
PYTHON_SITE_PACKAGES=$(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")
PYTHON_SOURCE_FOLDER_GTSAM=$(pwd)/python/gtsam
PYTHON_SOURCE_FOLDER_GTSAM_UNSTABLE=$(pwd)/python/gtsam_unstable
if [[ -d "$PYTHON_SITE_PACKAGES" && -d "$PYTHON_SOURCE_FOLDER_GTSAM" ]]; then
echo "copying built python gtsam module from $PYTHON_SOURCE_FOLDER_GTSAM to $PYTHON_SITE_PACKAGES"
if [[ -d "$PYTHON_SITE_PACKAGES/gtsam" ]]; then
rm -rf $PYTHON_SITE_PACKAGES/gtsam
fi
cp -r $PYTHON_SOURCE_FOLDER_GTSAM $PYTHON_SITE_PACKAGES
else
echo "ERROR: failed to copy build python gtsam module from $PYTHON_SOURCE_FOLDER_GTSAM to $PYTHON_SITE_PACKAGES"
fi
if [[ -d "$PYTHON_SITE_PACKAGES" && -d "$PYTHON_SOURCE_FOLDER_GTSAM_UNSTABLE" ]]; then
echo "copying built python gtsam module from $PYTHON_SOURCE_FOLDER_GTSAM_UNSTABLE to $PYTHON_SITE_PACKAGES"
if [[ -d "$PYTHON_SITE_PACKAGES/gtsam_unstable" ]]; then
rm -rf $PYTHON_SITE_PACKAGES/gtsam_unstable
fi
cp -r $PYTHON_SOURCE_FOLDER_GTSAM_UNSTABLE $PYTHON_SITE_PACKAGES
else
echo "ERROR: failed to copy build python gtsam module from $PYTHON_SOURCE_FOLDER_GTSAM_UNSTABLE to $PYTHON_SITE_PACKAGES"
fi
cd "$ROOT_DIR"
print_blue '================================================'
print_blue "Building gtsam_factors"
print_blue '================================================'
cd thirdparty
cd gtsam_factors
./build.sh
cd "$ROOT_DIR"
cd "$STARTING_DIR"