-
Notifications
You must be signed in to change notification settings - Fork 0
/
install
executable file
·120 lines (100 loc) · 3.54 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
#!/bin/bash
# This script is shamelessly adapted from https://github.com/saalfeldlab/n5-utils, thanks @axtimwalde & co!
THREADS="-1"
USERMEM="-1"
while [[ $# -gt 0 ]]; do
case $1 in
-t|--threads)
THREADS="$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 [ $THREADS == "-1" ]; then
echo "Please define the number of threads for Java/Spark to use, e.g.: './install -t 8'. Stopping."
exit 1
else
echo "Spark number of threads: "$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
VERSION="0.0.1-SNAPSHOT"
INSTALL_DIR=$(pwd)
#INSTALL_DIR=${1:-$(pwd)}
echo ""
echo "Installing into $INSTALL_DIR (for local execution)"
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
echo 'Building the code'
sleep 2
mvn clean install
mvn -Dmdep.outputFile=cp.txt -Dmdep.includeScope=runtime dependency:build-classpath
echo ""
echo "Installing 'rs-fish-spark' command into" $INSTALL_DIR
echo ""
echo '#!/bin/bash' > rs-fish-spark
echo '' >> rs-fish-spark
echo "JAR=\$HOME/.m2/repository/net/preibisch/RS-FISH-Spark/${VERSION}/RS-FISH-Spark-${VERSION}.jar" >> rs-fish-spark
echo 'java \' >> rs-fish-spark
echo " -Xmx${MEM}g -Dspark.master=local[${THREADS}] \\" >> rs-fish-spark
echo ' -XX:+UseConcMarkSweepGC \' >> rs-fish-spark
echo -n ' -cp $JAR:' >> rs-fish-spark
echo -n $(cat cp.txt) >> rs-fish-spark
echo ' \' >> rs-fish-spark
echo ' net.preibisch.rsfish.spark.SparkRSFISH "$@"' >> rs-fish-spark
echo ""
echo "Installing 'rs-fish-spark-ij' command into" $INSTALL_DIR
echo ""
echo '#!/bin/bash' > rs-fish-spark-ij
echo '' >> rs-fish-spark-ij
echo "JAR=\$HOME/.m2/repository/net/preibisch/RS-FISH-Spark/${VERSION}/RS-FISH-Spark-${VERSION}.jar" >> rs-fish-spark-ij
echo 'java \' >> rs-fish-spark-ij
echo " -Xmx${MEM}g -Dspark.master=local[${THREADS}] \\" >> rs-fish-spark-ij
echo ' -Dspark.master=local[8] \\' >> rs-fish-spark-ij
echo ' -XX:+UseConcMarkSweepGC \' >> rs-fish-spark-ij
echo -n ' -cp $JAR:' >> rs-fish-spark-ij
echo -n $(cat cp.txt) >> rs-fish-spark-ij
echo ' \' >> rs-fish-spark-ij
echo ' net.preibisch.rsfish.spark.SparkRSFISH_IJ "$@"' >> rs-fish-spark-ij
chmod a+x rs-fish-spark
chmod a+x rs-fish-spark-ij
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 st-view $INSTALL_DIR/
fi
rm cp.txt
echo "Installation finished."