blob: 7637b824c0b015fe91b82a6580b6bd35afb3a916 [file] [log] [blame]
#!/bin/bash
# Expected arguments:
# $1 = out_dir
# $2 = dist_dir
# $3 = build_number
# $4 = number of --parallel-thread (optional)
set -e
PROG_DIR=$(dirname "$0")
CURRENT_OS=$(uname | tr A-Z a-z)
function die() {
echo "$*" > /dev/stderr
echo "Usage: $0 <out_dir> <dest_dir> <build_number> [num_threads=47]" > /dev/stderr
exit 1
}
while [[ -n "$1" ]]; do
if [[ -z "$OUT_DIR" ]]; then
OUT_DIR="$1"
elif [[ -z "$DIST_DIR" ]]; then
DIST_DIR="$1"
elif [[ -z "$BNUM" ]]; then
BNUM="$1"
elif [[ -z "$NUM_THREADS" ]]; then
NUM_THREADS="$1"
else
die "[$0] Unknown parameter: $1"
fi
shift
done
if [[ -z "$OUT_DIR" ]]; then die "## Error: Missing out folder"; fi
if [[ -z "$DIST_DIR" ]]; then die "## Error: Missing destination folder"; fi
if [[ -z "$BNUM" ]]; then die "## Error: Missing build number"; fi
if [[ "$OUT_DIR" != /* ]]
then
pushd "$PROG_DIR"/../../..
OUT_DIR="$PWD/$OUT_DIR"
popd
fi
TARGET="dist makeSdk zipOfflineRepo"
if [[ $CURRENT_OS == "linux" ]]; then
TARGET="$TARGET makeWinSdk"
fi
cd "$PROG_DIR"
GRADLE_FLAGS="--no-daemon --info"
# first build Eclipse/Monitor
( set -x ; OUT_DIR="$OUT_DIR" DIST_DIR="$DIST_DIR" BUILD_NUMBER="$BNUM" ../../gradlew -b ../../build.gradle $GRADLE_FLAGS publishLocal ) || exit $?
( set -x ; OUT_DIR="$OUT_DIR" DIST_DIR="$DIST_DIR" BUILD_NUMBER="$BNUM" ../../gradlew -b ../../../sdk/eclipse/build.gradle $GRADLE_FLAGS copydeps buildEclipse ) || exit $?
# temp disable --parallel builds
#OUT_DIR="$OUT_DIR" DIST_DIR="$DIST_DIR" ../../gradlew -b ../../build.gradle --parallel-threads="${NUM_THREADS:-47}" $GRADLE_FLAGS makeSdk
( set -x ; OUT_DIR="$OUT_DIR" DIST_DIR="$DIST_DIR" BUILD_NUMBER="$BNUM" ../../gradlew -b ../../build.gradle $GRADLE_FLAGS $TARGET ) || exit $?
# Generate repository XML metadata for release script
LATEST_REPO_XSD=$(ls -1 ../../base/sdklib/src/main/java/com/android/sdklib/repository/sdk-repository-*.xsd | sort -r | head -n 1)
SOURCE_PROPS=$PWD/../../../sdk/files/tools_source.properties
ZIPS=""
for OS in linux windows darwin; do
if [[ $OS == $CURRENT_OS || ( $CURRENT_OS == linux && $OS == windows ) ]]; then
ZIP="sdk-repo-$OS-tools-$BNUM.zip"
ZIPS="$ZIPS $OS $DIST_DIR/$ZIP:$ZIP"
# Package source.properties in the zip, it currently lacks it
( set -x
cd $DIST_DIR
cp $SOURCE_PROPS source.properties
zip -9r $ZIP source.properties
rm source.properties
)
# We expect a "tools" folder in the zip file
( set -x
cd $DIST_DIR
rm -rf tools
mkdir tools
cd tools
unzip -q ../$ZIP
cd ..
rm $ZIP
zip -9rq $ZIP tools
rm -rf tools
)
fi
done
( set -x ; ./mk_sdk_repo_xml.sh $DIST_DIR/repository.xml $LATEST_REPO_XSD tools $ZIPS )