build: allow automatic git submodule updates to be disabled
PATCH 1/1 build: allow automatic git submodule updates to be disabled
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
--- Makefile | 11 +++++++++++ configure | 9 ++++++++- 2 files changed, 19 insertions(+), 1 deletion(-)
Makefile +11 -0
@@ -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
configure +8 -1
@@ -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
Signature · 1 line
2.13.6
Quoted 27 lines · 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.shupdate' 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.shat an arbitrary later date.This patch thus introduces a flag '--disable-git-update' which will prevent 'make' from ever running '
scripts/git-submodules.shupdate'. 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
Quoted 3 lines
GIT submodule checkout is out of date. Please run
scripts/git-submodule.shupdate ui/keycodemapdb
from the source directory checkout/home/berrange/src/virt/qemu
Clean :)
Quoted 4 lines
make: *** [Makefile:31: git-submodule-update] Error 1
Signed-off-by Daniel P. Berrange <[email protected]>
Quoted 74 lines
--- Makefile | 11 +++++++++++ configure | 9 ++++++++- 2 files changed, 19 insertions(+), 1 deletion(-)Makefile +11
-0@@ -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.makconfigure +8
-1@@ -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
Quoted 32 lines · Philippe Mathieu-Daudé
Quoted 27 lines · 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.shupdate' 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.shat an arbitrary later date.This patch thus introduces a flag '--disable-git-update' which will prevent 'make' from ever running '
scripts/git-submodules.shupdate'. 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.hQuoted 3 lines
GIT submodule checkout is out of date. Please run
scripts/git-submodule.shupdate ui/keycodemapdb
from the source directory checkout/home/berrange/src/virt/qemu
Quoted 8 lines
Clean :)
Quoted 4 lines
make: *** [Makefile:31: git-submodule-update] Error 1
Signed-off-by Daniel P. Berrange <[email protected]>Reviewed-by Philippe Mathieu-Daudé <[email protected]>
What tree did you apply on top of? Does not apply for me :-/
Signature · 1 line
Alexey
Quoted 36 lines · Alexey Kardashevskiy
Quoted 35 lines · Philippe Mathieu-Daudé
Quoted 27 lines · 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.shupdate' 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.shat an arbitrary later date.This patch thus introduces a flag '--disable-git-update' which will prevent 'make' from ever running '
scripts/git-submodules.shupdate'. 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.hQuoted 3 lines
GIT submodule checkout is out of date. Please run
scripts/git-submodule.shupdate ui/keycodemapdb
from the source directory checkout/home/berrange/src/virt/qemuClean :)
Quoted 1 line
Quoted 8 lines
Quoted 5 lines
Quoted 3 lines
make: *** [Makefile:31: git-submodule-update] Error 1
Signed-off-by Daniel P. Berrange <[email protected]>Reviewed-by Philippe Mathieu-Daudé <[email protected]>What tree did you apply on top of? Does not apply for me :-/
Oh sorry, I forgot that it was on-top of my previously sent patch:
https://lists.gnu.org/archive/html/qemu-devel/2017-10/msg05054.html
Regards,
Daniel
Signature · 3 lines
|: 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 :|
Quoted 44 lines · 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.shupdate' 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.shat an arbitrary later date.This patch thus introduces a flag '--disable-git-update' which will prevent 'make' from ever running '
scripts/git-submodules.shupdate'. 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.hGIT submodule checkout is out of date. Please run
scripts/git-submodule.shupdate ui/keycodemapdb
from the source directory checkout/home/berrange/src/virt/qemumake: *** [Makefile:31: git-submodule-update] Error 1
Signed-off-by Daniel P. Berrange <[email protected]>--- Makefile | 11 +++++++++++ configure | 9 ++++++++- 2 files changed, 19 insertions(+), 1 deletion(-)Makefile +0
-0
Makefile ifeq (0,$(MAKELEVEL)) · line 35
Quoted 10 lines
Makefile +7
-0@@ -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)" && \
I'd love to see this warning when $GIT_UPDATE!=no too. Now it is:
GIT ui/keycodemapdb dtc./scripts/git-submodule.sh: 36: ./scripts/git-submodule.sh: cannot create .git-submodule-status: Read-only file system
Makefile:40: recipe for target 'git-submodule-update' failed
Other than that, looks nice, thanks for fixing it.
Signature · 1 line
Alexey