diff options
author | 2023-10-10 11:40:56 +0000 | |
---|---|---|
committer | 2023-10-10 11:40:56 +0000 | |
commit | e02cda008591317b1625707ff8e115a4841aa889 (patch) | |
tree | aee302e3cf8b59ec2d32ec481be3d1afddfc8968 /scripts/git-submodule.sh | |
parent | cc668e6b7e0ffd8c9d130513d12053cf5eda1d3b (diff) |
Introduce Virtio-loopback epsilon release:
Epsilon release introduces a new compatibility layer which make virtio-loopback
design to work with QEMU and rust-vmm vhost-user backend without require any
changes.
Signed-off-by: Timos Ampelikiotis <t.ampelikiotis@virtualopensystems.com>
Change-Id: I52e57563e08a7d0bdc002f8e928ee61ba0c53dd9
Diffstat (limited to 'scripts/git-submodule.sh')
-rwxr-xr-x | scripts/git-submodule.sh | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/scripts/git-submodule.sh b/scripts/git-submodule.sh new file mode 100755 index 000000000..e225d3a96 --- /dev/null +++ b/scripts/git-submodule.sh @@ -0,0 +1,104 @@ +#!/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="$@" + +# if --with-git-submodules=ignore, do nothing +test "$command" = "ignore" && exit 0 + +test -z "$GIT" && GIT=git + +cd "$(dirname "$0")/.." + +update_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 --with-git-submodules=validate" + echo + echo "and then manually update submodules prior to running make, with:" + echo + echo " $ scripts/git-submodule.sh update $modules" + echo + exit 1 +} + +validate_error() { + if test "$1" = "validate"; then + echo "GIT submodules checkout is out of date, and submodules" + echo "configured for validate only. Please run" + echo " scripts/git-submodule.sh update $maybe_modules" + echo "from the source directory or call configure with" + echo " --with-git-submodules=update" + echo "To disable GIT submodules validation, use" + echo " --with-git-submodules=ignore" + fi + 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|validate) + if test -z "$maybe_modules" + then + test -s ${substat} && validate_error "$command" || exit 0 + fi + + test -f "$substat" || validate_error "$command" + for module in $modules; do + CURSTATUS=$($GIT submodule status $module) + OLDSTATUS=$(cat $substat | grep $module) + if test "$CURSTATUS" != "$OLDSTATUS"; then + validate_error "$command" + 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 && update_error "failed to update modules" + + $GIT submodule status $modules > "${substat}" + test $? -ne 0 && update_error "failed to save git submodule status" >&2 + ;; +esac + +exit 0 |