#!/bin/sh # Copyright (C) 2009, Christian Halstrick # Copyright (C) 2008-2009, Google Inc. # Copyright (C) 2009, Johannes Schindelin # Copyright (C) 2008, Mike Ralphson # Copyright (C) 2009, Nicholas Campbell # Copyright (C) 2009, Robin Rosenberg # Copyright (C) 2008, Shawn O. Pearce # and other copyright owners as documented in the project's IP log. # # This program and the accompanying materials are made available # under the terms of the Eclipse Distribution License v1.0 which # accompanies this distribution, is reproduced below, and is # available at http://www.eclipse.org/org/documents/edl-v10.php # # All rights reserved. # # Redistribution and use in source and binary forms, with or # without modification, are permitted provided that the following # conditions are met: # # - Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # - Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following # disclaimer in the documentation and/or other materials provided # with the distribution. # # - Neither the name of the Eclipse Foundation, Inc. nor the # names of its contributors may be used to endorse or promote # products derived from this software without specific prior # written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND # CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, # INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. O_CLI=jgit O_JAR=jgit.jar O_SRC=jgit_src.zip O_DOC=jgit_docs.zip PLUGINS=" org.eclipse.jgit org.eclipse.jgit.pgm " JARS=" org.eclipse.jgit/lib/jsch-0.1.37.jar org.eclipse.jgit.pgm/lib/args4j-2.0.9.jar " PSEP=":" T=".temp$$.$O_CLI" T_MF="$T.MF" R=`pwd` if [ "$OSTYPE" = "cygwin" ] then R=`cygpath -m $R` PSEP=";" fi if [ "$MSYSTEM" = "MINGW" -o "$MSYSTEM" = "MINGW32" ] then PSEP=";" R=`pwd -W` fi if [ -n "$JAVA_HOME" ] then PATH=${JAVA_HOME}/bin${PSEP}${PATH} fi cleanup_bin() { rm -f $T $O_CLI+ $O_JAR+ $O_SRC+ $T_MF for p in $PLUGINS do rm -rf $p/bin2 done rm -rf docs } die() { cleanup_bin rm -f $O_CLI $O_JAR $O_SRC echo >&2 "$@" exit 1 } cleanup_bin rm -f $O_CLI $O_JAR $O_SRC $O_DOC VN=`git describe --abbrev=4 HEAD 2>/dev/null` git update-index -q --refresh if [ -n "`git diff-index --name-only HEAD --`" ] then VN="$VN-dirty" fi VN=${VN:-untagged}`echo "$VN" | sed -e s/-/./g` CLASSPATH= for j in $JARS do if [ -z "$CLASSPATH" ] then CLASSPATH="$R/$j" else CLASSPATH="${CLASSPATH}${PSEP}$R/$j" fi done export CLASSPATH for p in $PLUGINS do echo "Entering $p ..." (cd $p/src && mkdir ../bin2 && find . -name \*.java -type f | xargs javac \ -source 1.5 \ -target 1.5 \ -encoding UTF-8 \ -g \ -d ../bin2) || die "Building $p failed." CLASSPATH="${CLASSPATH}${PSEP}$R/$p/bin2" done echo echo "Version $VN" && echo Manifest-Version: 1.0 >$T_MF && echo Implementation-Title: jgit >>$T_MF && echo Implementation-Version: $VN >>$T_MF && java org.eclipse.jgit.pgm.build.JarLinkUtil \ -include org.eclipse.jgit/bin2 \ -file META-INF/MANIFEST.MF=$T_MF \ >$O_JAR+ && mv $O_JAR+ $O_JAR && echo "Created $O_JAR." && java org.eclipse.jgit.pgm.build.JarLinkUtil \ -include org.eclipse.jgit/src \ -file META-INF/MANIFEST.MF=$T_MF \ >$O_SRC+ && mv $O_SRC+ $O_SRC && echo "Created $O_SRC." && M_TB=META-INF/services/org.eclipse.jgit.pgm.TextBuiltin && sed s/@@use_self@@/1/ jgit.sh >$O_CLI+ && java org.eclipse.jgit.pgm.build.JarLinkUtil \ `for p in $JARS ; do printf %s " -include $p" ;done` \ `for p in $PLUGINS; do printf %s " -include $p/bin2";done` \ -file $M_TB=org.eclipse.jgit.pgm/src/$M_TB \ -file META-INF/MANIFEST.MF=$T_MF \ >>$O_CLI+ && chmod 555 $O_CLI+ && mv $O_CLI+ $O_CLI && echo "Created $O_CLI." || die "Build failed." echo "Building Javadocs ..." for p in $PLUGINS; do javadoc -quiet -sourcepath "$p/src/" -d "docs/$p/" \ `find "$p/src" -name "*.java"` done (cd docs && jar cf "../$O_DOC" .) echo "Created $O_DOC." cleanup_bin