On Sat, Oct 28, 2017 at 12:53:50PM +1100, Alexey Kardashevskiy wrote: > On 28/10/17 00:14, Daniel P. Berrange wrote: > > Some users can't run a bare 'git' command, due to need for a transparent > > proxying solution such as 'tsocks'. This adds an argument to configure to > > let users specify such a thing: > > > > ./configure --with-git="tsocks git" > > > > The submodule script is also updated to give the user a hint about using > > this > > flag, if we fail to checkout modules. > > > > Signed-off-by: Daniel P. Berrange <berra...@redhat.com> > > --- > > Makefile | 4 ++-- > > configure | 5 +++++ > > scripts/git-submodule.sh | 30 +++++++++++++++++++++++++----- > > 3 files changed, 32 insertions(+), 7 deletions(-) > > > > diff --git a/Makefile b/Makefile > > index 9372742f86..4c9d0eaef2 100644 > > --- a/Makefile > > +++ b/Makefile > > @@ -21,14 +21,14 @@ git-submodule-update: > > ifeq (0,$(MAKELEVEL)) > > git_module_status := $(shell \ > > cd '$(SRC_PATH)' && \ > > - ./scripts/git-submodule.sh status $(GIT_SUBMODULES); \ > > + GIT="$(GIT)" ./scripts/git-submodule.sh status $(GIT_SUBMODULES); \ > > echo $$?; \ > > ) > > > > ifeq (1,$(git_module_status)) > > git-submodule-update: > > $(call quiet-command, \ > > - (cd $(SRC_PATH) && ./scripts/git-submodule.sh update > > $(GIT_SUBMODULES)), \ > > + (cd $(SRC_PATH) && GIT="$(GIT)" ./scripts/git-submodule.sh > > update $(GIT_SUBMODULES)), \ > > "GIT","$(GIT_SUBMODULES)") > > endif > > endif > > diff --git a/configure b/configure > > index 03547cea6a..65765968f3 100755 > > --- a/configure > > +++ b/configure > > @@ -271,6 +271,7 @@ then > > else > > git_submodules="" > > fi > > +git="git" > > > > # Don't accept a target_list environment variable. > > unset target_list > > @@ -1294,6 +1295,8 @@ for opt do > > error_exit "vhost-user isn't available on win32" > > fi > > ;; > > + --with-git=*) git="$optarg" > > + ;; > > *) > > echo "ERROR: unknown option $opt" > > echo "Try '$0 --help' for more information" > > @@ -5338,6 +5341,7 @@ echo "local state directory queried at runtime" > > echo "Windows SDK $win_sdk" > > fi > > echo "Source path $source_path" > > +echo "GIT binary $git" > > echo "GIT submodules $git_submodules" > > echo "C compiler $cc" > > echo "Host C compiler $host_cc" > > @@ -5528,6 +5532,7 @@ echo "extra_cxxflags=$EXTRA_CXXFLAGS" >> > > $config_host_mak > > echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak > > echo "qemu_localedir=$qemu_localedir" >> $config_host_mak > > echo "libs_softmmu=$libs_softmmu" >> $config_host_mak > > +echo "GIT=$git" >> $config_host_mak > > echo "GIT_SUBMODULES=$git_submodules" >> $config_host_mak > > > > echo "ARCH=$ARCH" >> $config_host_mak > > diff --git a/scripts/git-submodule.sh b/scripts/git-submodule.sh > > index 08932a35f0..c66567d409 100755 > > --- a/scripts/git-submodule.sh > > +++ b/scripts/git-submodule.sh > > @@ -3,14 +3,19 @@ > > # This code is licensed under the GPL version 2 or later. See > > # the COPYING file in the top-level directory. > > > > -set -e > > - > > substat=".git-submodule-status" > > > > command=$1 > > shift > > modules="$@" > > > > +test -z "$GIT" && GIT=git > > + > > +error() { > > + printf "$0: %s\n" "$*" >&2 > > + exit 1 > > +} > > + > > if test -z "$modules" > > then > > test -e $substat || touch $substat > > @@ -27,12 +32,27 @@ case "$command" in > > status) > > test -f "$substat" || exit 1 > > trap "rm -f ${substat}.tmp" EXIT > > - git submodule status $modules > "${substat}.tmp" > > + $GIT submodule status $modules > "${substat}.tmp" > > + test $? -ne 0 && error "failed to query git submodule status" > > diff "${substat}" "${substat}.tmp" >/dev/null > > exit $? > > ;; > > update) > > - git submodule update --init $modules 1>/dev/null > > - git submodule status $modules > "${substat}" > > + $GIT submodule update --init $modules 1>/dev/null > > + if test $? -ne 0 ; then > > + 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 > > + exit 1 > > + fi > > + $GIT submodule status $modules > "${substat}" > > + test $? -ne 0 && error "failed to save git submodule status" > > > The way I am testing it - I simply delete .git-submodule-status (I used to > change it but deleting works as well) and then I get: > > ./scripts/git-submodule.sh: 74: ./scripts/git-submodule.sh: cannot create > .git-submodule-status: Read-only file system > > because "git submodule update" returns 0 (as everything is up to date) but > updating status fails. Which is fine, I would just like to get a better > message as even after few days of reading this script, I do not remember in > what order I should pass submodules to scripts/git-submodule.sh. Yeah, I > can find it in output but even the name of script to run does not stick to > my brain :( > > Something like this: > > - test $? -ne 0 && error "failed to save git submodule status" > + test $? -ne 0 && error "\"$GIT submodule status $modules\" failed to > save git submodule status"
Take a look at the 3rd patch - it now prints out the exact command you would need to run in the writable-source dir. Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|