aboutsummaryrefslogtreecommitdiffstats
path: root/etherpad/bin/rebuildjar.sh
blob: d32d99463c98192b18554efc97a46007bf5d5b8e (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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
#!/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

[ -z "$JAVA_HOME" ] && read -p "\$JAVA_HOME is not set, please enter the path to your Java installation: " JAVA_HOME
if [ ! -e "$JAVA_HOME" ]; then
    echo "The path to \$JAVA_HOME ($JAVA_HOME) does not exist, please check and try again."
    exit 1
else
    export JAVA_HOME
fi

[ -z "$SCALA_HOME" ] && read -p "\$SCALA_HOME is not set, please enter the path to your Scala installation: " SCALA_HOME
if [ ! -e "$SCALA_HOME" ]; then
    echo "The path to \$SCALA_HOME ($SCALA_HOME) does not exist, please check and try again."
    exit 1
else
    export SCALA_HOME
fi

if [ -z "$SCALA" ]; then
    if [ `which scala 2>/dev/null 1>/dev/null` ]; then
        SCALA=`which scala`
        echo "Using 'scala' binary found at $SCALA. Set \$SCALA to use another one."
    elif [ -x "$SCALA_HOME/bin/scala" ]; then
        SCALA="$SCALA_HOME/bin/scala"
        echo "Using 'scala' binary found at $SCALA. Set \$SCALA to use another one."
    else
        read -p "\$SCALA is not set and the 'scala' binary could not be found, please enter the path to the file: " SCALA
    fi
fi
if [ ! -x "$SCALA" ]; then
    echo "The path to \$SCALA ($SCALA) is not an executable file, please check and try again."
    exit 1
else
    export SCALA
fi

if [ -z "$JAVA" ]; then
    if [ `which java 2>/dev/null 1>/dev/null` ]; then
        JAVA=`which java`
        echo "Using 'java' binary found at $JAVA. Set \$JAVA to use another one."
    elif [ -x "$JAVA_HOME/bin/java" ]; then
        JAVA="$JAVA_HOME/bin/java"
        echo "Using 'java' binary found at $JAVA. Set \$JAVA to use another one."
    else
        read -p "\$JAVA is not set and the 'java' binary could not be found, please enter the path to the file: " JAVA
    fi
fi
if [ ! -x "$JAVA" ]; then
    echo "The path to \$JAVA ($JAVA) is not an executeable file, please check and try again."
    exit 1
else
    export JAVA
fi

[ -z "$MYSQL_CONNECTOR_JAR" ] && read -p "\$MYSQL_CONNECTOR_JAR is not set, please enter the path to the MySQL JDBC driver .jar file: " MYSQL_CONNECTOR_JAR
if [ ! -e "$MYSQL_CONNECTOR_JAR" ]; then
    echo "The path to \$MYSQL_CONNECTOR_JAR ($MYSQL_CONNECTOR_JAR) does not exist, please check and try again."
    exit 1
else
    export MYSQL_CONNECTOR_JAR
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

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

source ../infrastructure/bin/compilecache.sh

suffix="-dev";
if [ "$1" == "prod" ]; then
    suffix="";
    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"