mirror of
https://github.com/qemu/qemu.git
synced 2024-12-17 17:23:52 +08:00
1a920d2b63
If one is compiling more than one tree from the same source, it is possible that they need different submodules. Change the check to see that all modules that we are interested in are updated, discarding the ones that we don't care about. Signed-off-by: Juan Quintela <quintela@redhat.com> --- v1->v2: patchw insists in not using modules
87 lines
2.0 KiB
Bash
Executable File
87 lines
2.0 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# This code is licensed under the GPL version 2 or later. See
|
|
# the COPYING file in the top-level directory.
|
|
|
|
substat=".git-submodule-status"
|
|
|
|
command=$1
|
|
shift
|
|
maybe_modules="$@"
|
|
|
|
test -z "$GIT" && GIT=git
|
|
|
|
error() {
|
|
echo "$0: $*"
|
|
echo
|
|
echo "Unable to automatically checkout GIT submodules '$modules'."
|
|
echo "If you require use of an alternative GIT binary (for example to"
|
|
echo "enable use of a transparent proxy), then please specify it by"
|
|
echo "running configure by with the '--with-git' argument. e.g."
|
|
echo
|
|
echo " $ ./configure --with-git='tsocks git'"
|
|
echo
|
|
echo "Alternatively you may disable automatic GIT submodule checkout"
|
|
echo "with:"
|
|
echo
|
|
echo " $ ./configure --disable-git-update"
|
|
echo
|
|
echo "and then manually update submodules prior to running make, with:"
|
|
echo
|
|
echo " $ scripts/git-submodule.sh update $modules"
|
|
echo
|
|
exit 1
|
|
}
|
|
|
|
modules=""
|
|
for m in $maybe_modules
|
|
do
|
|
$GIT submodule status $m 1> /dev/null 2>&1
|
|
if test $? = 0
|
|
then
|
|
modules="$modules $m"
|
|
else
|
|
echo "warn: ignoring non-existent submodule $m"
|
|
fi
|
|
done
|
|
|
|
if test -n "$maybe_modules" && ! test -e ".git"
|
|
then
|
|
echo "$0: unexpectedly called with submodules but no git checkout exists"
|
|
exit 1
|
|
fi
|
|
|
|
case "$command" in
|
|
status)
|
|
if test -z "$maybe_modules"
|
|
then
|
|
test -s ${substat} && exit 1 || exit 0
|
|
fi
|
|
|
|
test -f "$substat" || exit 1
|
|
for module in $modules; do
|
|
CURSTATUS=$($GIT submodule status $module)
|
|
OLDSTATUS=$(cat $substat | grep $module)
|
|
if test "$CURSTATUS" != "$OLDSTATUS"; then
|
|
exit 1
|
|
fi
|
|
done
|
|
exit 0
|
|
;;
|
|
update)
|
|
if test -z "$maybe_modules"
|
|
then
|
|
test -e $substat || touch $substat
|
|
exit 0
|
|
fi
|
|
|
|
$GIT submodule update --init $modules 1>/dev/null
|
|
test $? -ne 0 && error "failed to update modules"
|
|
|
|
$GIT submodule status $modules > "${substat}"
|
|
test $? -ne 0 && error "failed to save git submodule status" >&2
|
|
;;
|
|
esac
|
|
|
|
exit 0
|