|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
BINOC_SYSTEM=`uname | tr [:upper:] [:lower:]`
|
|
|
|
BINOC_PYTHON=`which python2.7 2>/dev/null`
|
|
|
|
BINOC_GIT=`which git 2>/dev/null`
|
|
|
|
BINOC_CURL=`which curl 2>/dev/null`
|
|
|
|
BINOC_PLATFORM=./platform
|
|
|
|
BINOC_MACH=$BINOC_PLATFORM/mach
|
|
|
|
BINOC_CONFIG_GUESS=`./platform/build/autoconf/config.guess`
|
|
|
|
|
|
|
|
# =============================================================================
|
|
|
|
|
|
|
|
if [ -z "$BINOC_PYTHON" ]; then
|
|
|
|
printf "We could not find Python 2.7 which is required for just about everything!\n"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
# =============================================================================
|
|
|
|
|
|
|
|
# Determin the current OS
|
|
|
|
# This will also be exported so it can be picked up by .mozconfig
|
|
|
|
if [[ "$BINOC_SYSTEM" == "mingw32_nt-"* ]]; then
|
|
|
|
BINOC_SYSTEM=windows
|
|
|
|
|
|
|
|
if [ "$BINOC_CONFIG_GUESS" == "x86_64-pc-mingw32" ]; then
|
|
|
|
BINOC_CONFIG_GUESS=win64
|
|
|
|
else
|
|
|
|
BINOC_CONFIG_GUESS=win32
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
export BINOC_SYSTEM=$BINOC_SYSTEM
|
|
|
|
export BINOC_CONFIG_GUESS=$BINOC_CONFIG_GUESS
|
|
|
|
|
|
|
|
# =============================================================================
|
|
|
|
|
|
|
|
# Determin the git branches or commits for use in the .mozconfig objdir path
|
|
|
|
# If there is no git or you aren't building in a git repository then the value
|
|
|
|
# will be blank. This is ok.
|
|
|
|
if [ -n "$BINOC_GIT" ]; then
|
|
|
|
BINOC_COMM_BRANCH=`"${BINOC_GIT}" symbolic-ref --short HEAD 2>/dev/null | tr [:upper:] [:lower:]`
|
|
|
|
BINOC_PLATFORM_BRANCH=`cd ${BINOC_PLATFORM} && "${BINOC_GIT}" symbolic-ref --short HEAD 2>/dev/null | tr [:upper:] [:lower:]`
|
|
|
|
|
|
|
|
# if we don't have a comm branch then don't even bother
|
|
|
|
if [ -n "$BINOC_COMM_BRANCH" ]; then
|
|
|
|
# If we aren't on the tip of a branch try getting the platform commit short sha
|
|
|
|
if [ -z "$BINOC_PLATFORM_BRANCH" ]; then
|
|
|
|
BINOC_PLATFORM_BRANCH=`cd ${BINOC_PLATFORM} && "${BINOC_GIT}" rev-parse --short HEAD 2>/dev/null`
|
|
|
|
fi
|
|
|
|
|
|
|
|
# See if the platform branch or commit sha if not just forget it
|
|
|
|
if [ -n "$BINOC_PLATFORM_BRANCH" ]; then
|
|
|
|
export BINOC_GIT_BRANCH=$BINOC_COMM_BRANCH-$BINOC_PLATFORM_BRANCH
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
# =============================================================================
|
|
|
|
|
|
|
|
# This will process the commands given to the stub. If there is no match then
|
|
|
|
# just pass it to platform (real) mach
|
|
|
|
if [ "$1" == "release" ]; then
|
|
|
|
# We are going to assume you want to build, package, and generate a mar
|
|
|
|
$BINOC_MACH build
|
|
|
|
$BINOC_MACH package
|
|
|
|
|
|
|
|
# Windows also generates an NSIS installer and that is required before mar
|
|
|
|
if [ "$BINOC_SYSTEM" == "windows" ]; then
|
|
|
|
$BINOC_MACH installer
|
|
|
|
fi
|
|
|
|
|
|
|
|
$BINOC_MACH mar
|
|
|
|
elif [ "$1" == "localbuild" ]; then
|
|
|
|
# This builds and stages the application in dist/MOZ_APP_NAME but does not
|
|
|
|
# actually generate an archive or any of the other stuff
|
|
|
|
$BINOC_MACH build
|
|
|
|
$BINOC_MACH stage
|
|
|
|
elif [[ "$1" == "superclobber" && -d "../.obj" ]]; then
|
|
|
|
printf "Removing all object directories in ../.obj\n"
|
|
|
|
rm -rf ../.obj/*
|
|
|
|
elif [ "$1" == "version" ]; then
|
|
|
|
# This will execute version2k.py and pass any remaining args to it
|
|
|
|
$BINOC_PYTHON ./build/version2k.py ${@:2}
|
|
|
|
elif [ "$1" == "checkout" ] && [ -n "$BINOC_GIT" ]; then
|
|
|
|
printf "binoc-central:\n"
|
|
|
|
|
|
|
|
if [ "$2" == "absolute-trunk" ] && [ "$COMM_BRANCH" != "trunk" ]; then
|
|
|
|
"$BINOC_GIT" checkout TRUNK
|
|
|
|
fi
|
|
|
|
|
|
|
|
"$BINOC_GIT" pull
|
|
|
|
|
|
|
|
if [ ! -f $BINOC_PLATFORM/CLOBBER ]; then
|
|
|
|
"$BINOC_GIT" submodule init platform
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "$2" == "absolute-trunk" ]; then
|
|
|
|
printf "\nUnified XUL Platform:\n"
|
|
|
|
|
|
|
|
cd $BINOC_PLATFORM
|
|
|
|
|
|
|
|
if [ "$BINOC_PLATFORM_BRANCH" != "master" ]; then
|
|
|
|
"$BINOC_GIT" checkout master
|
|
|
|
fi
|
|
|
|
|
|
|
|
"$BINOC_GIT" pull
|
|
|
|
else
|
|
|
|
"$BINOC_GIT" submodule update
|
|
|
|
fi
|
|
|
|
elif [ "$1" == "reset" ] && [ -n "$BINOC_GIT" ]; then
|
|
|
|
if [ "$2" == "comm" ]; then
|
|
|
|
printf "binoc-central:\n"
|
|
|
|
"$BINOC_GIT" reset --hard
|
|
|
|
elif [ "$2" == "platform" ]; then
|
|
|
|
printf "Unified XUL Platform:\n"
|
|
|
|
cd $BINOC_PLATFORM
|
|
|
|
"$BINOC_GIT" reset --hard
|
|
|
|
else
|
|
|
|
printf "Reset what?\n"
|
|
|
|
fi
|
|
|
|
elif [ "$1" == "webpatch" ] && [ -n "$BINOC_GIT" ] && [ -n "$BINOC_CURL" ]; then
|
|
|
|
if [ "$2" == "platform" ]; then
|
|
|
|
printf "Unified XUL Platform:\n"
|
|
|
|
cd $BINOC_PLATFORM
|
|
|
|
elif [ "$2" == "comm" ]; then
|
|
|
|
printf "binoc-central:\n"
|
|
|
|
else
|
|
|
|
printf "Patch what?\n"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ -z "$3" ]; then
|
|
|
|
printf "Patch with what?"
|
|
|
|
exit 1
|
|
|
|
else
|
|
|
|
if [[ "$3" == *"github.com"* ]]; then
|
|
|
|
_patch=$3.patch
|
|
|
|
else
|
|
|
|
_patch=$3
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
$BINOC_CURL -L $_patch | "$BINOC_GIT" apply --reject
|
|
|
|
else
|
|
|
|
# We don't know what the command is but real-mach might so just pass
|
|
|
|
# all the args to it
|
|
|
|
$BINOC_MACH $@
|
|
|
|
fi
|
|
|
|
|