* [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
* [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
* [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
* [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 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 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 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
* 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
* 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 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
* 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
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.