aboutsummaryrefslogtreecommitdiffstats
path: root/etherpad/bin/rebuildjar.sh
blob: 40f6a10fc1d3936598352493bc0e7a0bd4b1f4c3 (plain) (blame)
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
#!/bin/bash -e

#  Copyright 2009 Google Inc.
#  
#  Licensed under the Apache License, Version 2.0 (the "License");
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#  
#       http://www.apache.org/licenses/LICENSE-2.0
#  
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS-IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.

bin/java-version.sh

if [ -z "$JAR" ]; then
    if [ ! -z $(which fastjar 2>/dev/null) ]; then
        # http://lists.gnu.org/archive/html/fastjar-dev/2009-12/msg00000.html
        version=`fastjar --version | grep fastjar | sed 's/.* //g'`
        if [[ "$version" = "0.97" || "$version" = "0.98" ]]; then
            echo "fastjar version $version can't build etherpad.  Falling back to standard jar."
            JAR=jar
        else
            JAR=fastjar
        fi
    else
        JAR=jar
    fi
fi

function depscheck {
    if [ ! -d "$JAVA_HOME" ]; then
	echo "\$JAVA_HOME does not point to an existing dir; should be e.g. /usr/java/latest"
	exit 1
    fi
    if [ ! -d "$SCALA_HOME" ]; then
	echo "\$SCALA_HOME does not point to an existing dir; should be e.g. /usr/share/scala"
	exit 1
    fi
    if [ ! -e "$SCALA" ]; then
	echo "\$SCALA does not point to an existing file; should be e.g. /usr/bin/scala"
	exit 1
    fi
    if [ ! -e "$JAVA" ]; then
	echo "\$JAVA does not point to an existing file; should be e.g. /usr/bin/java"
	exit 1
    fi
    if [ ! -e "$MYSQL_CONNECTOR_JAR" ]; then
        echo "\$MYSQL_CONNECTOR_JAR does not point to an existing file; should be e.g. /usr/share/java/mysql-connector-java.jar"
        exit 1
    fi

    # Check for javac version.  Unfortunately, javac doesn't tell you whether
    # it's Sun Java or OpenJDK, but the "java" binary that's in the same
    # directory will.
    if [ -e "$JAVA_HOME/bin/java" ]; then
	($JAVA_HOME/bin/java -version 2>&1) | {
	    while read file; do
		javaver=$file
	    done
	    for word in $javaver; do
		if [ $word != "Java" ]; then
		    echo "$JAVA_HOME/bin/java is from a non-Sun compiler, and may not be able to compile etherpad.  If you get syntax errors, you should point \$JAVA_HOME at a Sun Java JDK installation instead."
	        fi
		break
            done
	}
    fi
}

depscheck

function notify {
    if [ ! -z $(which growlnotify 2>/dev/null) ]; then
	echo $0 finished | growlnotify
    fi   
}
trap notify EXIT

source ../infrastructure/bin/compilecache.sh

if [ "$1" == "dev" ]; then
	suffix="-dev";
	shift
fi

OWD=`pwd`
cd ../infrastructure
JAR=$JAR bin/makejar.sh $@

rm -rf build/etherpad-jars
mkdir -p build/etherpad-jars

echo "including etherpad JARs..."

JARFILES="echo ../etherpad/lib/*.jar"
function genjar {
    echo "unzipping JARs..."
    pushd $1 >> /dev/null

    for a in ../../../etherpad/lib/*.jar; do
	$JAR xf $a
	rm -rf META-INF/{MANIFEST.MF,NOTICE{,.txt},LICENSE{,.txt},INDEX.LIST,SUN_MICR.{RSA,SF},maven}
    done

    popd >> /dev/null    
}
cacheonfiles JAR-etherpad "$JARFILES" genjar 1

echo "updating..."

pushd buildcache/JAR-etherpad >> /dev/null
$JAR uf ../../build/appjet.jar `ls . | grep -v "^t$"`

echo "done."

popd >> /dev/null

dst="$OWD/appjet-eth$suffix.jar"
cp -f build/appjet.jar $dst
cd $OWD
echo "wrote $dst"