18f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen#!/bin/bash 28f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 38f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chensvnfetch() { 48f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen REV="${3:-HEAD}" 58f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "Fetching from ${1} to ${2} at revision ${REV}" 68f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen cd $SRC_DIR 78f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if ! [ -f "${2}/.svn/entries" ]; then 88f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen mkdir "${2}" 98f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen cd "${2}" 108f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen svn co --non-interactive --trust-server-cert "${1}" -r "${REV}" "." 118f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen else 128f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen cd "${2}" 138f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen svn cleanup 148f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen svn up -r "${REV}" 158f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 168f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen} 178f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 188f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chengitfetch() { 198f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "Fetching ${2} branch/commit from ${1} to ${3} via git" 208f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen cd $SRC_DIR 218f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if ! [ -f "${3}/.git/config" ]; then 228f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen git clone "${1}" "${3}" 238f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen cd "${3}" 248f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen git checkout "${2}" 258f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen else 268f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen cd "${3}" 278f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen git fetch 288f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen git checkout "${2}" 298f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 308f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 318f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if [ $? -ne 0 ]; then 328f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen exit 338f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 348f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen} 358f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 368f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenhgfetch() { 378f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen( 388f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "Fetching ${2} branch from ${1} to ${3} via mercurial" 398f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen cd src 408f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if [ -e "${2}/.hg" ] ; then 418f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen cd ${2} 428f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen hg pull 438f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen else 448f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen hg clone "${1}" "${2}" 458f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 468f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen hg up -r ${3} 478f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen) 488f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if [ $? -ne 0 ]; then 498f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen exit 508f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 518f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen} 528f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 538f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 548f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chentestsmackgit() { 558f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen cd $SRC_DIR 568f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if [ -f .used-smack-git-repo ] && [ $(cat .used-smack-git-repo) != $SMACK_REPO ] ; then 578f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "Used smack repository has changed!" 588f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "Old: $(cat .used-smack-git-repo) New: ${SMACK_REPO}." 598f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "Deleting old local copy" 608f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen rm -rf smack 618f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 628f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "${SMACK_REPO}" > .used-smack-git-repo 638f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen} 648f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 658f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenfetchall() { 668f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "## Step 15: fetching sources" 678f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if $SMACK_LOCAL ; then 688f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen # always clean the local copy first 698f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen rm -rf ${SRC_DIR}/smack 708f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen mkdir ${SRC_DIR}/smack 718f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen cd $SMACK_REPO 728f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen git archive $SMACK_BRANCH | tar -x -C ${SRC_DIR}/smack 738f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if [ $? -ne 0 ]; then 748f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen exit 758f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 768f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen else 778f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen execute gitfetch "$SMACK_REPO" "$SMACK_BRANCH" "smack" 788f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 798f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 808f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if ! $UPDATE_REMOTE ; then 818f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "Won't update or fetch third party resources" 828f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen wait 838f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen return 848f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 858f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 868f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen execute svnfetch "http://svn.apache.org/repos/asf/qpid/trunk/qpid/java/management/common/src/main/" "qpid" 878f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen execute svnfetch "http://svn.apache.org/repos/asf/harmony/enhanced/java/trunk/classlib/modules/auth/src/main/java/common/" "harmony" 888f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen execute svnfetch "https://dnsjava.svn.sourceforge.net/svnroot/dnsjava/trunk" "dnsjava" 898f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen execute gitfetch "git://kenai.com/jbosh~origin" "master" "jbosh" 908f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen # jldap doesn't compile with the latest version (missing deps?), therefore it's a fixed version for now 918f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen # execute gitfetch "git://git.openldap.org/openldap-jldap.git" "master" "novell-openldap-jldap" 928f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen wait 938f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen} 948f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 958f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi ChencreateVersionTag() { 968f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen # Skip this step is no version tag is given 978f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen [[ -z $VERSION_TAG ]] && return 988f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 998f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen local v 1008f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen cat <<EOF > $TAG_FILE 1018f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen#!/bin/bash 1028f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 1038f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen# This file contains the version information of the components that 1048f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen# were used to build this aSmack version 1058f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 1068f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chendeclare -g -A COMPONENT_VERSIONS 1078f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi ChenEOF 1088f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 1098f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen for d in $(ls $SRC_DIR) ; do 1108f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen cd $SRC_DIR 1118f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 1128f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen # Don't record the components version for static-src 1138f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen for static in $(ls ${ASMACK_BASE}/static-src) ; do 1148f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen # Don't record the version if it's from the static sources 1158f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen [ $d == $static ] && continue 1168f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen done 1178f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 1188f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if [[ -d $d/.git ]] ; then 1198f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen v=$(cd $d && git rev-parse HEAD) 1208f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen key=$d 1218f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen COMPONENT_VERSIONS["$d"]=$v 1228f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen elif [[ -d $d/.svn ]] ; then 1238f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen v=$(cd $d && svn info |grep Revision |cut -f 2 -d ' ') 1248f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen key=$d 1258f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen COMPONENT_VERSIONS["$d"]=$v 1268f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 1278f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen done 1288f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 1298f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if $SMACK_LOCAL ; then 1308f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen cd $SMACK_REPO 1318f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen v=$(git rev-parse HEAD) 1328f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen COMPONENT_VERSIONS[smack]=$v 1338f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 1348f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 1358f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen cd ${ASMACK_BASE} 1368f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen v=$(git rev-parse HEAD) 1378f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen COMPONENT_VERSIONS[asmack]=$v 1388f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 1398f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen for i in "${!COMPONENT_VERSIONS[@]}" ; do 1408f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "COMPONENT_VERSIONS[$i]=${COMPONENT_VERSIONS[$i]}" >> $TAG_FILE 1418f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen done 1428f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen} 1438f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 1448f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chencopyfolder() { 1458f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen cd ${ASMACK_BASE} 1468f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen ( 1478f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen cd "${1}" 1488f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen tar -cSsp --exclude-vcs "${3}" 1498f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen ) | ( 1508f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen cd "${2}" 1518f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen tar -xSsp 1528f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen ) 1538f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen wait 1548f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen} 1558f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 1568f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chencreatebuildsrc() { 1578f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "## Step 20: creating build/src" 1588f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen cd "${ASMACK_BASE}" 1598f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen rm -rf build/src 1608f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen mkdir -p build/src/trunk 1618f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 1628f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen execute copyfolder "src/smack/source/" "build/src/trunk" "." 1638f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen execute copyfolder "src/qpid/java" "build/src/trunk" "org/apache/qpid/management/common/sasl" 1648f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen execute copyfolder "src/novell-openldap-jldap" "build/src/trunk" "." 1658f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen execute copyfolder "src/dnsjava" "build/src/trunk" "org" 1668f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen execute copyfolder "src/harmony" "build/src/trunk" "." 1678f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen execute copyfolder "src/jbosh/src/main/java" "build/src/trunk" "." 1688f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if $BUILD_JINGLE ; then 1698f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen execute copyfolder "src/smack/jingle/extension/source/" "build/src/trunk" "." 1708f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 1718f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen wait 1728f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen # custom overwrites some files from smack, so this has to be done as last 1738f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen copyfolder "src/custom" "build/src/trunk" "." 1748f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen} 1758f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 1768f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenpatchsrc() { 1778f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "## Step 25: patch build/src" 1788f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen cd ${ASMACK_BASE}/build/src/trunk/ 1798f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen for PATCH in `(cd "../../../${1}" ; find -maxdepth 1 -type f)|sort` ; do 1808f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo $PATCH 1818f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if [[ $PATCH == *.sh ]]; then 1828f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen "../../../${1}/$PATCH" || exit 1 1838f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen elif [[ $PATCH == *.patch ]]; then 1848f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen patch -p0 < "../../../${1}/$PATCH" || exit 1 1858f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 1868f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen done 1878f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen} 1888f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 1898f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenbuild() { 1908f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "## Step 30: compile" 1918f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen buildandroid 1928f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if [ $? -ne 0 ]; then 1938f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen exit 1 1948f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 1958f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen} 1968f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 1978f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenbuildandroid() { 1988f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen local sdklocation 1998f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen local version 2008f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen local sdks 2018f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen local minSdkVer=8 2028f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 2038f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen cd $ASMACK_BASE 2048f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 2058f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if [ ! -f local.properties ] ; then 2068f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "Could not find local.properties file" 2078f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "See local.properties.example" 2088f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen exit 1 2098f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 2108f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 2118f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen sdklocation=$(grep sdk-location local.properties| cut -d= -f2) 2128f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if [ -z "$sdklocation" ] ; then 2138f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "Android SDK not found. Don't build android version" 2148f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen exit 1 2158f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 2168f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen for f in ${sdklocation/\$\{user.home\}/$HOME}/platforms/* ; do 2178f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen version=`basename $f` 2188f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if [[ "$version" != android-* ]] ; then 2198f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "$sdklocation contains no Android SDKs" 2208f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen exit 1 2218f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 2228f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if [[ ${version#android-} -ge $minSdkVer ]] ; then 2238f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if [ -n $BUILD_ANDROID_VERSIONS ] ; then 2248f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen for build_version in $BUILD_ANDROID_VERSIONS ; do 2258f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen [ ${version#android-} != $build_version ] && continue 2 2268f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen done 2278f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 2288f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "Building for ${version}" 2298f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen sdks="${sdks} ${version}\n" 2308f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 2318f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 2328f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen done 2338f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 2348f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if [ -z "${sdks}" ] ; then 2358f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "No SDKs of a suitable minimal API (${minSdkVer}) version found" 2368f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen exit 1 2378f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 2388f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 2398f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen local asmack_suffix 2408f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if [[ -n ${VERSION_TAG} ]] && [[ -n ${1} ]] ; then 2418f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen asmack_suffix="${1}-${VERSION_TAG}" 2428f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen elif [[ -n ${VERSION_TAG} ]] ; then 2438f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen asmack_suffix="-${VERSION_TAG}" 2448f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen else 2458f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen asmack_suffix="${1}" 2468f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 2478f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if ! echo -e ${sdks} \ 2488f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen | xargs -I{} -n 1 $XARGS_ARGS ant \ 2498f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen -Dandroid.version={} \ 2508f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen -Djar.suffix="${asmack_suffix}" \ 2518f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen compile-android ; then 2528f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen exit 1 2538f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 2548f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen} 2558f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 2568f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenbuildcustom() { 2578f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen for dir in `find patch -maxdepth 1 -mindepth 1 -type d`; do 2588f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen buildsrc 2598f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen patchsrc "patch" 2608f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if $BUILD_JINGLE ; then 2618f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen patchsrc "jingle" 2628f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen JINGLE_ARGS="-Djingle=lib/jstun.jar" 2638f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 2648f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen patchsrc "${dir}" 2658f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen local custom 2668f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen custom=$(echo ${dir} | sed 's:patch/:-:') 2678f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen ant -Djar.suffix="${custom}" $JINGLE_ARGS 2688f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen buildandroid "${custom}" 2698f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen done 2708f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen} 2718f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 2728f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenparseopts() { 2738f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen while getopts a:b:r:t:cdhjpux OPTION "$@"; do 2748f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen case $OPTION in 2758f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen a) 2768f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen BUILD_ANDROID_VERSIONS="${OPTARG}" 2778f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen ;; 2788f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen r) 2798f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen SMACK_REPO="${OPTARG}" 2808f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen ;; 2818f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen b) 2828f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen SMACK_BRANCH="${OPTARG}" 2838f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen ;; 2848f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen d) 2858f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen set -x 2868f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen XARGS_ARGS="-t" 2878f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen ;; 2888f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen j) 2898f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen BUILD_JINGLE=true 2908f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen ;; 2918f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen u) 2928f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen UPDATE_REMOTE=false 2938f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen ;; 2948f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen c) 2958f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen BUILD_CUSTOM=true 2968f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen ;; 2978f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen p) 2988f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen PARALLEL_BUILD=true 2998f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen ;; 3008f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen t) 3018f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen VERSION_TAG="${OPTARG}" 3028f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen ;; 3038f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen x) 3048f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen PUBLISH_RELEASE=true 3058f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen ;; 3068f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen h) 3078f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "$0 -d -c -u -j -r <repo> -b <branch>" 3088f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "-d: Enable debug" 3098f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "-j: Build jingle code" 3108f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "-c: Apply custom patchs from patch directory" 3118f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "-u: DON'T update remote third party resources" 3128f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "-r <repo>: Git repository (can be local or remote) for underlying smack repository" 3138f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "-b <branch>: Git branch used to build aSmack from underlying smack repository" 3148f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "-p use parallel build where possible" 3158f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "-t <version>: Create a new version tag. You should build aSmack before calling this" 3168f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "-x: Publish the release" 3178f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "-a <SDK Version(s)>: Build only for the given Android SDK versions" 3188f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen exit 3198f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen ;; 3208f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen esac 3218f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen done 3228f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen} 3238f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 3248f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi ChenprepareRelease() { 3258f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if [[ -z ${VERSION_TAG} ]]; then 3268f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "Version tag is not set. Not going to prepare a release" 3278f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen return 3288f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 3298f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 3308f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if [ -d $RELEASE_DIR ] ; then 3318f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen rm -rf $RELEASE_DIR 3328f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 3338f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen mkdir -p $RELEASE_DIR 3348f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 3358f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen mv ${ASMACK_BASE}/build/*.{jar,zip} ${RELEASE_DIR}/ 3368f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen cp $TAG_FILE ${RELEASE_DIR}/ 3378f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen cp ${ASMACK_BASE}/CHANGELOG ${RELEASE_DIR} 3388f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 3398f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if [ -n $GPG_KEY ] ; then 3408f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen find $RELEASE_DIR -maxdepth 1 -and \( -name '*.jar' -or -name '*.zip' \) -print0 \ 3418f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen | xargs -n 1 -0 $XARGS_ARGS gpg --local-user $GPG_KEY --detach-sign 3428f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 3438f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 3448f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen find $RELEASE_DIR -maxdepth 1 -and \( -name '*.jar' -or -name '*.zip' \) -print0 \ 3458f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen | xargs -I{} -n 1 -0 $XARGS_ARGS sh -c 'md5sum {} > {}.md5' 3468f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 3478f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen local release_readme 3488f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen release_readme=${RELEASE_DIR}/README 3498f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 3508f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen sed \ 3518f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen -e "s/\$VERSION_TAG/${VERSION_TAG}/" \ 3528f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen -e "s/\$BUILD_DATE/${BUILD_DATE}/" \ 3538f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen README.asmack > $release_readme 3548f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 3558f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen # Pretty print the component versions at the end of README 3568f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen # Note that there is an exclamation mark at the beginning of the 3578f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen # associative array to access the keys 3588f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen for i in "${!COMPONENT_VERSIONS[@]}" ; do 3598f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen local tabs 3608f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if [[ ${#i} -le 6 ]] ; then 3618f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen tabs="\t\t" 3628f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen else 3638f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen tabs="\t" 3648f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 3658f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo -e "${i}:${tabs}${COMPONENT_VERSIONS[$i]}" >> $release_readme 3668f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen done 3678f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen} 3688f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 3698f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi ChenpublishRelease() { 3708f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if [[ -z ${VERSION_TAG} ]]; then 3718f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "Version tag is not set. Not going to prepare a release" 3728f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen return 3738f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 3748f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 3758f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if [[ -z ${PUBLISH_RELEASE} ]]; then 3768f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "User doesn't want to publish this release" 3778f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen return 3788f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 3798f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 3808f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if [[ -z $PUBLISH_HOST || -z $PUBLISH_DIR ]]; then 3818f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "WARNING: Not going to publish this release as either $PUBLISH_HOST or $PUBLISH_DIR is not set" 3828f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen return 3838f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 3848f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 3858f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen cd ${ASMACK_RELEASES} 3868f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen cat <<EOF | sftp $PUBLISH_HOST 3878f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenrm ${PUBLISH_DIR}/${VERSION_TAG}/* 3888f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenmkdir ${PUBLISH_DIR}/${VERSION_TAG} 3898f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenput -r $VERSION_TAG $PUBLISH_DIR 3908f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi ChenEOF 3918f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen} 3928f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 3938f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenislocalrepo() { 3948f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen local R="^(git|ssh)" 3958f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if [[ $1 =~ $R ]]; then 3968f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen return 1 3978f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen else 3988f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen return 0 3998f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 4008f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen} 4018f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 4028f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Cheninitialize() { 4038f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "## Step 00: initialize" 4048f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if ! [ -d build/src/trunk ]; then 4058f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen mkdir -p build/src/trunk 4068f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 4078f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if [ ! -d src/ ]; then 4088f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen mkdir src 4098f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 4108f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen find build \( -name '*.jar' -or -name '*.zip' \) -print0 | xargs -0 rm -f 4118f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen rm -rf src/custom 4128f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen} 4138f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 4148f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chencleanup() { 4158f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "## Deleting all temporary files" 4168f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen rm -rf build 4178f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen rm -rf src 4188f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen} 4198f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 4208f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chencopystaticsrc() { 4218f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen cp -ur static-src/* src/ 4228f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen} 4238f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 4248f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi ChencmdExists() { 4258f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen command -v $1 &> /dev/null 4268f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen return $? 4278f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen} 4288f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 4298f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi ChenprettyPrintSeconds() { 4308f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen local ttime 4318f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if (( $1 > 59 )); then 4328f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen ttime=$(printf "%dm %ds\n" $(($1/60%60)) $(($1%60)) ) 4338f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen else 4348f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen ttime=$(printf "%ds\n" $(($1)) ) 4358f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 4368f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "Execution took $ttime" 4378f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen} 4388f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 4398f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenexecute() { 4408f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if [ -n "$BACKGROUND" ]; then 4418f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen "$@" & 4428f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen else 4438f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen "$@" 4448f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 4458f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen} 4468f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 4478f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chensetdefaults() { 4488f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen # Default configuration, can be changed with script arguments 4498f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen SMACK_REPO=git://github.com/Flowdalic/smack.git 4508f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen SMACK_BRANCH=master 4518f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen SMACK_LOCAL=false 4528f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen UPDATE_REMOTE=true 4538f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen BUILD_CUSTOM=false 4548f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen BUILD_JINGLE=false 4558f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen JINGLE_ARGS="" 4568f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen PARALLEL_BUILD=false 4578f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen VERSION_TAG="" 4588f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen PUBLISH_RELEASE="" 4598f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen PUBLISH_HOST="" 4608f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen PUBLISH_DIR="" 4618f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen BUILD_ANDROID_VERSIONS="" 4628f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 4638f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen # Often used variables 4648f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen ASMACK_BASE=$(pwd) 4658f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen ASMACK_RELEASES=${ASMACK_BASE}/releases 4668f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen SRC_DIR=${ASMACK_BASE}/src 4678f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen VERSION_TAG_DIR=${ASMACK_BASE}/version-tags 4688f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen STARTTIME=$(date -u "+%s") 4698f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen BUILD_DATE=$(date) 4708f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen # Declare an associative array that is in global scope ('-g') 4718f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen declare -g -A COMPONENT_VERSIONS 4728f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen} 4738f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 4748f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenparseconfig() { 4758f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if [ -f ${ASMACK_BASE}/config ]; then 4768f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen source ${ASMACK_BASE}/config 4778f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 4788f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen} 4798f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 4808f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chensetconfig() { 4818f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if [ ${PARALLEL_BUILD} == "true" ]; then 4828f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen XARGS_ARGS="${XARGS_ARGS} -P4" 4838f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen BACKGROUND="true" 4848f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen else 4858f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen XARGS_ARGS="" 4868f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen BACKGROUND="" 4878f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 4888f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 4898f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if islocalrepo $SMACK_REPO; then 4908f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen SMACK_LOCAL=true 4918f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen SMACK_REPO=`readlink -f $SMACK_REPO` 4928f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 4938f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 4948f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if [[ -n ${VERSION_TAG} ]]; then 4958f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if ! grep ${VERSION_TAG} CHANGELOG; then 4968f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "Could not find the tag in the CHANGELOG file. Please write a short summary of changes" 4978f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen exit 1 4988f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 4998f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if ! git diff --exit-code; then 5008f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "Unstaged changes found, please stages your changes" 5018f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen exit 1 5028f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 5038f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if ! git diff --cached --exit-code; then 5048f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "Staged, but uncommited changes found, please commit" 5058f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen exit 1 5068f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 5078f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen RELEASE_DIR=${ASMACK_RELEASES}/${VERSION_TAG} 5088f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen TAG_FILE=${VERSION_TAG_DIR}/${VERSION_TAG}.tag 5098f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 5108f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen} 5118f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 5128f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenprintconfig() { 5138f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "Smack git repository $SMACK_REPO with branch $SMACK_BRANCH" 5148f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo -e "SMACK_LOCAL:$SMACK_LOCAL\tUPDATE_REMOTE:$UPDATE_REMOTE\tBUILD_CUSTOM:$BUILD_CUSTOM\tBUILD_JINGLE:$BUILD_JINGLE" 5158f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo -e "PARALLEL_BUILD:$PARALLEL_BUILD\tBASE:$ASMACK_BASE" 5168f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen} 5178f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 5188f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi ChencheckPrerequisites() { 5198f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if [[ $BASH_VERSION < 4 ]] ; then 5208f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "aSmack's build.bash needs at least bash version 4" 5218f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen exit 1 5228f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 5238f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 5248f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if ! tar --version |grep GNU &> /dev/null ; then 5258f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "aSmack's build.bash needs GNU tar" 5268f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen exit 1 5278f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen fi 5288f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen} 5298f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 5308f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen# Main 5318f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 5328f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chensetdefaults 5338f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenparseopts $@ 5348f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi ChencheckPrerequisites 5358f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenparseconfig 5368f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chensetconfig 5378f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenprintconfig 5388f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Cheninitialize 5398f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chencopystaticsrc 5408f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chentestsmackgit 5418f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenfetchall 5428f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi ChencreateVersionTag 5438f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chencreatebuildsrc 5448f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenpatchsrc "patch" 545d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 546d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen## 547d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen## BEGIN Modification for android platform build system 548d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen## 549d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenecho done with android modifications 550d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenexit 551d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen## 552d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen## END Modification for android platform build system 553d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen## 554d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen 5558f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenif $BUILD_JINGLE ; then 5568f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen patchsrc "jingle" 5578f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen JINGLE_ARGS="-Djingle=lib/jstun.jar" 5588f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenfi 5598f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenbuild 5608f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 5618f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenif $BUILD_CUSTOM ; then 5628f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen buildcustom 5638f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenfi 5648f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 5658f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenif cmdExists advzip ; then 5668f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "advzip found, compressing files" 5678f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen find build \( -name '*.jar' -or -name '*.zip' \) -print0 | xargs -n 1 -0 $XARGS_ARGS advzip -z4 5688f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenelse 5698f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "Could not find the advzip command." 5708f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "advzip will further reduce the size of the generated jar and zip files," 5718f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen echo "consider installing advzip" 5728f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenfi 5738f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 5748f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi ChenprepareRelease 5758f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi ChenpublishRelease 5768f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 5778f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi ChenSTOPTIME=$(date -u "+%s") 5788f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi ChenRUNTIME=$(( $STOPTIME - $STARTTIME )) 5798f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi ChenprettyPrintSeconds $RUNTIME 5808f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenprintconfig 581