qemu/scripts/git-submodule.sh
<<
>>
Prefs
   1#!/bin/sh
   2#
   3# This code is licensed under the GPL version 2 or later.  See
   4# the COPYING file in the top-level directory.
   5
   6substat=".git-submodule-status"
   7
   8command=$1
   9shift
  10maybe_modules="$@"
  11
  12test -z "$GIT" && GIT=git
  13
  14error() {
  15    echo "$0: $*"
  16    echo
  17    echo "Unable to automatically checkout GIT submodules '$modules'."
  18    echo "If you require use of an alternative GIT binary (for example to"
  19    echo "enable use of a transparent proxy), then please specify it by"
  20    echo "running configure by with the '--with-git' argument. e.g."
  21    echo
  22    echo " $ ./configure --with-git='tsocks git'"
  23    echo
  24    echo "Alternatively you may disable automatic GIT submodule checkout"
  25    echo "with:"
  26    echo
  27    echo " $ ./configure --disable-git-update"
  28    echo
  29    echo "and then manually update submodules prior to running make, with:"
  30    echo
  31    echo " $ scripts/git-submodule.sh update $modules"
  32    echo
  33    exit 1
  34}
  35
  36modules=""
  37for m in $maybe_modules
  38do
  39    $GIT submodule status $m 1> /dev/null 2>&1
  40    if test $? = 0
  41    then
  42        modules="$modules $m"
  43    else
  44        echo "warn: ignoring non-existent submodule $m"
  45    fi
  46done
  47
  48if test -n "$maybe_modules" && ! test -e ".git"
  49then
  50    echo "$0: unexpectedly called with submodules but no git checkout exists"
  51    exit 1
  52fi
  53
  54case "$command" in
  55status)
  56    if test -z "$maybe_modules"
  57    then
  58         test -s ${substat} && exit 1 || exit 0
  59    fi
  60
  61    test -f "$substat" || exit 1
  62    for module in $modules; do
  63        CURSTATUS=$($GIT submodule status $module)
  64        OLDSTATUS=$(cat $substat | grep $module)
  65        if test "$CURSTATUS" != "$OLDSTATUS"; then
  66            exit 1
  67        fi
  68    done
  69    exit 0
  70    ;;
  71update)
  72    if test -z "$maybe_modules"
  73    then
  74        test -e $substat || touch $substat
  75        exit 0
  76    fi
  77
  78    $GIT submodule update --init $modules 1>/dev/null
  79    test $? -ne 0 && error "failed to update modules"
  80
  81    $GIT submodule status $modules > "${substat}"
  82    test $? -ne 0 && error "failed to save git submodule status" >&2
  83    ;;
  84esac
  85
  86exit 0
  87