* [Qemu-devel] [PATCH v2 0/4] Various improvements to submodule handling
@ 2017-10-27 13:14 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
` (4 more replies)
0 siblings, 5 replies; 20+ messages in thread
From: Daniel P. Berrange @ 2017-10-27 13:14 UTC (permalink / raw)
To: qemu-devel
Cc: Philippe Mathieu-Daudé, Alexey Kardashevskiy, Peter Maydell,
Daniel P. Berrange
I've sent a variety of improvements to submodule handling as separate patches
and its getting slightly confusing. So here is a series with all patches added
together. I've also included a fix that helps us go backwards in time across
the introduction of a submodule.
Daniel P. Berrange (4):
build: allow setting a custom GIT binary for transparent proxying
build: don't create temporary files in source dir
build: allow automatic git submodule updates to be disabled
build: don't fail if given a git submodule which does not exist
Makefile | 15 ++++++++++--
configure | 14 +++++++++++-
scripts/git-submodule.sh | 59 ++++++++++++++++++++++++++++++++++++++++--------
3 files changed, 76 insertions(+), 12 deletions(-)
--
2.13.6
^ permalink raw reply [flat|nested] 20+ messages in thread* [Qemu-devel] [PATCH v2 1/4] build: allow setting a custom GIT binary for transparent proxying 2017-10-27 13:14 [Qemu-devel] [PATCH v2 0/4] Various improvements to submodule handling Daniel P. Berrange @ 2017-10-27 13:14 ` Daniel P. Berrange 2017-10-28 1:53 ` 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 ` (3 subsequent siblings) 4 siblings, 1 reply; 20+ messages in thread From: Daniel P. Berrange @ 2017-10-27 13:14 UTC (permalink / raw) To: qemu-devel Cc: Philippe Mathieu-Daudé, Alexey Kardashevskiy, Peter Maydell, Daniel P. Berrange 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" ;; esac + +exit 0 -- 2.13.6 ^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [Qemu-devel] [PATCH v2 1/4] build: allow setting a custom GIT binary for transparent proxying 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 0 siblings, 1 reply; 20+ messages in thread From: Alexey Kardashevskiy @ 2017-10-28 1:53 UTC (permalink / raw) To: Daniel P. Berrange, qemu-devel; +Cc: Philippe Mathieu-Daudé, Peter Maydell 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" > ;; > esac > + > +exit 0 > -- Alexey ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Qemu-devel] [PATCH v2 1/4] build: allow setting a custom GIT binary for transparent proxying 2017-10-28 1:53 ` Alexey Kardashevskiy @ 2017-10-28 20:45 ` Daniel P. Berrange 2017-10-29 1:47 ` Alexey Kardashevskiy 0 siblings, 1 reply; 20+ messages in thread From: Daniel P. Berrange @ 2017-10-28 20:45 UTC (permalink / raw) To: Alexey Kardashevskiy Cc: qemu-devel, Philippe Mathieu-Daudé, Peter Maydell 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 :| ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Qemu-devel] [PATCH v2 1/4] build: allow setting a custom GIT binary for transparent proxying 2017-10-28 20:45 ` Daniel P. Berrange @ 2017-10-29 1:47 ` Alexey Kardashevskiy 2017-10-29 7:57 ` Daniel P. Berrange 0 siblings, 1 reply; 20+ messages in thread From: Alexey Kardashevskiy @ 2017-10-29 1:47 UTC (permalink / raw) To: Daniel P. Berrange; +Cc: qemu-devel, Philippe Mathieu-Daudé, Peter Maydell On 29/10/17 07:45, Daniel P. Berrange wrote: > 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. For the message in 3/4 to show up, I need to 1) know about --disable-git-update and 2) use it. My testcase is lot more common - I did not use --disable-git-update, and a strange message about writing read-only folder appears, exactly like when I started the conversation. -- Alexey ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Qemu-devel] [PATCH v2 1/4] build: allow setting a custom GIT binary for transparent proxying 2017-10-29 1:47 ` Alexey Kardashevskiy @ 2017-10-29 7:57 ` Daniel P. Berrange 2017-10-29 14:08 ` Alexey Kardashevskiy 0 siblings, 1 reply; 20+ messages in thread From: Daniel P. Berrange @ 2017-10-29 7:57 UTC (permalink / raw) To: Alexey Kardashevskiy Cc: qemu-devel, Philippe Mathieu-Daudé, Peter Maydell On Sun, Oct 29, 2017 at 12:47:07PM +1100, Alexey Kardashevskiy wrote: > On 29/10/17 07:45, Daniel P. Berrange wrote: > > 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. > > For the message in 3/4 to show up, I need to 1) know about > --disable-git-update and 2) use it. My testcase is lot more common - I did > not use --disable-git-update, and a strange message about writing read-only > folder appears, exactly like when I started the conversation. That isn't the behaviour I get with this patch series applied. I made my source dir readonly, and then tried a VPATH build and got the expected messages ...snip.... GIT ui/keycodemapdb error: could not lock config file .git/config: Permission denied error: could not lock config file .git/config: Permission denied fatal: Failed to register url for submodule path 'ui/keycodemapdb' Unable to automatically checkout GIT submodules ' ui/keycodemapdb'. If you require use of an alternative GIT binary (for example to enable use of a transparent proxy), then please specify it by running configure by with the '--with-git' argument. e.g. $ ./configure --with-git='tsocks git' Alternatively you may disable automatic GIT submodule checkout with: $ ./configure --disable-git-update' and then manually update submodules prior to running make, with: $ scripts/git-sbumodule.sh update ui/keycodemapdb make: *** [Makefile:40: git-submodule-update] Error 1 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 :| ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Qemu-devel] [PATCH v2 1/4] build: allow setting a custom GIT binary for transparent proxying 2017-10-29 7:57 ` Daniel P. Berrange @ 2017-10-29 14:08 ` Alexey Kardashevskiy 2017-10-29 16:29 ` Daniel P. Berrange 0 siblings, 1 reply; 20+ messages in thread From: Alexey Kardashevskiy @ 2017-10-29 14:08 UTC (permalink / raw) To: Daniel P. Berrange; +Cc: qemu-devel, Philippe Mathieu-Daudé, Peter Maydell On 29/10/17 18:57, Daniel P. Berrange wrote: > On Sun, Oct 29, 2017 at 12:47:07PM +1100, Alexey Kardashevskiy wrote: >> On 29/10/17 07:45, Daniel P. Berrange wrote: >>> 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. >> >> For the message in 3/4 to show up, I need to 1) know about >> --disable-git-update and 2) use it. My testcase is lot more common - I did >> not use --disable-git-update, and a strange message about writing read-only >> folder appears, exactly like when I started the conversation. > > That isn't the behaviour I get with this patch series applied. I made my > source dir readonly, and then tried a VPATH build and got the expected > messages I run ./scripts/git-submodule.sh on a server (where source directory is writeable), them "rm .git-submodule-status", then run "Makefile" on a build machine (which has the source directory mounted as read-only). I basically recreate the situation where I was when I just discovered this brand new ./scripts/git-submodule.sh. > > ...snip.... > GIT ui/keycodemapdb > error: could not lock config file .git/config: Permission denied > error: could not lock config file .git/config: Permission denied > fatal: Failed to register url for submodule path 'ui/keycodemapdb' I added "set -x" to the script and this is what I got: make: Entering directory '/home/aik/pbuild/qemu-fstn1-ppc64' + substat=.git-submodule-status + command=status + shift + maybe_modules=ui/keycodemapdb dtc + test -z git + test -z ui/keycodemapdb dtc + modules= + git submodule status ui/keycodemapdb + test 0 -eq 0 + modules= ui/keycodemapdb + git submodule status dtc + test 0 -eq 0 + modules= ui/keycodemapdb dtc + test -e .git + test -f .git-submodule-status + exit 1 GIT ui/keycodemapdb dtc + substat=.git-submodule-status + command=update + shift + maybe_modules=ui/keycodemapdb dtc + test -z git + test -z ui/keycodemapdb dtc + modules= + git submodule status ui/keycodemapdb + test 0 -eq 0 + modules= ui/keycodemapdb + git submodule status dtc + test 0 -eq 0 + modules= ui/keycodemapdb dtc + test -e .git + git submodule update --init ui/keycodemapdb dtc + test 0 -ne 0 ./scripts/git-submodule.sh: 74: ./scripts/git-submodule.sh: cannot create .git-submodule-status: Read-only file system + git submodule status ui/keycodemapdb dtc + test 2 -ne 0 + error failed to save git submodule status + printf ./scripts/git-submodule.sh: %s\n failed to save git submodule status ./scripts/git-submodule.sh: failed to save git submodule status + exit 1 Makefile:40: recipe for target 'git-submodule-update' failed make: *** [git-submodule-update] Error 1 make: *** Waiting for unfinished jobs.... make: Leaving directory '/home/aik/pbuild/qemu-fstn1-ppc64' "git submodule update" does not fail, why would it - the submodules are up to date. > > Unable to automatically checkout GIT submodules ' ui/keycodemapdb'. > If you require use of an alternative GIT binary (for example to > enable use of a transparent proxy), then please specify it by > running configure by with the '--with-git' argument. e.g. > > $ ./configure --with-git='tsocks git' > > Alternatively you may disable automatic GIT submodule checkout > with: > > $ ./configure --disable-git-update' > > and then manually update submodules prior to running make, with: > > $ scripts/git-sbumodule.sh update ui/keycodemapdb I know that now, all I am asking is an error message to print exact command to run... > > make: *** [Makefile:40: git-submodule-update] Error 1 > > Regards, > Daniel > -- Alexey ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Qemu-devel] [PATCH v2 1/4] build: allow setting a custom GIT binary for transparent proxying 2017-10-29 14:08 ` Alexey Kardashevskiy @ 2017-10-29 16:29 ` Daniel P. Berrange 2017-10-29 23:49 ` Alexey Kardashevskiy 0 siblings, 1 reply; 20+ messages in thread From: Daniel P. Berrange @ 2017-10-29 16:29 UTC (permalink / raw) To: Alexey Kardashevskiy Cc: qemu-devel, Philippe Mathieu-Daudé, Peter Maydell On Mon, Oct 30, 2017 at 01:08:56AM +1100, Alexey Kardashevskiy wrote: > > I run ./scripts/git-submodule.sh on a server (where source directory is > writeable), them "rm .git-submodule-status", then run "Makefile" on a build > machine (which has the source directory mounted as read-only). I basically > recreate the situation where I was when I just discovered this brand new > ./scripts/git-submodule.sh. Don't rm the .git-submodule-status. That means 'make' thinks the modules are out of date. Just run 'scripts/git-submodules.sh ...mods..' on the writable source dir, and then run 'make' on the build machine. > I know that now, all I am asking is an error message to print exact command > to run... If you hadn't deleted the .git-submodule-status, it would have worked fine. 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 :| ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Qemu-devel] [PATCH v2 1/4] build: allow setting a custom GIT binary for transparent proxying 2017-10-29 16:29 ` Daniel P. Berrange @ 2017-10-29 23:49 ` Alexey Kardashevskiy 2017-10-30 7:52 ` Daniel P. Berrange 0 siblings, 1 reply; 20+ messages in thread From: Alexey Kardashevskiy @ 2017-10-29 23:49 UTC (permalink / raw) To: Daniel P. Berrange; +Cc: qemu-devel, Philippe Mathieu-Daudé, Peter Maydell On 30/10/17 03:29, Daniel P. Berrange wrote: > On Mon, Oct 30, 2017 at 01:08:56AM +1100, Alexey Kardashevskiy wrote: >> >> I run ./scripts/git-submodule.sh on a server (where source directory is >> writeable), them "rm .git-submodule-status", then run "Makefile" on a build >> machine (which has the source directory mounted as read-only). I basically >> recreate the situation where I was when I just discovered this brand new >> ./scripts/git-submodule.sh. > > Don't rm the .git-submodule-status. That means 'make' thinks the modules > are out of date. > > Just run 'scripts/git-submodules.sh ...mods..' on the writable source > dir, and then run 'make' on the build machine. > >> I know that now, all I am asking is an error message to print exact command >> to run... > > If you hadn't deleted the .git-submodule-status, it would have worked fine. No. I do this on a server: [vpl1 qemu]$ git co v2.10.0 At this point no .git-submodule-status is expected/required/exist. [vpl1 qemu]$ ssh aikhostos2 make -C /home/aik/pbuild/qemu-aikhostos2-ppc64/ -j24 Configure succeeds, compiles just fine, it has been working like this for years. Now: [vpl1 qemu]$ git co git-submodule (this is your stuff) [vpl1 qemu]$ ssh aikhostos2 make -C /home/aik/pbuild/qemu-aikhostos2-ppc64/ -j24 touch: cannot touch ‘.git-submodule-status’: Read-only file system make: Entering directory `/home/aik/pbuild/qemu-aikhostos2-ppc64' GEN ppc64-softmmu/config-devices.mak.tmp [...] ./scripts/git-submodule.sh: line 74: .git-submodule-status: Read-only file system ./scripts/git-submodule.sh: failed to save git submodule status make: *** [git-submodule-update] Error 1 What, why? Out of nowhere we write to read-only folder and we do not even bother telling why. Am I the only one who would be confused by this change? I only delete that file because I am testing the real situation which I saw. Looks like nobody else is really testing this :( -- Alexey ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Qemu-devel] [PATCH v2 1/4] build: allow setting a custom GIT binary for transparent proxying 2017-10-29 23:49 ` Alexey Kardashevskiy @ 2017-10-30 7:52 ` Daniel P. Berrange 2017-10-31 3:30 ` Alexey Kardashevskiy 0 siblings, 1 reply; 20+ messages in thread From: Daniel P. Berrange @ 2017-10-30 7:52 UTC (permalink / raw) To: Alexey Kardashevskiy Cc: qemu-devel, Philippe Mathieu-Daudé, Peter Maydell On Mon, Oct 30, 2017 at 10:49:01AM +1100, Alexey Kardashevskiy wrote: > On 30/10/17 03:29, Daniel P. Berrange wrote: > > On Mon, Oct 30, 2017 at 01:08:56AM +1100, Alexey Kardashevskiy wrote: > >> > >> I run ./scripts/git-submodule.sh on a server (where source directory is > >> writeable), them "rm .git-submodule-status", then run "Makefile" on a build > >> machine (which has the source directory mounted as read-only). I basically > >> recreate the situation where I was when I just discovered this brand new > >> ./scripts/git-submodule.sh. > > > > Don't rm the .git-submodule-status. That means 'make' thinks the modules > > are out of date. > > > > Just run 'scripts/git-submodules.sh ...mods..' on the writable source > > dir, and then run 'make' on the build machine. > > > >> I know that now, all I am asking is an error message to print exact command > >> to run... > > > > If you hadn't deleted the .git-submodule-status, it would have worked fine. > > No. > > I do this on a server: > > [vpl1 qemu]$ git co v2.10.0 > At this point no .git-submodule-status is expected/required/exist. > > [vpl1 qemu]$ ssh aikhostos2 make -C /home/aik/pbuild/qemu-aikhostos2-ppc64/ > -j24 > > Configure succeeds, compiles just fine, it has been working like this for > years. > > > Now: > > [vpl1 qemu]$ git co git-submodule (this is your stuff) > [vpl1 qemu]$ ssh aikhostos2 make -C /home/aik/pbuild/qemu-aikhostos2-ppc64/ > -j24 > touch: cannot touch ‘.git-submodule-status’: Read-only file system > make: Entering directory `/home/aik/pbuild/qemu-aikhostos2-ppc64' > GEN ppc64-softmmu/config-devices.mak.tmp > [...] > > ./scripts/git-submodule.sh: line 74: .git-submodule-status: Read-only file > system > ./scripts/git-submodule.sh: failed to save git submodule status > make: *** [git-submodule-update] Error 1 Oh I see, the git submodules list is empty because you have a previous built source tree, so its shortcircuiting the extra check I added. Tihs is easy enough to address 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 :| ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Qemu-devel] [PATCH v2 1/4] build: allow setting a custom GIT binary for transparent proxying 2017-10-30 7:52 ` Daniel P. Berrange @ 2017-10-31 3:30 ` Alexey Kardashevskiy 0 siblings, 0 replies; 20+ messages in thread From: Alexey Kardashevskiy @ 2017-10-31 3:30 UTC (permalink / raw) To: Daniel P. Berrange; +Cc: qemu-devel, Philippe Mathieu-Daudé, Peter Maydell On 30/10/17 18:52, Daniel P. Berrange wrote: > On Mon, Oct 30, 2017 at 10:49:01AM +1100, Alexey Kardashevskiy wrote: >> On 30/10/17 03:29, Daniel P. Berrange wrote: >>> On Mon, Oct 30, 2017 at 01:08:56AM +1100, Alexey Kardashevskiy wrote: >>>> >>>> I run ./scripts/git-submodule.sh on a server (where source directory is >>>> writeable), them "rm .git-submodule-status", then run "Makefile" on a build >>>> machine (which has the source directory mounted as read-only). I basically >>>> recreate the situation where I was when I just discovered this brand new >>>> ./scripts/git-submodule.sh. >>> >>> Don't rm the .git-submodule-status. That means 'make' thinks the modules >>> are out of date. >>> >>> Just run 'scripts/git-submodules.sh ...mods..' on the writable source >>> dir, and then run 'make' on the build machine. >>> >>>> I know that now, all I am asking is an error message to print exact command >>>> to run... >>> >>> If you hadn't deleted the .git-submodule-status, it would have worked fine. >> >> No. >> >> I do this on a server: >> >> [vpl1 qemu]$ git co v2.10.0 >> At this point no .git-submodule-status is expected/required/exist. >> >> [vpl1 qemu]$ ssh aikhostos2 make -C /home/aik/pbuild/qemu-aikhostos2-ppc64/ >> -j24 >> >> Configure succeeds, compiles just fine, it has been working like this for >> years. >> >> >> Now: >> >> [vpl1 qemu]$ git co git-submodule (this is your stuff) >> [vpl1 qemu]$ ssh aikhostos2 make -C /home/aik/pbuild/qemu-aikhostos2-ppc64/ >> -j24 >> touch: cannot touch ‘.git-submodule-status’: Read-only file system >> make: Entering directory `/home/aik/pbuild/qemu-aikhostos2-ppc64' >> GEN ppc64-softmmu/config-devices.mak.tmp >> [...] >> >> ./scripts/git-submodule.sh: line 74: .git-submodule-status: Read-only file >> system >> ./scripts/git-submodule.sh: failed to save git submodule status >> make: *** [git-submodule-update] Error 1 > > Oh I see, the git submodules list is empty because you have a previous > built source tree, so its shortcircuiting the extra check I added. Tihs > is easy enough to address btw why is the name "git-submodule.sh", not update-submodule.sh or update-git-submodule.sh on a par with update-linux-headers.sh? -- Alexey ^ permalink raw reply [flat|nested] 20+ messages in thread
* [Qemu-devel] [PATCH v2 2/4] build: don't create temporary files in source dir 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-27 13:14 ` Daniel P. Berrange 2017-10-28 5:25 ` Eric Blake 2017-10-27 13:14 ` [Qemu-devel] [PATCH v2 3/4] build: allow automatic git submodule updates to be disabled Daniel P. Berrange ` (2 subsequent siblings) 4 siblings, 1 reply; 20+ messages in thread From: Daniel P. Berrange @ 2017-10-27 13:14 UTC (permalink / raw) To: qemu-devel Cc: Philippe Mathieu-Daudé, Alexey Kardashevskiy, Peter Maydell, Daniel P. Berrange There are cases where users do VPATH builds with the source directory being on a read-only volume. In such a case they have to manually run the command 'git-submodule.sh ...modules...' manually ahead of time. When checking for status we should not then write into the source dir. Signed-off-by: Daniel P. Berrange <berrange@redhat.com> --- scripts/git-submodule.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/git-submodule.sh b/scripts/git-submodule.sh index c66567d409..586ff32293 100755 --- a/scripts/git-submodule.sh +++ b/scripts/git-submodule.sh @@ -31,10 +31,10 @@ fi case "$command" in status) test -f "$substat" || exit 1 - trap "rm -f ${substat}.tmp" EXIT - $GIT submodule status $modules > "${substat}.tmp" - test $? -ne 0 && error "failed to query git submodule status" - diff "${substat}" "${substat}.tmp" >/dev/null + substat_tmp=$(mktemp) + trap "rm -f ${substat_tmp}" EXIT + $GIT submodule status $modules > "${substat_tmp}" + diff "${substat}" "${substat_tmp}" >/dev/null exit $? ;; update) -- 2.13.6 ^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [Qemu-devel] [PATCH v2 2/4] build: don't create temporary files in source dir 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 0 siblings, 1 reply; 20+ messages in thread From: Eric Blake @ 2017-10-28 5:25 UTC (permalink / raw) To: Daniel P. Berrange, qemu-devel Cc: Alexey Kardashevskiy, Peter Maydell, Philippe Mathieu-Daudé [-- Attachment #1: Type: text/plain, Size: 1311 bytes --] On 10/27/2017 03:14 PM, Daniel P. Berrange wrote: > There are cases where users do VPATH builds with the source directory being on > a read-only volume. In such a case they have to manually run the command > 'git-submodule.sh ...modules...' manually ahead of time. When checking for One of the two "manually" can be removed (either one, and the sentence still makes sense) > status we should not then write into the source dir. > > Signed-off-by: Daniel P. Berrange <berrange@redhat.com> > --- > scripts/git-submodule.sh | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/scripts/git-submodule.sh b/scripts/git-submodule.sh > index c66567d409..586ff32293 100755 > --- a/scripts/git-submodule.sh > +++ b/scripts/git-submodule.sh > @@ -31,10 +31,10 @@ fi > case "$command" in > status) > test -f "$substat" || exit 1 > - trap "rm -f ${substat}.tmp" EXIT > - $GIT submodule status $modules > "${substat}.tmp" > - test $? -ne 0 && error "failed to query git submodule status" > - diff "${substat}" "${substat}.tmp" >/dev/null > + substat_tmp=$(mktemp) Is mktemp portable enough? Hopefully so. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 619 bytes --] ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Qemu-devel] [PATCH v2 2/4] build: don't create temporary files in source dir 2017-10-28 5:25 ` Eric Blake @ 2017-10-28 6:37 ` Alexey Kardashevskiy 0 siblings, 0 replies; 20+ messages in thread From: Alexey Kardashevskiy @ 2017-10-28 6:37 UTC (permalink / raw) To: Eric Blake, Daniel P. Berrange, qemu-devel Cc: Peter Maydell, Philippe Mathieu-Daudé [-- Attachment #1: Type: text/plain, Size: 1336 bytes --] On 28/10/17 16:25, Eric Blake wrote: > On 10/27/2017 03:14 PM, Daniel P. Berrange wrote: >> There are cases where users do VPATH builds with the source directory being on >> a read-only volume. In such a case they have to manually run the command >> 'git-submodule.sh ...modules...' manually ahead of time. When checking for > > One of the two "manually" can be removed (either one, and the sentence > still makes sense) > >> status we should not then write into the source dir. >> >> Signed-off-by: Daniel P. Berrange <berrange@redhat.com> >> --- >> scripts/git-submodule.sh | 8 ++++---- >> 1 file changed, 4 insertions(+), 4 deletions(-) >> >> diff --git a/scripts/git-submodule.sh b/scripts/git-submodule.sh >> index c66567d409..586ff32293 100755 >> --- a/scripts/git-submodule.sh >> +++ b/scripts/git-submodule.sh >> @@ -31,10 +31,10 @@ fi >> case "$command" in >> status) >> test -f "$substat" || exit 1 >> - trap "rm -f ${substat}.tmp" EXIT >> - $GIT submodule status $modules > "${substat}.tmp" >> - test $? -ne 0 && error "failed to query git submodule status" >> - diff "${substat}" "${substat}.tmp" >/dev/null >> + substat_tmp=$(mktemp) > > Is mktemp portable enough? Hopefully so. It could also be some fixed file name in the build directory. -- Alexey [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 854 bytes --] ^ permalink raw reply [flat|nested] 20+ messages in thread
* [Qemu-devel] [PATCH v2 3/4] build: allow automatic git submodule updates to be disabled 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-27 13:14 ` [Qemu-devel] [PATCH v2 2/4] build: don't create temporary files in source dir Daniel P. Berrange @ 2017-10-27 13:14 ` 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 5:34 ` [Qemu-devel] [PATCH v2 0/4] Various improvements to submodule handling Eric Blake 4 siblings, 1 reply; 20+ messages in thread From: Daniel P. Berrange @ 2017-10-27 13:14 UTC (permalink / raw) To: qemu-devel Cc: Philippe Mathieu-Daudé, Alexey Kardashevskiy, Peter Maydell, Daniel P. Berrange Some people building QEMU use VPATH builds where the source directory is on a read-only volume. In such a case 'scripts/git-submodules.sh update' will always fail and users are required to run it manually themselves on their original writable source directory. While this is already supported, it is nice to give users a command line flag to configure to permanently disable automatic submodule updates, as it means they won't get hard to diagnose failures from git-submodules.sh at an arbitrary later date. This patch thus introduces a flag '--disable-git-update' which will prevent 'make' from ever running 'scripts/git-submodules.sh update'. It will still run the 'status' command to determine if a submodule update is needed, but when it does this it'll simply stop and print a message instructing the developer what todo. eg $ ./configure --target-list=x86_64-softmmu --disable-git-update ...snip... $ make GEN config-host.h GEN trace/generated-tcg-tracers.h GEN trace/generated-helpers-wrappers.h GEN trace/generated-helpers.h GEN trace/generated-helpers.c GEN module_block.h GIT submodule checkout is out of date. Please run scripts/git-submodule.sh update ui/keycodemapdb from the source directory checkout /home/berrange/src/virt/qemu make: *** [Makefile:31: git-submodule-update] Error 1 Signed-off-by: Daniel P. Berrange <berrange@redhat.com> --- Makefile | 11 +++++++++++ configure | 9 ++++++++- scripts/git-submodule.sh | 9 +++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 4c9d0eaef2..cefb75dc8d 100644 --- a/Makefile +++ b/Makefile @@ -26,12 +26,23 @@ ifeq (0,$(MAKELEVEL)) ) ifeq (1,$(git_module_status)) +ifeq (no,$(GIT_UPDATE)) +git-submodule-update: + $(call quiet-command, \ + echo && \ + echo "GIT submodule checkout is out of date. Please run" && \ + echo " scripts/git-submodule.sh update $(GIT_SUBMODULES)" && \ + echo "from the source directory checkout $(SRC_PATH)" && \ + echo && \ + exit 1) +else git-submodule-update: $(call quiet-command, \ (cd $(SRC_PATH) && GIT="$(GIT)" ./scripts/git-submodule.sh update $(GIT_SUBMODULES)), \ "GIT","$(GIT_SUBMODULES)") endif endif +endif .git-submodule-status: git-submodule-update config-host.mak diff --git a/configure b/configure index 65765968f3..8a569e1770 100755 --- a/configure +++ b/configure @@ -267,8 +267,10 @@ stack_protector="" if test -e "$source_path/.git" then + git_update=yes git_submodules="ui/keycodemapdb" else + git_update=no git_submodules="" fi git="git" @@ -1297,11 +1299,15 @@ for opt do ;; --with-git=*) git="$optarg" ;; + --enable-git-update) git_update=yes + ;; + --disable-git-update) git_update=no + ;; *) echo "ERROR: unknown option $opt" echo "Try '$0 --help' for more information" exit 1 - ;; + ;; esac done @@ -5534,6 +5540,7 @@ 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 "GIT_UPDATE=$git_update" >> $config_host_mak echo "ARCH=$ARCH" >> $config_host_mak diff --git a/scripts/git-submodule.sh b/scripts/git-submodule.sh index 586ff32293..30fd83db55 100755 --- a/scripts/git-submodule.sh +++ b/scripts/git-submodule.sh @@ -48,6 +48,15 @@ update) 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-sbumodule.sh update $modules" + echo exit 1 fi $GIT submodule status $modules > "${substat}" -- 2.13.6 ^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [Qemu-devel] [PATCH v2 3/4] build: allow automatic git submodule updates to be disabled 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 0 siblings, 0 replies; 20+ messages in thread From: Eric Blake @ 2017-10-28 5:28 UTC (permalink / raw) To: Daniel P. Berrange, qemu-devel Cc: Alexey Kardashevskiy, Peter Maydell, Philippe Mathieu-Daudé [-- Attachment #1: Type: text/plain, Size: 877 bytes --] On 10/27/2017 03:14 PM, Daniel P. Berrange wrote: > Some people building QEMU use VPATH builds where the source directory is on a > read-only volume. In such a case 'scripts/git-submodules.sh update' will always > fail and users are required to run it manually themselves on their original > writable source directory. > > @@ -1297,11 +1299,15 @@ for opt do > ;; > --with-git=*) git="$optarg" > ;; > + --enable-git-update) git_update=yes > + ;; > + --disable-git-update) git_update=no > + ;; Consistent, which makes... > *) > echo "ERROR: unknown option $opt" > echo "Try '$0 --help' for more information" > exit 1 > - ;; > + ;; ...this an unrelated whitespace change? -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 619 bytes --] ^ permalink raw reply [flat|nested] 20+ messages in thread
* [Qemu-devel] [PATCH v2 4/4] build: don't fail if given a git submodule which does not exist 2017-10-27 13:14 [Qemu-devel] [PATCH v2 0/4] Various improvements to submodule handling Daniel P. Berrange ` (2 preceding siblings ...) 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-27 13:14 ` Daniel P. Berrange 2017-10-28 1:27 ` Alexey Kardashevskiy 2017-10-28 5:34 ` [Qemu-devel] [PATCH v2 0/4] Various improvements to submodule handling Eric Blake 4 siblings, 1 reply; 20+ messages in thread From: Daniel P. Berrange @ 2017-10-27 13:14 UTC (permalink / raw) To: qemu-devel Cc: Philippe Mathieu-Daudé, Alexey Kardashevskiy, Peter Maydell, Daniel P. Berrange If going back in time in git history, across a commit that introduces a new submodule, the 'git-submodule.sh' script will fail, causing rebuild to fail. This is because config-host.mak contains a GIT_SUBMODULES variable that lists a submodule that only exists in the later commit. config-host.mak won't get repopulated until config.status is invoked, but make won't get this far due to the submodule error. This change makes 'git-submodule.sh' check whether each module is known to git and drops any which are not present. A warning message will be printed when any submodule is dropped in this manner. Signed-off-by: Daniel P. Berrange <berrange@redhat.com> --- scripts/git-submodule.sh | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/scripts/git-submodule.sh b/scripts/git-submodule.sh index 30fd83db55..60b3b9bdeb 100755 --- a/scripts/git-submodule.sh +++ b/scripts/git-submodule.sh @@ -7,7 +7,7 @@ substat=".git-submodule-status" command=$1 shift -modules="$@" +maybe_modules="$@" test -z "$GIT" && GIT=git @@ -16,12 +16,24 @@ error() { exit 1 } -if test -z "$modules" +if test -z "$maybe_modules" then test -e $substat || touch $substat exit 0 fi +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-existant submodule $m" + fi +done + if ! test -e ".git" then echo "$0: unexpectedly called with submodules but no git checkout exists" -- 2.13.6 ^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [Qemu-devel] [PATCH v2 4/4] build: don't fail if given a git submodule which does not exist 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 0 siblings, 1 reply; 20+ messages in thread From: Alexey Kardashevskiy @ 2017-10-28 1:27 UTC (permalink / raw) To: Daniel P. Berrange, qemu-devel; +Cc: Philippe Mathieu-Daudé, Peter Maydell On 28/10/17 00:14, Daniel P. Berrange wrote: > If going back in time in git history, across a commit that introduces a new > submodule, the 'git-submodule.sh' script will fail, causing rebuild to fail. > > This is because config-host.mak contains a GIT_SUBMODULES variable that lists > a submodule that only exists in the later commit. config-host.mak won't get > repopulated until config.status is invoked, but make won't get this far due to > the submodule error. > > This change makes 'git-submodule.sh' check whether each module is known to git > and drops any which are not present. A warning message will be printed when any > submodule is dropped in this manner. > > Signed-off-by: Daniel P. Berrange <berrange@redhat.com> > --- > scripts/git-submodule.sh | 16 ++++++++++++++-- > 1 file changed, 14 insertions(+), 2 deletions(-) > > diff --git a/scripts/git-submodule.sh b/scripts/git-submodule.sh > index 30fd83db55..60b3b9bdeb 100755 > --- a/scripts/git-submodule.sh > +++ b/scripts/git-submodule.sh > @@ -7,7 +7,7 @@ substat=".git-submodule-status" > > command=$1 > shift > -modules="$@" > +maybe_modules="$@" > > test -z "$GIT" && GIT=git > > @@ -16,12 +16,24 @@ error() { > exit 1 > } > > -if test -z "$modules" > +if test -z "$maybe_modules" > then > test -e $substat || touch $substat > exit 0 > fi > > +modules="" > +for m in $maybe_modules > +do > + $GIT submodule status $m 1> /dev/null 2>&1 > + if test $? == 0 ./scripts/git-submodule.sh: 29: test: 0: unexpected operator This helps: - if test $? == 0 + if test "$?" -eq "0" > + then > + modules="$modules $m" > + else > + echo "warn: ignoring non-existant submodule $m" > + fi > +done > + > if ! test -e ".git" > then > echo "$0: unexpectedly called with submodules but no git checkout exists" > -- Alexey ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Qemu-devel] [PATCH v2 4/4] build: don't fail if given a git submodule which does not exist 2017-10-28 1:27 ` Alexey Kardashevskiy @ 2017-10-28 5:58 ` Eric Blake 0 siblings, 0 replies; 20+ messages in thread From: Eric Blake @ 2017-10-28 5:58 UTC (permalink / raw) To: Alexey Kardashevskiy, Daniel P. Berrange, qemu-devel Cc: Peter Maydell, Philippe Mathieu-Daudé [-- Attachment #1: Type: text/plain, Size: 689 bytes --] On 10/28/2017 03:27 AM, Alexey Kardashevskiy wrote: > On 28/10/17 00:14, Daniel P. Berrange wrote: >> If going back in time in git history, across a commit that introduces a new >> submodule, the 'git-submodule.sh' script will fail, causing rebuild to fail. >> >> +do >> + $GIT submodule status $m 1> /dev/null 2>&1 >> + if test $? == 0 > > > ./scripts/git-submodule.sh: 29: test: 0: unexpected operator Ah, right, == is a bashism. > > This helps: > > - if test $? == 0 > + if test "$?" -eq "0" Or 'if test $? = 0' -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 619 bytes --] ^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [Qemu-devel] [PATCH v2 0/4] Various improvements to submodule handling 2017-10-27 13:14 [Qemu-devel] [PATCH v2 0/4] Various improvements to submodule handling Daniel P. Berrange ` (3 preceding siblings ...) 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 5:34 ` Eric Blake 4 siblings, 0 replies; 20+ messages in thread From: Eric Blake @ 2017-10-28 5:34 UTC (permalink / raw) To: Daniel P. Berrange, qemu-devel Cc: Alexey Kardashevskiy, Peter Maydell, Philippe Mathieu-Daudé [-- Attachment #1: Type: text/plain, Size: 1126 bytes --] On 10/27/2017 03:14 PM, Daniel P. Berrange wrote: > I've sent a variety of improvements to submodule handling as separate patches > and its getting slightly confusing. So here is a series with all patches added > together. I've also included a fix that helps us go backwards in time across > the introduction of a submodule. > > Daniel P. Berrange (4): > build: allow setting a custom GIT binary for transparent proxying > build: don't create temporary files in source dir > build: allow automatic git submodule updates to be disabled > build: don't fail if given a git submodule which does not exist I have some minor comments on a couple of individual patches, but for the series: Reviewed-by: Eric Blake <eblake@redhat.com> > > Makefile | 15 ++++++++++-- > configure | 14 +++++++++++- > scripts/git-submodule.sh | 59 ++++++++++++++++++++++++++++++++++++++++-------- > 3 files changed, 76 insertions(+), 12 deletions(-) > -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org [-- Attachment #2: OpenPGP digital signature --] [-- Type: application/pgp-signature, Size: 619 bytes --] ^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2017-10-31 3:30 UTC | newest] Thread overview: 20+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 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 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
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.