From: Trevor Woerner <[email protected]> If the module/component to be processed doesn't exist, assume it needs to be cloned from the repository first. Removes the need for an explicit clone command.
Signed-off-by: Trevor Woerner <[email protected]> --- build.sh | 84 +++++++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 54 insertions(+), 30 deletions(-) diff --git a/build.sh b/build.sh index 10f716b..412d2de 100755 --- a/build.sh +++ b/build.sh @@ -1,5 +1,7 @@ #!/bin/sh +DEFAULT_GITROOT="git://anongit.freedesktop.org/git" + envoptions() { cat << EOF global environment variables you may set: @@ -12,8 +14,8 @@ global environment variables you may set to replace default functionality: MAKE: program to use instead of 'make' (default: make) FONTPATH: font path to use (defaults under: \$PREFIX/\$LIBDIR...) LIBDIR: path under \$PREFIX for libraries (e.g., lib64) (default: lib) - GITROOT: path to freedesktop.org git root, only needed for --clone - (default: git://anongit.freedesktop.org/git) + GITROOT: path to git root from which to clone + (usually freedesktop.org: $DEFAULT_GITROOT) global environment variables you may set to augment functionality: CONFFLAGS: additional flags to pass to all configure scripts @@ -139,7 +141,24 @@ checkfortars() { done } +# the git clone command needs special proessing in order to correctly +# map the module name back to the source git repository as per the +# layout currently being used by freedesktop.org-like repositories +# arguments: +# $1 - module (required) +# $2 - component (optional) +# returns: +# 0 - good +# (anything else) - bad clone() { + local rtn + + # preconds + if [ -z "$1" ]; then + echo "clone() precondition failure: required argument \$1 not provided" + return 1 + fi + case $1 in "pixman") BASEDIR="" @@ -159,22 +178,26 @@ clone() { esac DIR="$1/$2" - GITROOT=${GITROOT:="git://anongit.freedesktop.org/git"} + GITROOT=${GITROOT:=$DEFAULT_GITROOT} - if [ ! -d "$DIR" ]; then - git clone "$GITROOT/$BASEDIR$DIR" "$DIR" - if [ $? -ne 0 ] && [ ! -d "$DIR" ]; then - return 1 - fi - else - # git cannot clone into an existing directory + if [ -d "$DIR" ]; then + echo "can not clone into existing directory/repository" return 1 fi - return 0 + git clone "$GITROOT/$BASEDIR$DIR" "$DIR" + rtn=$? + + if [ $rtn -ne 0 ]; then + echo "failed to clone module \"$1/$2\"" + clonefailed_components="$clonefailed_components $1/$2" + fi + return $rtn } build() { + local need_config=1 + if [ -n "$LISTONLY" ]; then echo "$1/$2" return 0 @@ -190,23 +213,28 @@ build() { fi fi + # do we need to configure? + if [ -n "$NOAUTOGEN" ]; then + need_config=0 + fi + + # do we need to clone? + if [ ! -d "$1/$2" ]; then + need_config=1 + clone $1 $2 + if [ $? -ne 0 ]; then + if [ -n "$BUILD_ONE" ]; then + exit 1 + fi + return + fi + fi + SRCDIR="" CONFCMD="" if [ -f $1/$2/autogen.sh ]; then SRCDIR="$1/$2" CONFCMD="autogen.sh" - elif [ -n "$CLONE" ]; then - clone $1 $2 - if [ $? -ne 0 ]; then - echo "Failed to clone $1 module component $2. Ignoring." - clonefailed_components="$clonefailed_components $1/$2" - if [ -n "$BUILD_ONE" ]; then - exit 1 - fi - return - fi - SRCDIR="$1/$2" - CONFCMD="autogen.sh" else checkfortars $1 $2 CONFCMD="configure" @@ -254,7 +282,7 @@ build() { fi # Use "sh autogen.sh" since some scripts are not executable in CVS - if [ -z "$NOAUTOGEN" ]; then + if [ $need_config -eq 1 ]; then sh ${DIR_CONFIG}/${CONFCMD} --prefix=${PREFIX} ${LIB_FLAGS} \ ${MOD_SPECIFIC} ${QUIET:+--quiet} \ ${CACHE:+--cache-file=}${CACHE} ${CONFFLAGS} "$CONFCFLAGS" || \ @@ -734,7 +762,6 @@ usage() { echo " -p : run git pull on each component" echo " -r module/component : resume building with this component" echo " -s sudo-command : sudo command to use" - echo " --clone : clone non-existing repositories (uses \$GITROOT if set)" echo " --autoresume file : autoresume from file" echo " --check : run make check in addition to others" echo "" @@ -750,7 +777,7 @@ DIR_CONFIG="." LIB_ONLY=0 # Process command line args -CMDLINE=`getopt -o abcdDf:ghlno:pr:s:L --long check,clone,help,autoresume: -n $0 -- "$@"` +CMDLINE=`getopt -o abcdDf:ghlno:pr:s:L --long check,help,autoresume: -n $0 -- "$@"` if [ $? != 0 ]; then echo "getopt(1) invocation error" exit 1 @@ -771,9 +798,6 @@ while [ 1 ]; do --check) CHECK=1 ;; - --clone) - CLONE=1 - ;; -d) DISTCHECK=1 ;; @@ -890,7 +914,7 @@ if [ -n "$failed_components" ]; then echo "" fi -if [ -n "$CLONE" ] && [ -n "$clonefailed_components" ]; then +if [ -n "$clonefailed_components" ]; then echo "" echo "***** Components failed to clone *****" echo "$clonefailed_components" -- 1.7.3.rc2 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
