-
Notifications
You must be signed in to change notification settings - Fork 15
/
install
executable file
·140 lines (114 loc) · 3.96 KB
/
install
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
#!/bin/bash
# This script is shamelessly extended from https://github.com/saalfeldlab/n5-utils, thanks @axtimwalde & co!
USERTHREADS="-1"
USERMEM="-1"
while [[ $# -gt 0 ]]; do
case $1 in
-t|--threads)
USERTHREADS="$2"
shift # past argument
shift # past value
;;
-m|--mem)
USERMEM="$2"
shift # past argument
shift # past value
;;
-*|--*)
echo "Unknown option $1"
exit 1
;;
esac
done
if [ $USERTHREADS == "-1" ]; then
echo "You did not define the number of threads for Java/Spark can use, will be set automatically. You could do it by e.g.: './install -t 8' for 8 threads."
fi
if [ $USERMEM == "-1" ]; then
echo "You did not define the memory that Java/Spark can use, will be set automatically. You could do it by e.g.: './install -m 64' for 64GB of RAM."
fi
if [ $USERMEM == "-1" ]; then
# check for operating system
if [[ "$OSTYPE" == "linux-gnu" ]]; then
echo "Assuming on Linux operating system"
MEM=$(cat /proc/meminfo | grep MemTotal | sed s/^MemTotal:\\\s*\\\|\\\s\\+[^\\\s]*$//g)
MEMGB=$(($MEM/1024/1024))
MEM=$((($MEMGB/5)*4))
elif [[ "$OSTYPE" == "darwin"* ]]; then
echo "Assuming on MacOS X operating system"
# sysctl returns total hardware memory size in bytes
MEM=$(sysctl hw.memsize | grep hw.memsize | sed s/hw.memsize://g)
MEMGB=$(($MEM/1024/1024/1024))
MEM=$((($MEMGB/5)*4))
else
echo "ERROR - Operating system (arg2) must be either linux or osx to determine max memory. Please specify max memory by e.g.: './install -m 64' for 64GB of RAM"
exit
fi
echo "Available memory:" $MEMGB "GB, setting Java memory limit to" $MEM "GB"
else
MEM=$USERMEM
echo "Setting Java memory limit to" $MEM "GB"
fi
if [ $USERTHREADS == "-1" ]; then
# check for operating system
if [[ "$OSTYPE" == "linux-gnu" ]]; then
if [ $USERMEM != "-1" ]; then
echo "Assuming on Linux operating system"
fi
THREADS=$(nproc --all)
elif [[ "$OSTYPE" == "darwin"* ]]; then
if [ $USERMEM != "-1" ]; then
echo "Assuming on MacOS X operating system"
fi
# sysctl returns number of physical cores
THREADS=$(sysctl -n hw.ncpu)
else
echo "ERROR - Operating system (arg2) must be either linux or osx to determine number of physical cores. Please specify physical by e.g.: './install -t 8' to use 8 threads."
exit
fi
echo "Available threads:" $THREADS", setting Java/Sparks threads accordingly."
else
THREADS=$USERTHREADS
echo "Setting Java/Spark number of threads to" $THREADS
fi
VERSION="2.1.1-SNAPSHOT"
INSTALL_DIR=$(pwd)
#INSTALL_DIR=${1:-$(pwd)}
echo ""
echo "Installing into $INSTALL_DIR (for local execution)"
echo 'Building the code'
sleep 2
mvn clean install
#echo 'Building a farjar, which can also be used for cluster/cloud execution'
#mvn clean install -P fatjar
mvn -Dmdep.outputFile=cp.txt -Dmdep.includeScope=runtime dependency:build-classpath
# function that installs one command
# $1 - command name
# $2 - java class containing the functionality
install_command () {
echo "Installing '$1' command into" $INSTALL_DIR
echo '#!/bin/bash' > $1
echo '' >> $1
echo "JAR=\$HOME/.m2/repository/net/preibisch/BigStitcher/${VERSION}/BigStitcher-${VERSION}.jar" >> $1
echo 'java \' >> $1
echo " -Xmx${MEM}g \\" >> $1
# echo " -Xmx${MEM}g -Dspark.master=local[${THREADS}] \\" >> $1
# echo ' -XX:+UseConcMarkSweepGC \' >> $1
echo -n ' -cp $JAR:' >> $1
echo -n $(cat cp.txt) >> $1
echo ' \' >> $1
echo ' '$2' "$@"' >> $1
chmod a+x $1
}
echo 'Installing BigStitcher ...'
install_command bigstitcher "net.preibisch.stitcher.plugin.BigStitcher"
# echo 'Installing utils ...'
#install_command downsample "net.preibisch.bigstitcher.spark.SparkDownsample"
if [ $(pwd) == "$INSTALL_DIR" ]; then
echo "Installation directory equals current directory, we are done."
else
echo "Creating directory $INSTALL_DIR and moving files..."
mkdir -p $INSTALL_DIR
mv affine-fusion $INSTALL_DIR/
fi
rm cp.txt
echo "Installation finished."