From: "Daniel P. Berrange" <berrange@redhat.com>
To: Alexey Kardashevskiy <aik@ozlabs.ru>
Cc: qemu-devel@nongnu.org, "Philippe Mathieu-Daudé" <f4bug@amsat.org>,
"Peter Maydell" <peter.maydell@linaro.org>
Subject: Re: [Qemu-devel] [PATCH v2 1/4] build: allow setting a custom GIT binary for transparent proxying
Date: Sat, 28 Oct 2017 21:45:05 +0100 [thread overview]
Message-ID: <20171028204505.GA21304@redhat.com> (raw)
In-Reply-To: <f1716a0f-6c6d-7704-e628-3c4cfc1a6bf2@ozlabs.ru>
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 <berrange@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 :|
next prev parent reply other threads:[~2017-10-28 20:45 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-27 13:14 [Qemu-devel] [PATCH v2 0/4] Various improvements to submodule handling Daniel P. Berrange
2017-10-27 13:14 ` [Qemu-devel] [PATCH v2 1/4] build: allow setting a custom GIT binary for transparent proxying Daniel P. Berrange
2017-10-28 1:53 ` Alexey Kardashevskiy
2017-10-28 20:45 ` Daniel P. Berrange [this message]
2017-10-29 1:47 ` Alexey Kardashevskiy
2017-10-29 7:57 ` Daniel P. Berrange
2017-10-29 14:08 ` Alexey Kardashevskiy
2017-10-29 16:29 ` Daniel P. Berrange
2017-10-29 23:49 ` Alexey Kardashevskiy
2017-10-30 7:52 ` Daniel P. Berrange
2017-10-31 3:30 ` Alexey Kardashevskiy
2017-10-27 13:14 ` [Qemu-devel] [PATCH v2 2/4] build: don't create temporary files in source dir Daniel P. Berrange
2017-10-28 5:25 ` Eric Blake
2017-10-28 6:37 ` Alexey Kardashevskiy
2017-10-27 13:14 ` [Qemu-devel] [PATCH v2 3/4] build: allow automatic git submodule updates to be disabled Daniel P. Berrange
2017-10-28 5:28 ` Eric Blake
2017-10-27 13:14 ` [Qemu-devel] [PATCH v2 4/4] build: don't fail if given a git submodule which does not exist Daniel P. Berrange
2017-10-28 1:27 ` Alexey Kardashevskiy
2017-10-28 5:58 ` Eric Blake
2017-10-28 5:34 ` [Qemu-devel] [PATCH v2 0/4] Various improvements to submodule handling Eric Blake
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20171028204505.GA21304@redhat.com \
--to=berrange@redhat.com \
--cc=aik@ozlabs.ru \
--cc=f4bug@amsat.org \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).