-
Notifications
You must be signed in to change notification settings - Fork 0
/
spark_custom_install
executable file
·100 lines (78 loc) · 3.15 KB
/
spark_custom_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
#!/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
VERSION="0.0.2-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 fatjar, which can also be used for cluster/cloud execution'
mvn clean install -P fatjar -Dmaven.repo.local=/opt/BigStitcher-Spark/repo
mvn -Dmdep.outputFile=cp.txt -Dmdep.includeScope=runtime dependency:build-classpath -Dmaven.repo.local=/opt/BigStitcher-Spark/repo
# 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 'if [ "$#" -lt 2 ]; then echo "Usage: $0 <mem_gb> <threads> <other parameters (enter in mem_gb and threads to see usage)>"; exit 1; fi' >> $1
echo 'MEM=$1' >> $1
echo 'THREADS=$2' >> $1
echo 'shift 2' >> $1
echo "JAR=/opt/BigStitcher-Spark/repo/net/preibisch/BigStitcher-Spark/${VERSION}/BigStitcher-Spark-${VERSION}.jar" >> $1
echo 'java \' >> $1
echo ' -Xmx${MEM}g -Dspark.master=local[${THREADS}] \' >> $1
echo -n ' -cp $JAR:' >> $1
echo -n $(cat cp.txt) >> $1
echo ' \' >> $1
echo ' '$2' "$@"' >> $1
chmod a+x $1
}
echo 'Installing workflow tools ...'
install_command resave "net.preibisch.bigstitcher.spark.SparkResaveN5"
install_command detect-interestpoints "net.preibisch.bigstitcher.spark.SparkInterestPointDetection"
install_command match-interestpoints "net.preibisch.bigstitcher.spark.SparkGeometricDescriptorMatching"
install_command stitching "net.preibisch.bigstitcher.spark.SparkPairwiseStitching"
install_command solver "net.preibisch.bigstitcher.spark.Solver"
install_command affine-fusion "net.preibisch.bigstitcher.spark.SparkAffineFusion"
install_command nonrigid-fusion "net.preibisch.bigstitcher.spark.SparkNonRigidFusion"
echo 'Installing utils ...'
install_command downsample "net.preibisch.bigstitcher.spark.SparkDownsample"
install_command clear-interestpoints "net.preibisch.bigstitcher.spark.ClearInterestPoints"
install_command clear-registrations "net.preibisch.bigstitcher.spark.ClearRegistrations"
install_command transform-points "net.preibisch.bigstitcher.spark.TransformPoints"
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."